Skip to content

Releases: 0xMiden/miden-vm

v0.21.2

04 Mar 20:28
687aa55

Choose a tag to compare

  • Removes features = serde from miden-core in miden-air to avoid unconditionally enabling the serde dependency (#2767).

v0.21.1

24 Feb 21:28
15915f9

Choose a tag to compare

  • Added debug variable tracking for source-level variables via dedicated DebugVarStorage (CSR format) in DebugInfo, with DebugVarInfo describing variable name, type, location, and value location (stack, memory, local, constant, or expression). Also added debug_types, debug_sources, and debug_functions sections in MASP packages for storing type definitions, source file paths, and function metadata respectively, each with its own string table, to support source-level debugging (#2471).
  • Updated miden-crypto to v0.22.3 (with unified Felt type) (#2649)
  • Re-exported Continuation from miden-processor to support the external debugger (#2683).
  • Fixed mtree_merge advice-store root ordering to match hmerge operand stack semantics (#2729).
  • Updated sorted_array::find_half_key_value to use little-endian ordering (#2734).
  • Fixed Assembler::warnings_as_errors not being propagated in some methods (#2737).

v0.21.0

15 Feb 00:07
2d1ca42

Choose a tag to compare

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](...
Read more

v0.20.6

04 Feb 23:15
4b3ce6d

Choose a tag to compare

  • Fixed issue with link-time symbol resolution that prevented referencing an imported item as locally-defined, e.g. an import like use some::module::CONST used via something like emit.CONST would fail to resolve correctly. #2637

v0.20.5

02 Feb 09:03
d91a5ea

Choose a tag to compare

  • Fixed issue with deserialization of Paths due to lifetime restrictions #2627.
  • Implemented path canonicalization and modified Path/PathBuf APIs to canonicalize paths during construction. This also addressed some issues uncovered during testing where some APIs were not canonicalizing paths, or path-related functions were inconsistent in their behavior due to special-casing that was previously needed #2627.

v0.20.4

31 Jan 01:52
2e66bd2

Choose a tag to compare

  • Fixed issue with handling of quoted components in PathBuf #2618.

v0.20.3

27 Jan 20:56
3681a89

Choose a tag to compare

  • Fixed issue where exports of a Library did not have attributes serialized #2608

v0.20.2

06 Jan 22:29
c6e1e8f

Choose a tag to compare

  • Fix issue where decorator access was not bypassed properly in release mode (#2529).

v0.20.1

15 Dec 07:24
858f4cf

Choose a tag to compare

  • Fix issue where calling procedures from statically linked libraries did not import their decorators (#2459).

v0.20.0

06 Dec 05:47
17b7857

Choose a tag to compare

Enhancements

  • Added SHA512 hash precompile in miden::core::crypto::hashes::sha512 (#2312).
  • Added EdDSA (Ed25519) signature verification precompile in miden::core::crypto::dsa::eddsa_ed25519 (#2312).
  • Added AEAD implementation in the VM using crypto_stream instruction (#2322).
  • Added new adv.push_mapval_count instruction (#2349).
  • Added new memcopy_elements procedure for the std::mem module (#2352).
  • Implemented link-time const evaluation; simplified linker implementation and improved consistency of symbol resolution and associated errors (#2370).
  • Added new peek procedure for the std::collections::smt module (#2387).
  • Added new pad_and_hash_elements procedure to the std::crypto::hashes::rpo module (#2395).
  • Added padding option for the adv.push_mapvaln instruction (#2398).

Changes

  • [BREAKING] Added builder patterns for all MastNode types, made naked constructors module-private (#2259).
  • Extended builder patterns for all MastNode types (#2274).
  • Further extended builder patterns for all MastNode types, replace enum-dispatch by our own derivations (#2291).
  • Finished builder pattern conversion and delete old MastNode mutable APIs (#2301).
  • Hoist BasicBlock decorator storage to the MastForest after insertion in said MastForest (#2310).
  • [BREAKING] hoist before_enter and after_exit decorators to MastForest (#2323).
  • [BREAKING] Make argument order of Assembler::compile_and_statically_link_from_dir consistent with Assembler::assemble_library_from_dir.
  • [BREAKING] Renamed Library::get_procedure_root_by_name to Library::get_procedure_root_by_path.
  • Added missing implementations of proptest::Arbitrary for non-BasicBlockNode variants of MastNode (#2335).
  • Fixed locaddr alignment when procedure local count is not a multiple of 4 (#2350).
  • Streamline MastNode APIs and remove redundant parameters from execute_op_batch functions (#2360).
  • [BREAKING] Host debug and trace handlers return dynamic errors (#2367).
  • [BREAKING] Standardized hash function naming: renamed hash_2to1merge and hash_1to1hash across all hash modules (blake3, sha256, keccak256, rpo) (#2381).
  • Consolidate debug information into DebugInfo struct (#2366).
  • Wrapped hperm instruction in rpo::permute procedure (#2392).
  • hash_memory_with_state, hash_memory_words, and hash_memory_double_words procedures from the std::crypto::hashes::rpo module were renamed to the hash_elements_with_state, hash_words, and hash_double_words respectively (#2395).
  • [BREAKING] Upgraded miden-crypto to 0.19 (#2399).
  • Added missing modules to libcore documentation (#2416).
  • Pre-allocate main trace buffer in trace generation (#2345).
  • Renamed the MASM standard library to "miden::core", the crate to miden-core-lib, and various other MASM module refactors (#2260) (#2427).
  • Added a compaction function for achieving maximal sharing out of a MastForest with stripped decorators (#2408).
  • Refactored and remove tech debt from parallel trace generation (#2382)
  • [BREAKING] Added kind field to Package struct to indicate package type (Executable, AccountComponent, NoteScript, TxScript, AuthComponent) (#2403).
  • [BREAKING] Made the Assembler work in debug mode, remove optionality (#2396).
  • [BREAKING] Normalized naming of verify procedures of ECDSA precompile (#2413).
  • Refactored Blake3_256 fingerprints to allocate less (#2375).
  • [BREAKING] Normalized signature encoding methods in the dsa module of the core library.