Skip to main content

11 posts tagged with "plutus-core"

View All Tags

· 2 min read
Ziyang Liu

High level summary

We’ve completed the implementation of CIP-0153, introducing the Value built-in type and its associated functions. Our current focus is on finalizing the costing for these built-ins. Once this is complete, Plutus will be ready for the intra-era hard fork. All other features scheduled for the hard fork are already finished.

We’ve improved the Flat decoding of built-in lists, which has noticeably sped up Plutus script deserialization. In our benchmarks, some scripts' deserialization now runs with double-digit performance gains.

We’ve updated the Plutus Core specification and the Agda formalization to include the multi-scalar multiplication primitives (CIP-0133). Additional property and conformance tests have also been added for these primitives.

The team is also gearing up for UPLC 2025, a UPLC event scheduled to take place in approximately three weeks.

Low level summary

Key Pull Requests Merged

Issues and Pull Requests In Progress

  • Built-in Value: costing (in plutus-private)

· One min read
Ziyang Liu

High level summary

  • We are in the process of implementing CIP-0153: the Value built-in type, and built-in functions operating on Values. The implementation is expected to finish in the coming weeks. These primitives 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 third scenario, two party escrow, has been added to the benchmark.

  • We have merged the implementation of the multi-scalar multiplication primitives (CIP-0133). They will be enabled at the upcoming intra-era hard fork.

  • We continued investigating more efficient ways of case analysis on Data in UPLC.

Low level summary

Key Pull Requests Merged

Issues and Pull Requests In Progress

  • Add deleteCoin, lookupCoin, valueContains
  • Built-in Value: conformance testing (in plutus-private)
  • Built-in Value: costing (in plutus-private)
  • MSM primitives: conformance testing (in plutus-private)
  • MSM primitives: property-based testing (in plutus-private)

· 2 min read
Ziyang Liu

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

Issues and Pull Requests In Progress

· 2 min read
Ziyang Liu

High level summary

Plutus Core

  • Following the support for case analysis on booleans, integers and lists, we are now working on supporting case analysis for unit, pairs, and Data.

  • The required changes to enable all built-in functions, as well as sums-of-products, in all Plutus ledger languages (Plutus V1, V2 and V3) have been implemented in preparation for the upcoming intra-era hard fork.

  • We started developing a surface language benchmark for UPLC, aimed to compare the performances of different surface languages targeting UPLC. We have introduced the first scenario for comparison - computing Fibonacci numbers. More scenarios will be added in the near future.

Plinth

  • The Plinth compiler now compiles Haskell Bool into UPLC's built-in boolean type, instead of sums-of-products or Scott encoded boolean. This makes many scripts smaller and faster.

  • We are planning additional performance and usability improvements, such as inlining recursive bindings, and showing line numbers in compilation errors.

Low level summary

Key Pull Requests Merged

Issues and Pull Requests In Progress

· 2 min read
Ziyang Liu

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 on Values.

  • We continue to work on adding the multi-scalar multiplization primitive.

Plinth

  • We added a utility to generate .plutus file from CompiledCode. This has the same behavior as Cardano API's writeFileTextEnvelope. 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 the profile-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

Issues and Pull Requests In Progress