Skip to content

Release Notes - v0.9.0

Title: Improve bounded processing and contextual evaluation

Version: v0.9.0

Release: v0.9.0

Comparison: v0.8.1…v0.9.0

NetworkCompatible
mainnet⛔
preprod-testnet✅
preview-testnet✅
musashi✅

This release strengthens input and output safety, adds validated evaluation with cancellation and metrics, and makes replay execution more predictable.

  • Improved FLAT decoding and text parsing with default limits of 16 MiB for input, 1,048,576 program nodes, 524,288 elements per collection, and protocol-dependent limits for constructor fields. Plutigo now rejects oversized input, node counts, and collection widths before processing. PrettyWithLimits and PrettyTermWithLimits accept configurable depth and output bounds, while Pretty and PrettyTerm use safe defaults and return an empty string when a limit fails. NameToDeBruijn now uses constant-time depth-map lookups and restores shadowed names correctly.
  • Expanded cek.EvaluateText with caller-supplied ledger language and protocol context, phase-one validation, execution-version gating, cancellation, and Machine.RunContext. Plutigo now validates EvalContext and machine cost models, rejects invalid costs, and saturates budget and cost arithmetic instead of allowing wraparound. Optional CEK metrics report steps, maximum frame depth, and per-builtin call counts and budgets. Replay loading and execution now accept context and limits, enforce corpus and case budgets before decoding, propagate cancellation, and prevent canceled cases from passing. Consumer documentation and runnable examples cover the updated APIs, usage examples reflect the new behavior, and PV11 built-in availability has conformance coverage. Breaking change: NewMachine now requires a non-nil, valid EvalContext, and replay loading and execution APIs require context and limits.

Doc Holiday logo

Docs authored by Doc Holiday

Edit page

Last updated: