High level summary
Plutus Core
Following the support for case analysis on booleans and integers, we have now also merged the support for case analysis on lists. This allows UPLC programs to destruct lists using
case
expressions instead of built-in functions, which is more efficient.Supporting case analysis on bulit-in pairs and unit is in progress.
We are working on enabling all built-in functions, as well as sums-of-products, in all Plutus ledger languages (Plutus V1, V2 and V3) at the upcoming intra-era hard fork.
We are working on adding a new built-in type representing
Value
, along with built-in functions operating onValue
s.We continue to work on adding the multi-scalar multiplization primitive.
Plinth
We added a utility to generate
.plutus
file fromCompiledCode
. This has the same behavior as Cardano API'swriteFileTextEnvelope
. It allows one to generate.plutus
conveniently without depending on Cardano API.We added a new emitter mode
logWithCallTraceEmitter
, which uses trace messages generated by theprofile-all
flag of the Plinth compiler to create call trace of the functions that led to the evaluation failure.We added more realistic scripts in
plutus-benchmark
written in Plinth, including the open oracle protocol scripts and the cardano-loans scripts, providing improved coverage for evaluating the impact of language and compiler changes.We are working on compiling Haskell's
Bool
into UPLC's built-in boolean type, instead of Scott or sums-of-products encoded boolean.
Formal Methods
- We added built-in arrays to the Plutus metatheory.
Low level summary
Key Pull Requests Merged
- Add cardano open oracle protocol scripts for plutus-benchmark
- More tests, conformance test cases for builtin integer, bool, list casing
- Add arrays to metatheory
- Add cardano-loans Smart Contract to plutus-benchmark
- Call trace for failing evaluation via new emitter mode
- Allow casing on lists
- PlutusLedgerApi.Envelope module and tests for JSON envelope generation