Skip to content

Release Notes - v0.5.0

Title: Align compatibility checks and expand Plutus language support

Date: August 27, 2026

Version: v0.5.0

This release aligns builtin availability with the Plutus ledger language and Cardano protocol, expands V4 and serialization support, strengthens program validation, and improves handling of large or bounded inputs.

  • Clarified builtin availability: Plutigo now checks each builtin operation against the chosen Plutus ledger language and Cardano protocol major version instead of treating all operations as available after the previous PV11 rule that unlocked every builtin. Availability follows protocol boundaries at Alonzo 5, Vasil 7, Valentine 8, Chang 9, Plomin 10, and Dijkstra 12. V4 batches require protocol major 12, while protocol major 0 checks language only. The execution engine and conformance checks use the same availability matrix.
  • Expanded V4 language support: Plutigo now includes authoritative V4 cost model parameter names and the multiIndexArray, policies, and assetCount builtins with stable tags 101 to 103. The V4 builtins remain unavailable until protocol activation. multiIndexArray accepts typed arrays or lists, requires nonnegative 64-bit integer indices, checks bounds, and limits each request to 1,024 indices. V4 parameter ordering no longer follows V3, so execution budgets can differ.
  • Preserved V1 and V2 consByteString behavior: Large positive and negative integer prefixes now use a floored modulo-256 reduction, matching the V1 and V2 variants. V3 and later variants C and E continue to require values from 0 through 255.
  • Validated Plutus programs with context: ProgramContext and ValidateProgram now apply ledger language and protocol context, while ParseWithContext, DecodeWithContext, and DecodeDeBruijnWithContext apply the same checks during parsing and decoding. These APIs verify supported Untyped Plutus Core (UPLC) versions 1.0.0 and 1.1.0, builtin availability, unavailable builtins in unevaluated branches, the UPLC 1.1.0 requirement for Constr and Case syntax, and the PV11 and later limit of 1,024 constructor fields. Replay decoding now uses context as well.
  • Optimized large integer decoding: The FLAT serialization format now accumulates large integers directly in native word storage with a uint64 fast path. The decoder scales linearly with bounded allocation while preserving truncation behavior.
  • Extended supported universe types: FLAT serialization now provides stable tags for BLS12-381 G1, G2, and Miller loop values, plus array and value types, and returns identical bytes after round trips. ProtoArray and Value types support parsing and formatting; the execution engine preserves array and value identity, validates canonical Value entries, and the decoder rejects unsupported standalone BLS payloads. Machine.RunContext(ctx, term) provides synchronous cancellation, valueData accepts at most 40,000 entries, and the decoder enforces a 64-byte limit on CBOR encoded bytestring leaves or chunks by returning DecodeLimitError for violations.

Integrations using context-aware parsing or bounded input handling should update their error paths for the new validation and limit checks.

Thank you for using Plutigo.



Doc Holiday logo

Docs authored by Doc Holiday

Edit page

Last updated: