Plutus Core Team Update
High level summary
Plutus Core
-
We made a number of performance optimizations and refactoring for the Plutus evaluator and deserializer, including #7272, #7281, #7286, #7287, and #7296.
-
We added support for built-in units and pairs. This functionality will be enabled at the upcoming intra-era hard fork.
-
We continued developing the UPLC-CAPE benchmark, aimed to compare the performances of different surface languages targeting UPLC. A presentation on this was given in the Plutus working group meeting on September 2nd, 2025.
Plinth
-
We added a Plinth library function,
caseIntegerthat compiles to casing on integers in UPLC, a feature that will be enabled at the upcoming intra-era hard fork. -
We made the compilation fail early with a better error message when an unsupported Haskell language extension is used.
-
We added more source code location information to Plinth compiler's compilaton trace (which can be obtained using the
dump-compilation-traceflag), and the error message when the compilation fails.
Low level summary
Key Pull Requests Merged
- Fix natural number flat encoding on the spec
- Add 'CekResult' and improve 'dischargeCekValue'
- Make
FrameAwaitFunValuehandle multiple arguments at once - Throw compilation error when unsupported extension is enabled
- Add Plinth builtin for integer casing
- [OPTIMIZATION] Use specialized
ArgStack - [OPTIMIZATION] Use spine directly for constant casing
- Flat: encode UPLC arrays as lists
- Add SrcSpans of Vars in the compilation trace
- [Builtins] Add constant casing for builtin unit and pair
- [UPLC-CAPE] Define Two-Party Escrow benchmark scenario
