Release Notes - v0.8.1
v0.8.1
Section titled “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.
Performance
Section titled “Performance”-
Added a deterministic CEK discharge work budget of
maxDischargeWork = 1,000,000for each result and shared it with constant materialization. When a result exceeds the budget or expands exponentially, Plutigo returnsErrCodeBudgetExhaustedwithresult term too large to discharge. -
Aligned Plutus V4 Value builtin cost metrics with the reference model:
insertCoinandlookupCoinuseValueMaxDepth, whilescaleValueandunionValueuseValueTotalSize. 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
equalsDataallocations 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.
Validation and Encoding
Section titled “Validation and Encoding”- 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.
Docs authored by Doc Holiday