Skip to main content

22 posts tagged with "plutus-core"

View All Tags

Plutus Core Team Update

· 2 min read
Ziyang Liu
Software Engineering Lead

High level summary

Casing on Data has been merged: case on a Data.Constr value now dispatches directly on the constructor tag, which, combined with the recently added dropList, significantly reduces the cost of consuming Data-encoded values. This is a Plutus V4 feature, and we are also working on specifying casing on built-in types in the Plutus Core specification.

Work on the Value builtins (CIP-0168) continues: the keepPolicies and dropPolicies builtins have been added, the cost model for policies has been merged, and the cost models for keepPolicies and dropPolicies are in progress. Like the other new builtins, these are gated behind a future protocol version and cannot be used on-chain until Dijkstra.

On the Plutus V4 ScriptContext front, we are implementing a different encoding for product types using List instead of Constr, which makes them cheaper to decode. We are also improving the usability of the certifier in the uplc and plc tools.

Key Pull Requests Merged

Pull Requests In Progress

Plutus Core Team Update

· 2 min read
Ziyang Liu
Software Engineering Lead

High level summary

The Plutus team has published release 1.68.0.0, which includes the Plutus V4 ledger API types. Note that Plutus V4 remains under development, and these types may still change before Dijkstra.

Getting started with Plinth is now much easier: the new install script in plinth-template sets up a Plinth project with a single command, taking care of installing the required tooling. See the updated documentation for details.

Work on Plutus V4 language features continues. Casing on Data has been implemented: case on a Data.Constr value can now dispatch directly on the constructor tag, which, combined with the recently added dropList, yields a decent performance boost. We've also added the assetCount builtin (CIP-0168) along with its cost model, merged the cost model for multiIndexArray (CIP-0156), and continued formalizing builtins in the Agda metatheory.

We also continue to welcome feedback on CPS-0034 - Extending Plutus Core conformance testing.

Key Pull Requests Merged

Pull Requests In Progress

Plutus Core Team Update

· 2 min read
Ziyang Liu
Software Engineering Lead

High level summary

The Plutus team has recently opened two CIPs and one CPS for review. We encourage everyone to read them and leave comments - we would like as much feedback as possible.

  • CIP-0194 adds a Match node to UPLC for matching on builtin constants (primarily Data). This will make consuming script contexts in validators much cheaper than the status quo.
  • CIP-0195 specifies the Data encoding of the Plutus V4 ledger types.
  • A new CPS aims to build community consensus on how to expose our property tests, and tests for older protocol and language versions, to alternative node and UPLC evaluator implementers with minimal integration effort.

Other than these, we've merged the CollapseCase pass, which rewrites list casing into dropList whenever applicable; the uplc tool now deduces input and output formats from file extensions; and the Plutus V4 ledger API types have been released in 1.67.0.0.

Key Pull Requests Merged

Pull Requests In Progress

Plutus Core Team Update

· 3 min read
Ziyang Liu
Software Engineering Lead

High level summary

In the past weeks the Plutus team has added new built-in functions, improved Value support in the ledger API, broadened the conformance test suite, and continued working on Plutus V4 script context and Plutus V4 language features like casing on Data.

Two built-ins from recent CIPs have landed: multiIndexArray (CIP-0156), which reads several elements of an array in one call, and policies (CIP-0168), which returns the currency symbols in a Value. Both are gated behind a future protocol version and not yet costed, so they cannot be used on-chain until Dijkstra.

The conformance test suite now ships .flat files alongside the textual test cases, making it much easier to consume for implementations that do not parse the textual format. The asData pattern synonyms now use built-in list casing. The Value built-in type has been added to the metatheory as postulates, along with a fix to decEq that removed a normalization blowup consuming over 128GB of memory when checking certificates.

We've merged the Plutus V4 script context definition (though it is subject to change), and recently discussed its Data encoding during a Plutus Working Group meeting. You can find the meeting notes here. Implementers of alternative node clients, UPLC interpreters, and compilers targeting UPLC are encouraged to review the notes and contribute to the discussion.

Key Pull Requests Merged

Notable Pull Requests In Progress

Plutus Core Team Update

· 2 min read
Ziyang Liu
Software Engineering Lead

High level summary

In the past weeks, the Plutus team has continued to make improvements across performance, tooling, and assurance.

Performance and compiler improvements. We improved several parts of the Plutus optimization pipeline and ledger API implementation. This includes making common Value operations more efficient, adding a new compiler optimization for certain recursive functions, and fixing an optimization pass so that it preserves program behavior correctly.

Better benchmarking and tooling. We added lightweight benchmarking support to the uplc executable, making it easier to sanity-check execution-time measurements for UPLC scripts and compare results against existing benchmark infrastructure.

Specs and formal methods. We continued strengthening the foundations of Plutus by updating the UPLC specification for the built-in value type and related functions, and by improving the metatheory and certification infrastructure used to reason about compiler transformations. These changes make the formal-assurance workflow easier to maintain, debug, and scale to larger programs.

Key Pull Requests Merged