Releases: 0xMiden/miden-vm
Releases · 0xMiden/miden-vm
v0.21.2
v0.21.1
- Added debug variable tracking for source-level variables via dedicated
DebugVarStorage(CSR format) inDebugInfo, withDebugVarInfodescribing variable name, type, location, and value location (stack, memory, local, constant, or expression). Also addeddebug_types,debug_sources, anddebug_functionssections 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-cryptoto v0.22.3 (with unifiedFelttype) (#2649) - Re-exported
Continuationfrommiden-processorto support the external debugger (#2683). - Fixed
mtree_mergeadvice-store root ordering to matchhmergeoperand stack semantics (#2729). - Updated
sorted_array::find_half_key_valueto use little-endian ordering (#2734). - Fixed
Assembler::warnings_as_errorsnot being propagated in some methods (#2737).
v0.21.0
Major breaking changes
- [BREAKING] Changed backend from winterfell to Plonky3 (#2472).
- [BREAKING] Removed
Process,VmStateIteratorandmiden_processor::execute_iter()(#2483). - [BREAKING] Removed
miden debug,miden analyzeandmiden 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_multou32widening_mul,u32overflowing_maddtou32widening_madd, andmath::u64::overflowing_multomath::u64::widening_mul(#2584). - [BREAKING] Changed the VM’s native hash function from RPO to Poseidon2 (#2599).
Enhancements
- Added initial
math::u128functions for lib/core/math runtime. (#2438). - Added constants support as an immediate value of the repeat statement (#2548).
- Added
procedure_namestoDebugInfofor storing procedure name mappings by MAST root digest, enabling debuggers to resolve human-readable procedure names during execution (#2474). - Added deserialization of the
MastForestfrom 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
ExecutionTracerto avoid cloningVec<OpBatch>on every basic block entry. (#2664)
Fixes
- Fixed memory chiplet constraint documentation: corrected
f_ivariable definitions, first row flag, andf_mem_nlconstraint expression (#2423). - Removed the intentional HALT-insertion bug from the parallel trace generation (#2484).
FastProcessornow correctly returns an error if the maximum number of cycles was exceeded during execution (#2537).FastProcessornow correctly only executestracedecorators when tracing is enabled (withExecutionOptions) (#2539).- Fixed a bug where trace generation would fail if a core trace fragment started on the
ENDoperation of a loop that was not entered (#2587). - Added missing
as_canonical_u64()method toIntValueinmiden-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_cyclescycles to fail (#2635). - Fixed prover log message reporting
main_trace_len()instead oftrace_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
AssemblyOpdecorators forJoinNodes so that error diagnostics can point to thebegin...endblock (#2674). - Renamed snapshot test files to use
__instead of::for Windows compatibility (#2580).
Changes
- Added
--kernelflag to CLI commands (run,prove,verify,debug) to allow loading custom kernels from.masmor.maspfiles (#2363). - Implemented running batch inversion concurrently per fragment in parallel trace generation (#2405).
- Added MastForest validation (#2412).
- Removed undocumented
err_codefield fromExecutionError::NotU32Values(#2419). - [BREAKING] Moved
get_assembly_opto theMastForest, remove traitMastNodeErrorContext(#2430). - Added a cached commitment to the
MastForest(#2447) - Moved
bytes_to_packed_u32_elementstomiden-core::utilsand addedpacked_u32_elements_to_bytesinverse 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
MastForestto directly (de)serialize DebugInfo (#2470). - Added validation of
core_trace_fragment_sizeinExecutionOptions(#2528). - Removed
ErrorContexttrait anderr_ctx!macro; error context is now computed lazily by passing raw parameters to error extension traits (#2544). - Added
MastForest::write_stripped()to serialize withoutDebugInfo(#2549). - Added API to serialize the
MastForestwithoutDebugInfo(#2549). - [BREAKING] Rename
MastForest::strip_decorators()toMastForest::clear_debug_info()(#2554). - Documented
push.[a,b,c,d]word literal syntax (#2556). - Use
IndexVec::try_frominstead of pushing elements one by one inDebugInfo::empty_for_nodes(#2559). - Changed
assert_u32helper function to returnu32instead ofFelt(#2575). - Made
StackInputsandStackOutputsimplementCopytrait (#2581). - Added malicious advice provider tests for MASM validation using advice stack initialization (#2583).
- [BREAKING] Removed
NodeExecutionStatein favor ofContinuation(#2587). - [BREAKING] Removed
SyncHostandBaseHost, and renamedAsyncHosttoHost(#2595). - [BREAKING] Moved
ExecutionOptionstomiden-processor,ProvingOptionstomiden-prove, andExecutionProoftomiden-core(all out ofmiden-air) (#2597). - [BREAKING] Removed
on_assert_failedmethod fromHosttrait (#2600). - [BREAKING] Added builder methods (
with_advice(),with_debugging(),with_tracing(),with_options()) directly onFastProcessorfor fluent configuration. Removed deprecatednew_with_advice_inputs()andnew_debug()constructors (#2602, #2625). - Consolidated testing hosts by merging
TestConsistencyHostintoTestHostand reusing the unified host in tests (#2603). - [BREAKING] Converted
ProcessStateto a struct wrappingFastProcessor, and rename it toProcessorState(#2604). - [BREAKING] Cleaned up
StackInputsandStackOutputsAPI, and useStackInputsinFastProcessorconstructors (#2605). - [BREAKING] Separated AsmOp storage from Debug/Trace decorators. (#2606).
- [BREAKING] Added widening
u32add variants and alignedmath::u64/math::u256APIs and docs with little‑endian stack conventions (#2614). - [BREAKING] Abstracted away program execution using the sans-IO pattern (#2615).
- [BREAKING] Removed
PushManytrait andnew_array_vec()frommiden-core(#2630). - [BREAKING] Removed unused
metafield fromExecutionTraceand changed the constructor to takeProgramInfo(#2639). - [BREAKING]
Host::on_debug()andHost::on_trace()now take immutable references toProcessorState(#2639). - [BREAKING] Migrated parallel trace generation to use the common
execute_impl()(#2642). - [BREAKING] Removed unused
should_breakfield fromAssemblyOpdecorator (#2646). - [BREAKING] Updated processor module structure (#2651).
- [BREAKING] Removed
breakpointinstruction from assembly ([#2655](...
v0.20.6
v0.20.5
- 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
v0.20.3
v0.20.2
v0.20.1
v0.20.0
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_streaminstruction (#2322). - Added new
adv.push_mapval_countinstruction (#2349). - Added new
memcopy_elementsprocedure for thestd::memmodule (#2352). - Implemented link-time const evaluation; simplified linker implementation and improved consistency of symbol resolution and associated errors (#2370).
- Added new
peekprocedure for thestd::collections::smtmodule (#2387). - Added new
pad_and_hash_elementsprocedure to thestd::crypto::hashes::rpomodule (#2395). - Added padding option for the
adv.push_mapvalninstruction (#2398).
Changes
- [BREAKING] Added builder patterns for all
MastNodetypes, made naked constructors module-private (#2259). - Extended builder patterns for all
MastNodetypes (#2274). - Further extended builder patterns for all
MastNodetypes, replaceenum-dispatchby our own derivations (#2291). - Finished builder pattern conversion and delete old
MastNodemutable APIs (#2301). - Hoist
BasicBlockdecorator storage to theMastForestafter insertion in saidMastForest(#2310). - [BREAKING] hoist before_enter and after_exit decorators to MastForest (#2323).
- [BREAKING] Make argument order of
Assembler::compile_and_statically_link_from_dirconsistent withAssembler::assemble_library_from_dir. - [BREAKING] Renamed
Library::get_procedure_root_by_nametoLibrary::get_procedure_root_by_path. - Added missing implementations of
proptest::Arbitraryfor non-BasicBlockNodevariants ofMastNode(#2335). - Fixed
locaddralignment when procedure local count is not a multiple of 4 (#2350). - Streamline MastNode APIs and remove redundant parameters from
execute_op_batchfunctions (#2360). - [BREAKING] Host debug and trace handlers return dynamic errors (#2367).
- [BREAKING] Standardized hash function naming: renamed
hash_2to1→mergeandhash_1to1→hashacross all hash modules (blake3, sha256, keccak256, rpo) (#2381). - Consolidate debug information into
DebugInfostruct (#2366). - Wrapped
hperminstruction inrpo::permuteprocedure (#2392). hash_memory_with_state,hash_memory_words, andhash_memory_double_wordsprocedures from thestd::crypto::hashes::rpomodule were renamed to thehash_elements_with_state,hash_words, andhash_double_wordsrespectively (#2395).- [BREAKING] Upgraded
miden-cryptoto 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
MastForestwith stripped decorators (#2408). - Refactored and remove tech debt from parallel trace generation (#2382)
- [BREAKING] Added
kindfield toPackagestruct 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
verifyprocedures of ECDSA precompile (#2413). - Refactored Blake3_256 fingerprints to allocate less (#2375).
- [BREAKING] Normalized signature encoding methods in the
dsamodule of the core library.