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,
caseInteger
that 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-trace
flag), 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
FrameAwaitFunValue
handle 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