Skip to content

Release Notes - v0.8.1

Title: Improve resource limits, cost accuracy, and validation

Version: v0.8.1

Release: v0.8.1

Comparison: v0.8.0…v0.8.1

This release makes result discharge more predictable, aligns Plutus V4 cost accounting with the reference model, reduces allocation overhead, and strengthens encoding and value validation.

  • Added a deterministic CEK discharge work budget of maxDischargeWork = 1,000,000 for each result and shared it with constant materialization. When a result exceeds the budget or expands exponentially, Plutigo returns ErrCodeBudgetExhausted with result term too large to discharge.

  • Aligned Plutus V4 Value builtin cost metrics with the reference model: insertCoin and lookupCoin use ValueMaxDepth, while scaleValue and unionValue use ValueTotalSize. This avoids incorrect budget charges that could reject valid transactions.

  • Shared immutable CEK cost and availability caches across machines, memoized builtin availability, and reused scratch builtin structures. Plutigo also reduced equalsData allocations and made replay benchmarks more portable.

  • Reduced allocations during FLAT decoding and validation with input-sized or geometric arenas, arena-backed integer magnitudes, and arena-backed composite type wrappers. Added allocation-focused tests to verify the behavior.

  • Hardened nested CBOR and JSON encoding by using shared buffers, making nested encoding linear. Concrete decoders now enforce JSON limits across the entire document. Centralized canonical Value validation now rejects invalid Value shapes consistently across codecs, parsers, and CEK builtins.

Doc Holiday logo

Docs authored by Doc Holiday

Edit page

Last updated: