Skip to content

v0.21.0

Choose a tag to compare

@bobbinth bobbinth released this 15 Feb 00:07
· 607 commits to main since this release
2d1ca42

Major breaking changes

  • [BREAKING] Changed backend from winterfell to Plonky3 (#2472).
  • [BREAKING] Removed Process, VmStateIterator and miden_processor::execute_iter() (#2483).
  • [BREAKING] Removed miden debug, miden analyze and miden repl (#2483).
  • [BREAKING] Standardized operand-stack ordering around a unified little-endian (LE) convention (low limb/coeff closest to the top). This includes multi-limb integer ops, extension field elements, and streaming memory operations. Also remapped the sponge state and adjusts hperm/digest extraction plus advice hash-insert instructions for consistent LE semantics. (#2547).
  • [BREAKING] Renamed u32overflowing_mul to u32widening_mul, u32overflowing_madd to u32widening_madd, and math::u64::overflowing_mul to math::u64::widening_mul (#2584).
  • [BREAKING] Changed the VM’s native hash function from RPO to Poseidon2 (#2599).

Enhancements

  • Added initial math::u128 functions for lib/core/math runtime. (#2438).
  • Added constants support as an immediate value of the repeat statement (#2548).
  • Added procedure_names to DebugInfo for storing procedure name mappings by MAST root digest, enabling debuggers to resolve human-readable procedure names during execution (#2474).
  • Added deserialization of the MastForest from untrusted sources. Add fuzzing for MastForest deserialization. (#2590).
  • Added StackInterface::get_double_word() method for reading 8 consecutive stack elements (#2607).
  • Added error messages to asserts in the standard library (#2650)
  • Optimized ExecutionTracer to avoid cloning Vec<OpBatch> on every basic block entry. (#2664)

Fixes

  • Fixed memory chiplet constraint documentation: corrected f_i variable definitions, first row flag, and f_mem_nl constraint expression (#2423).
  • Removed the intentional HALT-insertion bug from the parallel trace generation (#2484).
  • FastProcessor now correctly returns an error if the maximum number of cycles was exceeded during execution (#2537).
  • FastProcessor now correctly only executes trace decorators when tracing is enabled (with ExecutionOptions) (#2539).
  • Fixed a bug where trace generation would fail if a core trace fragment started on the END operation of a loop that was not entered (#2587).
  • Added missing as_canonical_u64() method to IntValue in miden-assembly-syntax, fixing compilation errors in the generated grammar code (#2589).
  • Fixed off-by-one error in cycle limit check that caused programs using exactly max_cycles cycles to fail (#2635).
  • Fixed prover log message reporting main_trace_len() instead of trace_len() for the pre-padding length (#2671).
  • System event errors now include the operation index, so diagnostics point to the exact emit instruction instead of the first operation in the basic block (#2672).
  • Added generation of AssemblyOp decorators for JoinNodes so that error diagnostics can point to the begin...end block (#2674).
  • Renamed snapshot test files to use __ instead of :: for Windows compatibility (#2580).

Changes

  • Added --kernel flag to CLI commands (run, prove, verify, debug) to allow loading custom kernels from .masm or .masp files (#2363).
  • Implemented running batch inversion concurrently per fragment in parallel trace generation (#2405).
  • Added MastForest validation (#2412).
  • Removed undocumented err_code field from ExecutionError::NotU32Values (#2419).
  • [BREAKING] Moved get_assembly_op to the MastForest, remove trait MastNodeErrorContext (#2430).
  • Added a cached commitment to the MastForest (#2447)
  • Moved bytes_to_packed_u32_elements to miden-core::utils and added packed_u32_elements_to_bytes inverse function (#2458).
  • [BREAKING] Changed serialization of BasicBlockNodes to use padded indices (#2466).
  • Changed padded serialization of BasicBlockNodes to use delta-encoded metadata (#2469).
  • Changed (de)serialization of MastForest to directly (de)serialize DebugInfo (#2470).
  • Added validation of core_trace_fragment_size in ExecutionOptions (#2528).
  • Removed ErrorContext trait and err_ctx! macro; error context is now computed lazily by passing raw parameters to error extension traits (#2544).
  • Added MastForest::write_stripped() to serialize without DebugInfo (#2549).
  • Added API to serialize the MastForest without DebugInfo (#2549).
  • [BREAKING] Rename MastForest::strip_decorators() to MastForest::clear_debug_info() (#2554).
  • Documented push.[a,b,c,d] word literal syntax (#2556).
  • Use IndexVec::try_from instead of pushing elements one by one in DebugInfo::empty_for_nodes (#2559).
  • Changed assert_u32 helper function to return u32 instead of Felt (#2575).
  • Made StackInputs and StackOutputs implement Copy trait (#2581).
  • Added malicious advice provider tests for MASM validation using advice stack initialization (#2583).
  • [BREAKING] Removed NodeExecutionState in favor of Continuation (#2587).
  • [BREAKING] Removed SyncHost and BaseHost, and renamed AsyncHost to Host (#2595).
  • [BREAKING] Moved ExecutionOptions to miden-processor, ProvingOptions to miden-prove, and ExecutionProof to miden-core (all out of miden-air) (#2597).
  • [BREAKING] Removed on_assert_failed method from Host trait (#2600).
  • [BREAKING] Added builder methods (with_advice(), with_debugging(), with_tracing(), with_options()) directly on FastProcessor for fluent configuration. Removed deprecated new_with_advice_inputs() and new_debug() constructors (#2602, #2625).
  • Consolidated testing hosts by merging TestConsistencyHost into TestHost and reusing the unified host in tests (#2603).
  • [BREAKING] Converted ProcessState to a struct wrapping FastProcessor, and rename it to ProcessorState (#2604).
  • [BREAKING] Cleaned up StackInputs and StackOutputs API, and use StackInputs in FastProcessor constructors (#2605).
  • [BREAKING] Separated AsmOp storage from Debug/Trace decorators. (#2606).
  • [BREAKING] Added widening u32 add variants and aligned math::u64/math::u256 APIs and docs with little‑endian stack conventions (#2614).
  • [BREAKING] Abstracted away program execution using the sans-IO pattern (#2615).
  • [BREAKING] Removed PushMany trait and new_array_vec() from miden-core (#2630).
  • [BREAKING] Removed unused meta field from ExecutionTrace and changed the constructor to take ProgramInfo (#2639).
  • [BREAKING] Host::on_debug() and Host::on_trace() now take immutable references to ProcessorState (#2639).
  • [BREAKING] Migrated parallel trace generation to use the common execute_impl() (#2642).
  • [BREAKING] Removed unused should_break field from AssemblyOp decorator (#2646).
  • [BREAKING] Updated processor module structure (#2651).
  • [BREAKING] Removed breakpoint instruction from assembly (#2655).
  • Removed FRI domain offset from fri_ext2fold4 operation for Plonky3 compatibility (#2670).
  • [BREAKING] Removed Tracer arguments from Processor methods (#2676).