- Define and implement Miden project file format (#2510).
- Added
math::u128comparison (lt,lte,gt,gte), bitwise (and,or,xor,not), and shift (shl,shr,rotl,rotr) operations (#2624). - [BREAKING]
build_trace()no longer assumes valid user input (#2747). - Added
math::u128division operations (#2776). - [BREAKING] Migrated to lifted-STARK backend and
miden-cryptoto v0.23 (#2783).
- Consolidated error variants: simplified
AceErrorand FRI errors to string-based types, mergedDynamicNodeNotFound/NoMastForestWithProcedureintoProcedureNotFound, introducedHostErrorfor handler-related variants (#2675). - Added optional tagging instrumentation for AIR constraints (test-only; enables stable ID tracking and OOD parity checks) (#2713).
- [BREAKING]
ProcessorandFastProcessordecorator execution is now immutable (#2718). - [BREAKING]
TracerAPI significantly refactored (#2720). - Added general stack transition constraints (shift/no‑shift) (#2725).
- Added stack overflow table constraints (#2735).
- Added stack shuffling ops constraints (#2736).
- [BREAKING] Renamed
miden::core::crypto::dsa::falcon512poseidon2module tofalcon512_poseidon2to align with snake_case naming convention (#2740). - Added
miden-ace-codegencrate for lowering AIR constraints to ACE circuit format (#2757). - [BREAKING]
Operationenum now only encodes basic block operations (#2771). - Added AIR constraints for system, range checker, stack, decoder, and chiplets components (#2772).
- Added recursion guards for assembly inputs and tests (#2792).
- Introduced
build_trace_with_max_len()which stops building the trace after a given max, andbuild_trace()no longer allocates more than 2^29 rows (#2809). DebugHandler's default method implementations are now no-ops (instead of prints) (#2837).- Added
ExecutionTrace::check_constraints()for fast debug constraint checking without STARK proving, and migrated tests fromprove_and_verify(#2846). - [BREAKING] Updated the dependency on
midenc-hir-typeto 0.5.0, which changes the set of available calling conventions, and adds support for enum types and named struct types. (#2848) - [BREAKING]
StructType::newnow expects an optional name to be specified (#2848) - [BREAKING]
Variant::newnow expects an optional payload type to be specified (#2848) - [BREAKING] Enum types are now exported from libraries as a
midenc_hir_type::EnumType, rather than the type of the discriminant. (#2848) - In
ExecutionTracer, we no longer record node flags inCoreTraceFragmentContextwhen entering a node (they are redundant) (#2866)
-
Fixed C-like enum validation and constant materialization in
define_enum(#2887). -
Fixed
Constant::PartialEqto includevisibilityfield in equality comparison, making it consistent with other exportable items (Procedure,TypeAlias,EnumType). -
Cryptostream operation now correctly sends chiplets bus memory requests (#2686).
-
Fixed a possible panic in decorator serialization (#2742).
-
Hardened untrusted deserialization by enforcing budgets and depth limits, plus expanded fuzzing coverage (#2777).
-
Validated push immediate group commitments and slot placement to reject invalid immediates (#2779).
-
Added documentation for
math::u64module operations (#2781). -
Prevented a trace-generation panic by validating op batch groups in basic blocks (#2782).
-
Preserved dynexec/dyncall distinction (and digests) when remapping or merging MAST forests (#2784).
-
Hardened AEAD decrypt size calculations (#2789).
-
Introduced
FastProcessorsafe stack method accesses for event handlers (#2797). -
Fixed a possible u64 overflow issue in
op_eval_circuit()#2799. -
SystemEvent::HpermToMaphandler now computes the correct permutation (#2801). -
Hardened MASM parsing and constants handling (lexer invalid-token spans, repeat count bounds, constant range checks, field division folding, and
push.WORD[...]index validation) (#2803). -
Hardened syscall target validation to avoid panic paths and reject invalid digests at assembly time (#2804).
-
Added bounds to attacker-controlled allocation sizes in advice map and keccak256/sha512 precompiles (#2805).
-
Hardened boundary and overflow checks for
u64::shr,ilog2,u32clz, and Falconmod_12289(#2808). -
build_trace()no longer panics when no core trace contexts are provided (#2809). -
Set a bound on
ContinuationStacksize, checked during execution (#2824). -
Hardened basic-block batch validation and decode-time padding checks to reject inconsistent padded groups and prevent raw-helper underflow/panic paths on malformed forests (#2839).
-
Fixed undefined behavior in parallel trace generation by limiting H0 batch inversion to initialized rows (#2842).
-
VisitandVisitMuttraits now properly visit enum type discriminant values, as well as the new payloadTypeExprwhen present (#2848). -
Enforced canonical kernel procedure-hash validation on binary and serde deserialization paths, and expanded serde deserialization fuzz coverage for related artifact types (#2849).
-
Fixed constant evaluation across semantic analysis and linking so exported constants no longer retain private local dependencies and cross-module constant chains resolve in the defining module (#2873).
- Removes
features = serdefrommiden-coreinmiden-airto avoid unconditionally enabling theserdedependency (#2767).
- 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).
- [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).
- 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)
- 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).
- 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). - Removed FRI domain offset from
fri_ext2fold4operation for Plonky3 compatibility (#2670). - [BREAKING] Removed
Tracerarguments fromProcessormethods (#2676).
- Fixed issue with link-time symbol resolution that prevented referencing an imported item as locally-defined, e.g. an import like
use some::module::CONSTused via something likeemit.CONSTwould fail to resolve correctly. #2637
- 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
- Fixed issue with handling of quoted components in
PathBuf#2618
- Fixed issue where exports of a Library did not have attributes serialized #2608
- Fixed issue where decorator access was not bypassed properly in release mode (#2529).
- Fixed issue where calling procedures from statically linked libraries did not import their decorators (#2459).
- 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). - Added new
FastProcessor::step()method that executes a single clock cycle (#2440)
- [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.
- Add
verify_ecdsa_k256_keccakprocedure for verifying signatures using themiden-cryptoformat (#2344).
- Added
std::mem::pipe_double_words_preimage_to_memory, a version ofpipe_preimage_to_memoryoptimized for pairs of words (#2048). - Added support for leaves with multiple pairs in
std::collections::smt::get(#2048). - Added support for leaves with multiple pairs in
std::collections::smt::set(#2248). - Made
miden-vm analyzeoutput analysis even if execution ultimately errored. (#2204). - Allow
CALLandDYNCALLfrom a syscall context (#2296) - Remove operations
FmpUpdateandFmpAdd, as well as columnsfmpandin_syscall(#2308) - Reduce the constraints degree of
HORNERBASE(#2328) - [BREAKING] Implement ECDSA precompile (#2277).
- Allowed
CALLandDYNCALLfrom a syscall context (#2296). - Implemented
AdviceProvider::has_merkle_path()method.
- [BREAKING] Incremented MSRV to 1.90.
- Added
before_enterandafter_exitdecorator lists toBasicBlockNode.(#2167). - Fix ability to parse odd-length hex strings (#2196).
- Added
proptest'sArbitraryinstances forBasicBlockNodeandMastForest(#2200). - [BREAKING] Fix inconsistencies in debugging instructions (#2205).
- Fixed mismatched Push expectations in decoder syscall_block test (#2207).
- Added
proptest'sArbitraryinstances forProgram, fixedAttributeserialization (#2224). - [BREAKING]
Memory::read_element()now requires&selfinstead of&mut self(#2242). - Fixed hex word parsing to guard against missing 0x prefix (#2245).
- Systematized u32-indexed vectors (#2254).
- Introduced a new
build_trace()which builds the trace in parallel from trace fragment contexts (#1839) (#2188). - Moved the
FastProcessorstack to the heap instead of the (OS thread) stack (#2271). - [BREAKING] Implemented logging of deferred precompile calls in
AdviceProvider(#2158). - [BREAKING] Added precompile requests to proof (#2187).
after_exitdecorators execute in the correct sequence in External nodes in the Fast processor (#2247).- Removed O(n log m) iteration in parallel processor (#2273).
- [BREAKING] Added
log_precompileopcode (#2249). - [BREAKING]
BaseHostnow exposesresolve_eventso hosts can provide event names for diagnostics. UnifySystemEventID derivation (#2150). - [BREAKING] Deprecated
mem_loadwandmem_storewinstructions in favor of explicit endianness variants (mem_loadw_be,mem_loadw_le,mem_storew_be,mem_storew_le) (#2186). - [BREAKING] Deprecated
loc_loadwandloc_storewinstructions in favor of explicit endianness variants (loc_loadw_be,loc_loadw_le,loc_storew_be,loc_storew_le). - [BREAKING] Added pre/post decorators to BasicBlockNode fingerprint (#2267).
- [BREAKING] Added explicit endianness methods
get_stack_word_be()andget_stack_word_le()to stack word accessors, deprecated ambiguousget_stack_word()(#2235). - Added missing endianness-aware memory instructions (
mem_loadw_be,mem_loadw_le,mem_storew_be,mem_storew_le) to Instruction Reference documentation (#2286). - Fixed decorator offset bug in
BasicBlockNodepadding (#2305). - Removed
FmpUpdateandFmpAddoperations, as well as columnsfmpandin_syscall(#2308). - [BREAKING] Updated
miden-cryptodependency to v0.18 (#2311). - [BREAKING] Refined precompile verification plumbing (#2325).
- Implement
sorted_array::find_half_key_value(#2268).
- Place the
FastProcessorstack on the heap instead of the (OS thread) stack (#2275).
- Gate stdlib doc generation in build.rs on
MIDEN_BUILD_STDLIB_DOCSenvironment variable (#2239).
- Added slicing for the word constants (#2057).
- Added ability to declare word-sized constants from strings (#2073).
- Added new
adv.insert_hqwordinstruction (#2097). - Added option to use Poseidon2 in proving (#2098).
- Reinstate the build of the stdlib's documentation (#1432).
- Added
FastProcessor::execute_for_trace(), which outputs a series of checkpoints necessary to build the trace in parallel (#2023) - Introduced
Tracertrait to allow different ways of tracing program execution, including no tracing (#2101) FastProcessor::execute_*()methods now also return the state of the memory in a newExecutionOutputstruct (#2028)- Removed all stack underflow error cases from
FastProcessor(#2173). - Added
reversewandreversedwinstructions for reversing the order of elements in a word and double word on the stack (#2125). - Added endianness-aware memory instructions:
mem_loadw_be,mem_loadw_le,mem_storew_be, andmem_storew_lefor explicit control over word element ordering in memory operations (#2125). - Added non-deterministic lookup for sorted arrays to stdlib (#2114).
- Introduced syntax for expressing type information in MASM (#2120).
- Added
reversewandreversedwinstructions for reversing the order of elements in a word and double word on the stack (#2125). - Added endianness-aware memory instructions:
mem_loadw_be,mem_loadw_le,mem_storew_be, andmem_storew_lefor explicit control over word element ordering in memory operations (#2125). FastProcessor::execute_*()methods now also return the state of the memory in a newExecutionOutputstruct (#2028).- Better document the normalizing behavior of
MastForestMerger::merge(#2174). - Propagate procedure annotations to
LibraryandPackagemetadata (#2189).
- Fixed fast loop node not running after-exit decorators when skipping the body (condition == 0) (#2169).
- Removed unused
PushU8List,PushU16List,PushU32ListandPushFeltListinstructions (#2057). - Removed dedicated
PushU8,PushU16,PushU32,PushFelt, andPushWordassembly instructions. These have been replaced with the genericPush<Immediate>instruction which supports all the same functionality through theIntValueenum (U8, U16, U32, Felt, Word) (#2066). - [BREAKING] Update miden-crypto dependency to v0.16 (#2079)
- Made
get_mast_forest()async again forAsyncHostnow that basic conditional async support is in place (#2060). - Improved error message of binary operations on U32 values to report both erroneous operands, if applicable. (#1327).
- [BREAKING]
emitno longer takes an immediate and instead gets the event ID from the stack (#2068). - [BREAKING]
Operation::Emitno longer contains au32parameter, affecting pattern matching and serialization (#2068). - [BREAKING] Host
on_eventmethods no longer receiveevent_idparameter; event ID must be read from stack position 0 (#2068). - [BREAKING]
get_stack_worduses element-aligned indexing instead of word-aligned indexing (#2068). - [BREAKING] Implemented support for
event("event_name")in MASM (#2068). - Improved representation of
OPbatchesto include padding Noop by default, simplifying fast iteration over program instructions in the processor (#1815). - Changed multiple broken links across the repository (#2110).
- Rename
program_executionbenchmark toprogram_execution_for_trace, and benchmarkFastProcessor::execute_for_trace()instead ofProcess::execute()(#2131) - [BREAKING] Initial support for Keccak precompile (#2103).
- Refactored
MastNodeto eliminate boilerplate dispatch code (#2127). - [BREAKING] Introduce
EventIdtype (#2137). - Added
multicallsupport for the CLI (#1141). - Made
miden-prover's metal prover async-compatible. (#2133). - Abstracted away the fast processor's operation execution into a new
Processortrait (#2141). - [BREAKING] Implemented custom section support in package format, and removed
account_component_metadatafield (#2071). - Moved
EMITflag to degree 5 bucket (#2043). - [BREAKING] Renumber system event IDs (#2151).
- [BREAKING] Update miden-crypto dependency to v0.17 (#2168).
- [BREAKING] Moved
u64_div,falcon_divandsmtpeeksystem events to stdlib (#1582). - [BREAKING]
MastNodequality of life improvements (#2166). - Allowed references between constants without requiring them to be declared in a specific order (#2120).
- Introduced new
pub procsyntax for procedure declarations to replaceexportsyntax. This change is backwards-compatible. (#2120). - [BREAKING] Disallowed the use of word literals in conjunction with dot-delimited
pushsyntax (#2120). - Fixed
RawDecoratorIdIteratorun-padding off-by-one (#2193).
- Hotfix: remove all stack underflow errors (#2182).
- added
MastForest::strip_decorators()(#2108).
- [BREAKING] Implemented custom Event handlers (#1584).
- Implemented
copy_digestandhash_memory_double_wordsprocedures in thestd::crypto::hashes::rpomodule (#1971). - Added
extend_methods on AdviceProvider #1982. - Added new stdlib module
std::word, containing utilities for manipulating arrays of four fields (words) (#1996). - Added constraints evaluation check to recursive verifier (#1997).
- Make recursive verifier in
stdlibreusable through dynamic procedure execution (#2008). - Added
AdviceProvider::into_parts()method (#2024). - Added type information to procedures in the AST,
Library, andPackageExporttypes (#2028). - Added
drop_stack_topprocedure instd::sys(#2031).
- [BREAKING] Incremented MSRV to 1.88.
- [BREAKING] Implemented preliminary changes for lazy loading of external
MastForestAdviceMaps (#1949). - Enhancement for all benchmarks (incl.
program_execution_fast) are built and run in a new CI job with required feature flags (#https://github.com/0xMiden/miden-vm/issues/1964). - [BREAKING] Introduced
SourceManagerSynctrait, and removeAssembler::source_manager()method #1966. - Fixed
ExecutionOptions::default()to setmax_cyclescorrectly to1 << 29(#1969). - [BREAKING] Reverted
get_mapped_valuereturn signature (#1981). - Converted
FastProcessor::execute()from recursive to iterative execution (#1989). - [BREAKING]: move
std::utils::is_empty_wordtostd::word::eqz, as part of the new word module #1996. - [BREAKING]
{AsyncHost,SyncHost}::on_eventnow returns a list ofAdviceProvidermutations (#2003). - [BREAKING] made
AdviceInputsfield public and removed redundant accessors (#2009). - [BREAKING] Moved the
SourceManagerfrom the processor to the host #2019. - [BREAKING]
FastProcessor::execute()now also returns theAdviceProvider(#2026). - Allowed for 234 "spurious drops" before the fast processor underflows, up from 34 (#2035) .
- [BREAKING]
Library::exportsnow returns(&QualifiedProcedureName, &LibraryExport)rather than just&QualifiedProcedureName, to allow callers to extract more useful information (#2028). - [BREAKING] The serialized representation for
Packagewas changed to include procedure type information. Older packages will not work with the new serialization code, and vice versa. The version of the binary format was incremented accordingly (#2028). - [BREAKING] Procedure-related metadata types in the
miden-assemblycrate in some cases now require an optional type signature argument. If that information is not available, you can simply passNoneto retain current behavior (#2028). - Remove basic block clock cycle optimization from
FastProcessor(#2054).
- Made
AdviceInputsfield public.
- Add
new_dummymethod onExecutionProof(#2007).
- Fix
debug::print_vm_stackwhich was returning the advice stack instead of the system stack (#1984).
- Make
Process::state()public and re-introduceFrom<&Process> for ProcessState. - Return
AdviceProvideras part of theExecutionTrace.
- Optimized handling of variable length public inputs in the recursive verifier (#1842).
- Simplify processing of OOD evaluations in the recursive verifier (#1848).
- Allowed constants to be declared as words and to be arguments of the
pushinstruction (#1855). - Allowed definition of Advice Map data in MASM programs. The data is loaded by the host before execution (#1862).
- Improved the documentation for the
Assemblerand its APIs to better explain how each affects the final assembled artifact (#1881). - It is now possible to assemble kernels with multiple modules while allowing those modules to perform kernel-like actions, such as using the
callerinstruction. (#1893). - Made
ErrorContextzero-cost (#1910). - Made
FastProcessoroutput rich error diagnostics (#1914). - [BREAKING] Make
FastProcessor::execute()async (#1933). - The
SourceManagerAPI was improved to be more precise about source file locations (URIs) and language type. This is intended to support the LSP server implementation. (#1937). SourceManager::updatewas added to allow for the LSP server to update documents stored in the source manager based on edits made by the user. (#1937).- Implemented a new
adv.has_mapkeydecorator (#1941). - Added
get_procedure_root_by_namemethod to theLibrarystruct (#1961).
- Updated lalrpop dependency to 0.22 (#1865)
- Removed the obsolete
RpoFalcon512decorator and associated structs (#1872). - Fixed instructions with errors print without quotes (#1882).
- [BREAKING] Renamed
Assembler::add_moduletoAssembler::compile_and_statically_link(#1881). - [BREAKING] Renamed
Assembler::add_modulestoAssembler::compile_and_statically_link_all(#1881). - [BREAKING] Renamed
Assembler::add_modules_from_dirtoAssembler::compile_and_statically_link_from_dir(#1881). - [BREAKING] Removed
Assembler::add_module_with_options(#1881). - [BREAKING] Removed
Assembler::add_modules_with_options(#1881). - [BREAKING] Renamed
Assembler::add_librarytoAssembler::link_dynamic_library(#1881). - [BREAKING] Renamed
Assembler::add_vendored_librarytoAssembler::link_static_library(#1881). - [BREAKING]
AssemblyErrorwas removed, and all uses replaced withReport(#1881). - [BREAKING]
Compiletrait was renamed toParse. - [BREAKING]
CompileOptionswas renamed toParseOptions. - Licensed the project under the Apache 2.0 license (in addition to the MIT) (#1883).
- Uniform chiplet bus message flag encoding (#1887).
- [BREAKING] Updated dependencies Winterfell to v0.13 and Crypto to v0.15 (#1896).
- [BREAKING] Converted
AdviceProviderinto a struct (#1904, #1905). - [BREAKING]
Host::get_mast_foresttakes&mut self(#1902). - [BREAKING]
ProcessStatereturnsMemoryErrorinstead ofExecutionError(#1912). - [BREAKING]
AdviceProviderreturns its own error type (#1907. - Split out the syntax-related aspects of the
miden-assemblycrate into a new crate calledmiden-assembly-syntax(#1921). - Removed the dependency on
miden-assemblyfrommiden-mast-package(#1921). - [BREAKING] Removed
Library::from_dirin favor ofAssembler::assemble_library_from_dir(#1921). - [BREAKING] Removed
KernelLibrary::from_dirin favor ofAssembler::assemble_kernel_from_dir(#1921). - [BREAKING] Fixed incorrect namespace being set on modules parsed using the
lib_dirparameter ofKernelLibrary::from_dir. (#1921).. - [BREAKING] The signature of
SourceManager::loadhas changed, and now requires aSourceLanguageandUriparameter. (#1937). - [BREAKING] The signature of
SourceManager::load_from_raw_partshas changed, and now requires aUriparameter in place of&str. (#1937). - [BREAKING] The signature of
SourceManager::findhas changed, and now requires aUriparameter in place of&str. (#1937). - [BREAKING]
SourceManager::get_by_pathwas renamed toget_by_uri, and now requires a&Uriinstead of a&strfor the URI/path parameter (#1937). - [BREAKING] The
pathparameter ofLocationandFileLineColdebuginfo types was renamed touri, and changed fromArc<str>toUritype. (#1937). - [BREAKING] Move
AdviceProviderfromHosttoProcessState(#1923)). - Removed decorator for interpolating polynomials over degree 2 extension field (#1875).
- Removed MASM code for probabilistic NTT (#1875).
- Moved implementation of
miden_assembly_syntax::diagnosticsinto a newmiden-utils-diagnosticscrate (#1945). - Moved implementation of
miden_core::debuginfointo a newmiden-debug-typescrate (#1945). - Moved implementation of
miden_core::syncinto a newmiden-utils-synccrate (#1945). - [BREAKING] Replaced
miden_assembly_syntax::Versionwithsemver::Version(#1946)
- Fixed
SourceContent::updatesplice logic to prevent panics on single-line edits and respect exclusive end semantics for multi-line edits (#XXXX). - Truncated nprime.masm output stack to prevent overflow during benchmarks (#1879).
- Modules can now be provided in any order to the
Assembler, see #1669 (#1881). - Addressed bug which caused references to re-exported procedures whose definition internally referred to an aliased module import, to produce an "undefined module" error, see #1451 (#1892).
- The special identifiers for kernel, executable, and anonymous namespaces were not valid MASM syntax (#1893).
AdviceProvider: replaceSimpleAdviceMapwithAdviceMapstruct frommiden-core& addmerge_advice_maptoAdviceProvider(#1924 & #1922).- [BREAKING] Disallow usage of the field modulus as an immediate value (#1938).
- Add
debug.stack_advanddebug.stack_adv.<n>to help debug the advice stack (#1828). - Add a complete description of the constraints for
horner_eval_baseandhorner_eval_ext(#1817). - Add documentation for ACE chiplet (#1766)
- Add support for setting debugger breakpoints via
breakpointinstruction (#1860) - Improve error messages for some procedure locals-related errors (#1863)
- Add range checks to the
push_falcon_mod_resultadvice injector to make sure that the inputs areu32(#1819).
- [BREAKING] Rename
midenexecutable tomiden-vm - Improve error messages for some assembler instruction (#1785)
- Remove
idxcolumn from Kernel ROM chiplet and use chiplet bus for initialization. (#1818) - [BREAKING] Make
Assembler::source_manager()beSend + Sync(#1822) - Refactored
ProcedureNamevalidation logic to improve readability (#1663) - Simplify and optimize the recursive verifier (#1801).
- Simplify auxiliary randomness generation (#1810).
- Add handling of variable length public inputs to the recursive verifier (#1813).
miden debugrewind command no longer panics at clock 0 (#1751)- Prevent overflow in ACE circuit evaluation (#1820)
debug.localdecorators no longer panic or print incorrect values (#1859)
- Add kernel procedures digests as public inputs to the recursive verifier (#1724).
- add optional
Package::account_component_metadata_bytesto store serializedAccountComponentMetadata(#1731). - Add
executablefeature to themake testandmake test-buildMake commands (#1762). - Allow asserts instruction to take error messages as strings instead of error codes as Felts (#1771).
- Add arithmetic evaluation chiplet (#1759).
- Update the recursive verifier to use arithmetic evaluation chiplet (#1760).
- Replace deprecated #[clap(...)] with #[command(...)] and #[arg(.…)] (#1794)
- Add pull request template to guide contributors (#1795)
- [BREAKING]
ExecutionOptions::with_debugging()now takes a boolean parameter (#1761) - Use
MemoryAddress(u32)forVmStatememory addresses instead of plainu64(#1758). - [BREAKING] Improve processor errors for memory and calls (#1717)
- Implement a new fast processor that doesn't generate a trace (#1668)
ProcessState::get_stack_state()now only returns the state of the active context (#1753)- Change
MastForestBuilder::set_after_exit()forappend_after_exit()(#1775) - Improve processor error diagnostics (#1765)
- Fix source spans associated with assert* and mtree_verify instructions (#1789)
- [BREAKING] Improve the layout of the memory used by the recursive verifier (#1857)
- Relaxed rules for identifiers created via
Ident::new,ProcedureName::new,LibraryNamespace::new, andLibrary::new_from_components(#1735) - [BREAKING] Renamed
Ident::new_uncheckedandProcedureName::new_uncheckedtofrom_raw_parts(#1735).
- Fixed various issues with pretty printing of Miden Assembly (#1740).
- Added
prepare_hasher_stateandhash_memory_with_stateprocedures to thestdlib::crypto::hashes::rpomodule (#1718).
- Added to the
Assemblerthe ability to vendor a compiled library. - [BREAKING] Update CLI to accept masm or masp files as input for all commands (#1683, #1692).
- [BREAKING] Introduced
HORNERBASE,HORNEREXTand removedRCOMBBASEinstructions (#1656).
- Update minimum supported Rust version to 1.85.
- Change Chiplet Fields to Public (#1629).
- [BREAKING] Updated Winterfell dependency to v0.12 (#1658).
- Introduce
BusDebuggerto facilitate debugging buses (#1664). - Update Falcon verification procedure to use
HORNERBASE(#1661). - Update recursive verifier to use
HORNERBASE(#1665). - Fix the docs and implementation of
EXPACC(#1676). - Running a call/syscall/dyncall while processing a syscall now results in an error (#1680).
- Using a non-binary value as a loop condition now results in an error (#1685).
- [BREAKING] Remove
Assembler::assemble_common()from the public interface (#1689). - Fix
Horner{Base, Ext}bus requests to memory chiplet (#1689). - Fix docs on the layout of the auxiliary segment trace (#1694).
- Optimize FRI remainder polynomial check (#1670).
- Remove
FALCON_SIG_TO_STACKevent (#1703). - Prevent
U64Divevent from crashing processor (#1710).
- [BREAKING] Refactored memory to be element-addressable (#1598).
- [BREAKING] Resolved flag collision in
--verifycommand and added functionality for optional input/output files (#1513). - [BREAKING] Refactored
MastForestserialization/deserialization to put decorator data at the end of the binary (#1531). - [BREAKING] Refactored
Processstruct to no longer take ownership of theHost(#1571). - [BREAKING] Converted
ProcessStatefrom a trait to a struct (#1571). - [BREAKING] Simplified
HostandAdviceProvidertraits (#1572). - [BREAKING] Updated Winterfell dependency to v0.11 (#1586).
- [BREAKING] Cleaned up benchmarks and examples in the
miden-vmcrate (#1587) - [BREAKING] Switched to
thiserror2.0 derive errors and refactored errors (#1588). - Moved handling of
FalconSigToStackevent from system event handlers to theDefaultHost(#1630).
- Added options
--kernel,--debugand--outputtomiden bundle(#1447). - Added
miden_core::mast::MastForest::advice_mapto load it into the advice provider before theMastForestexecution (#1574). - Optimized the computation of the DEEP queries in the recursive verifier (#1594).
- Added validity checks for the inputs to the recursive verifier (#1596).
- Allow multiple memory reads in the same clock cycle (#1626)
- Improved Falcon signature verification (#1623).
- Added
miden-mast-packagecrate withPackagetype to represent a compiled Miden program/library (#1544).
- Added
miden_core::utils::sync::racy_lockmodule (#1463). - Updated
miden_core::utilsto re-exportstd::sync::LazyLockandracy_lock::RacyLock as LazyLockfor std and no_std environments, respectively (#1463). - Debug instructions can be enabled in the cli
runcommand using--debugflag (#1502). - Added support for procedure annotation (attribute) syntax to Miden Assembly (#1510).
- Make
miden-prover::prove()method conditionally asynchronous (#1563). - Update and sync the recursive verifier (#1575).
- [BREAKING] Wrapped
MastForests inProgramandLibrarystructs inArc(#1465). MastForestBuilder: useMastNodeIdinstead of MAST root to uniquely identify procedures (#1473).- Made the undocumented behavior of the VM with regard to undefined behavior of u32 operations, stricter (#1480).
- Introduced the
Emitinstruction (#1496). - [BREAKING] ExecutionOptions::new constructor requires a boolean to explicitly set debug mode (#1502).
- [BREAKING] The
runand theprovecommands in the cli will accept--traceflag instead of--tracing(#1502). - Migrated to new padding rule for RPO (#1343).
- Migrated to
miden-cryptov0.11.0 (#1343). - Implemented
MastForestmerging (#1534). - Rename
EqHashtoMastNodeFingerprintand make itpub(#1539). - Updated Winterfell dependency to v0.10 (#1533).
- [BREAKING]
DYNoperation now expects a memory address pointing to the procedure hash (#1535). - [BREAKING]
DYNCALLoperation fixed, and now expects a memory address pointing to the procedure hash (#1535). - Permit child
MastNodeIds to exceed theMastNodeIds of their parents (#1542). - Don't validate export names on
Librarydeserialization (#1554) - Compile advice injectors down to
Emitoperations (#1581)
- Fixed an issue with formatting of blocks in Miden Assembly syntax
- Fixed the construction of the block hash table (#1506)
- Fixed a bug in the block stack table (#1511) (#1512) (#1557)
- Fixed the construction of the chiplets virtual table (#1514) (#1556)
- Fixed the construction of the chiplets bus (#1516) (#1525)
- Decorators are now allowed in empty basic blocks (#1466)
- Return an error if an instruction performs 2 memory accesses at the same memory address in the same cycle (#1561)
- Added
PartialEq,Eq,SerializeandDeserializetoAdviceMapandAdviceInputsstructs (#1494).
- Updated
MastForest::read_fromto deserialize without computing node hashes unnecessarily (#1453). - Assembler: Merge contiguous basic blocks (#1454).
- Assembler: Add a threshold number of operations after which we stop merging more in the same block (#1461).
- Added
new_unsafe()constructors to MAST node types which do not compute node hashes (#1453). - Consolidated
BasicBlockNodeconstructors and converted assert flow toMastForestError::EmptyBasicBlock(#1453).
- Fixed an issue with registering non-local procedures in
MemMastForestStore(#1462). - Added a check for circular external node lookups in the processor (#1464).
- Added support for executing
Dynnodes from external MAST forests (#1455).
- Added
with-debug-infofeature tomiden-stdlib(#1445). - Added
Assembler::add_modules_from_dir()method (#1445). - [BREAKING] Implemented building of multi-module kernels (#1445).
- [BREAKING] Replaced
SourceManagerparameter withAssemblerinLibrary::from_dir(#1445). - [BREAKING] Moved
LibraryandKernelLibraryexports to the root of themiden-assemblycrate. (#1445). - [BREAKING] Depth of the input and output stack was restricted to 16 (#1456).
- Removed linear search of trace rows from
BlockHashTableRow::table_init()(#1439). - Exposed some pretty printing internals for
MastNode(#1441). - Made
KernelLibraryimplCloneandAsRef<Library>(#1441). - Added serialization to the
Programstruct (#1442).
- [BREAKING] Removed serialization of AST structs (#1442).
- Added source location tracking to assembled MAST (#1419).
- Added error codes support for the
mtree_verifyinstruction (#1328). - Added support for immediate values for
lt,lte,gt,gtecomparison instructions (#1346). - Added support for immediate values for
u32lt,u32lte,u32gt,u32gte,u32minandu32maxcomparison instructions (#1358). - Added support for the
nopinstruction, which corresponds to the VM opcode of the same name, and has the same semantics. - Added support for the
if.falseinstruction, which can be used in the same manner asif.true - Added support for immediate values for
u32and,u32or,u32xorandu32notbitwise instructions (#1362). - [BREAKING] Assembler: add the ability to compile MAST libraries, and to assemble a program using compiled libraries (#1401)
- Changed MAST to a table-based representation (#1349).
- Introduced
MastForestStore(#1359). - Adjusted prover's metal acceleration code to work with 0.9 versions of the crates (#1357).
- Relaxed the parser to allow one branch of an
if.(true|false)to be empty. - Optimized
std::sys::truncate_stuckprocedure (#1384). - Updated CI and Makefile to standardize it across Miden repositories (#1342).
- Add serialization/deserialization for
MastForest(#1370). - Updated CI to support
CHANGELOG.mdmodification checking andno changeloglabel (#1406). - Introduced
MastForestErrorto enforceMastForestnode count invariant (#1394). - Added functions to
MastForestBuilderto allow ensuring of nodes with fewer LOC (#1404). - [BREAKING] Made
Assemblersingle-use (#1409). - Removed
ProcedureCachefrom the assembler (#1411). - Added functions to
MastForestandMastForestBuilderto add and ensure nodes with fewer LOC (#1404, #1412). - Added
Assembler::assemble_library()andAssembler::assemble_kernel()(#1413, #1418). - Added
miden_core::prettier::pretty_print_csvhelper, for formatting of iterators overPrettyPrintvalues as comma-separated items. - Added source code management primitives in
miden-core(#1419). - Added
make test-fastandmake test-skip-proptestsMakefile targets for faster testing during local development. - Added
ProgramFile::read_withconstructor that takes aSourceManagerimpl to use for source management. - Added
RowIndex(u32)(#1408).
- When using
if.(true|false) .. end, the parser used to emit an empty block for the branch that was elided. The parser now emits a block containing a singlenopinstruction instead. - [BREAKING]
internalsconfiguration feature was renamed totesting(#1399). - The
AssemblyOpdecorator now contains an optionalLocation(#1419) - The
Assemblernow requires passing in aArc<dyn SourceManager>, for use in rendering diagnostics. - The
Module::parse_fileandModule::parse_strfunctions have been removed in favor of callingModule::parserand then using theModuleParsermethods. - The
Compiletrait now requires passing aSourceManagerreference along with the item to be compiled. - Update minimum supported Rust version to 1.80 (#1425).
- Made
debugmode the default in the CLI. Added--releaseflag to disable debugging instead of having to enable it. (#1728)
- Skip writing MASM documentation to file when building on docs.rs (#1341).
- Remove usage of
group_vector_elements()fromcombine_blocks()(#1331).
- Allowed enabling debug mode via
ExecutionOptions(#1316).
- Added additional trait implementations to error types (#1306).
- [BREAKING] The package
miden-vmcrate was renamed frommidentomiden-vm. Now the package and crate names match (#1271).
- Added
init_no_paddingprocedure tostd::crypto::hashes::native(#1313). - [BREAKING]
nativemodule was renamed to therpo,hash_memoryprocedure was renamed to thehash_memory_words(#1368). - Added
hash_memoryprocedure tostd::crypto::hashes::rpo(#1368).
- Removed unused
find_lone_leaf()function from the Advice Provider (#1262). - [BREAKING] Changed fields type of the
StackOutputsstruct fromVec<u64>toVec<Felt>(#1268). - [BREAKING] Migrated to
miden-cryptov0.9.0 (#1287).
- Expanded capabilities of the
debugdecorator. Addeddebug.memanddebug.localvariations (#1103). - Introduced the
emit.<event_id>assembly instruction (#1119). - Introduced the
procref.<proc_name>assembly instruction (#1113). - Added the ability to use constants as counters in
repeatloops (#1124). - [BREAKING] Removed all
checkedversions of the u32 instructions. Renamed alluncheckedversions (#1115). - Introduced the
u32clz,u32ctz,u32clo,u32ctoandilog2assembly instructions (#1176). - Added support for hexadecimal values in constants (#1199).
- Added the
RCombBaseinstruction (#1216).
- Introduced
std::utilsmodule withis_empty_wordprocedure. Refactoredstd::collections::smtandstd::collections::smt64to use the procedure (#1107). - [BREAKING] Removed
checkedversions of the instructions in thestd::math::u64module (#1142). - Introduced
clz,ctz,cloandctoinstructions in thestd::math::u64module (#1179). - [BREAKING] Refactored
std::collections::smtto useSimpleSmt-based implementation (#1215). - [BREAKING] Removed
std::collections::smt64(#1249)
- Introduced the
Eventdecorator and an associatedon_eventhandler on theHosttrait (#1119). - Added methods
StackOutputs::get_stack_item()andStackOutputs::get_stack_word()(#1155). - Added Tracing logger to the VM (#1139).
- Refactored auxiliary trace construction (#1140).
- [BREAKING] Optimized
u32ltinstruction (#1193) - Added
on_assert_failed()method to the Host trait (#1197). - Added support for handling
traceinstruction in theHostinterface (#1198). - Updated Winterfell dependency to v0.8 (#1234).
- Increased min version of
rustcto 1.75.
- Introduced the
!usecommand for the Miden REPL (#1162). - Introduced a
BLAKE3hashing example (#1180).
- Added ability to attach doc comments to re-exported procedures (#994).
- Added support for nested modules (#992).
- Added support for the arithmetic expressions in constant values (#1026).
- Added support for module aliases (#1037).
- Added
adv.insert_hpermdecorator (#1042). - Added
adv.push_smtpeekdecorator (#1056). - Added
debugdecorator (#1069). - Refactored
pushinstruction so now it parses long hex string in little-endian (#1076).
- Implemented ability to output compiled
.masbfiles to disk (#1102).
- Simplified range checker and removed 1 main and 1 auxiliary trace column (#949).
- Migrated range checker lookups to use LogUp and reduced the number of trace columns to 2 main and 1 auxiliary (#1027).
- Added
get_mapped_values()andget_store_subset()methods to theAdviceProvidertrait (#987). - [BREAKING] Added options to specify maximum number of cycles and expected number of cycles for a program (#998).
- Improved handling of invalid/incomplete parameters in
StackOutputsconstructors (#1010). - Allowed the assembler to produce programs with "phantom" calls (#1019).
- Added
TraceLenSummarystruct which holds information about traces lengths to theExecutionTrace(#1029). - Imposed the 2^32 limit for the memory addresses used in the memory chiplet (#1049).
- Supported
PartialMerkleTreeas a secret input in.inputfile (#1072). - [BREAKING] Refactored
AdviceProviderinterface intoHostinterface (#1082).
- Completed
std::collections::smtmodule by implementinginsertandsetprocedures (#1036, #1038, #1046). - Added new module
std::crypto::dsa::rpo_falcon512to support Falcon signature verification (#1000, #1094)
- Fixed
no-stdcompilation formiden-core,miden-assembly, andmiden-processorcrates.
- Added new instructions:
mtree_verify. - [BREAKING] Refactored
adv.memdecorator to use parameters from operand stack instead of immediate values. - [BREAKING] Refactored
mem_streamandadv_pipeinstructions. - Added constant support for memory operations.
- Enabled incremental compilation via
compile_in_context()method. - Exposed ability to compile individual modules publicly via
compile_module()method. - [BREAKING] Refactored advice injector instructions.
- Implemented procedure re-exports from modules.
- Implemented support for all types of nondeterministic inputs (advice stack, advice map, and Merkle store).
- Implemented ability to generate proofs suitable for recursion.
- Added new module:
std::collections::smt(onlysmt::getavailable). - Added new module:
std::collections::mmr. - Added new module:
std::collections::smt64. - Added several convenience procedures to
std::memmodule. - [BREAKING] Added procedures to compute 1-to-1 hashes in
std::crypto::hashesmodule and renamed existing procedures to remove ambiguity. - Greatly optimized recursive STARK verifier (reduced number of cycles by 6x - 8x).
- Moved test framework from
miden-vmcrate tomiden-test-utilscrate. - Updated Winterfell dependency to v0.6.4.
- Added support for GPU acceleration on Apple silicon (Metal).
- Added source locations to all AST nodes.
- Added 8 more instruction slots to the VM (not yet used).
- Completed kernel ROM trace generation.
- Implemented ability to record advice provider requests to the initial dataset via
RecAdviceProvider.
- Renamed
ProgramInfotoExecutionDetailssince there is anotherProgramInfostruct in the source code. - [BREAKING] renamed
stack_initandadvice_tapetooperand_stackandadvice_stackin input files. - Enabled specifying additional advice provider inputs (i.e., advice map and Merkle store) via the input files.
- Added new instructions:
is_odd,assert_eqw,mtree_merge. - [BREAKING] Removed
mtree_cwminstruction. - Added
breakpointinstruction to help with debugging.
- [BREAKING] Renamed
Read,ReadWoperations intoAdvPop,AdvPopW. - [BREAKING] Replaced
AdviceSetwithMerkleStore. - Updated Winterfell dependency to v0.6.0.
- [BREAKING] Renamed
Read/ReadWoperations intoAdvPop/AdvPopW.
- [BREAKING] Converted
AdviceProviderinto a trait which can be provided to the processor. - Added a decorator for interpolating polynomials over degree 2 extension field (
ext2intt). - Added
AdviceSourceenum for greater future flexibility of advice injectors.
- Added
debugsubcommand to enable stepping through program execution forward/backward. - Added cycle count to the output of program execution.
- Added support for constant declarations.
- Added new instructions:
clk,ext2*,fri_ext2fold4,hash,u32checked_popcnt,u32unchecked_popcnt. - [BREAKING] Renamed
rppermtohpermandrphashtohmerge. - Removed requirement that code blocks must be non-empty (i.e., allowed empty blocks).
- [BREAKING] Refactored
mtree_setandmtree_cwminstructions to leave the old value on the stack. - [BREAKING] Replaced
ModuleProviderwithLibraryto improve 3rd party library support.
- [BREAKING] Refactored
execute(),prove(),verify()functions to takeStackInputsas one of the parameters. - [BREAKING] Refactored
prove()function to returnExecutionProof(which is a wrapper forStarkProof). - [BREAKING] Refactored
verify()function to takeProgramInfo,StackInputs, andExecutionProofas parameters and return au32indicating security level of the verified proof.
- Added
std::mem::memcopyprocedure for copying regions of memory. - Added
std::crypto::fri::frie2f4::verifyfor verifying FRI proofs over degree 2 extension field.
- [BREAKING] Migrated to Rescue Prime Optimized hash function.
- Updated Winterfell backend to v0.5.1
- Implemented
calloperation for context-isolated function calls. - Added support for custom kernels.
- Implemented
syscalloperation for kernel calls, and added a newcallerinstruction for accessing the hash of the calling function. - Implemented
mem_streamoperation for fast hashing of memory regions. - Implemented
adv_pipeoperation for fast "unhashing" of inputs into memory. - Added support for unlimited number of stack inputs/outputs.
- [BREAKING] Redesigned Miden assembly input/output instructions for environment, random access memory, local memory, and non-deterministic "advice" inputs.
- [BREAKING] Reordered the output stack for Miden assembly cryptographic operations
mtree_setandmtree_getto improve efficiency. - Refactored the advice provider to add support for advice maps, and added the
adv.memdecorator for copying memory regions into the advice map. - [BREAKING] Refactored the Assembler and added support for module providers. (Standard library is no longer available by default.)
- Implemented AIR constraints for the stack component.
- Added Miden REPL tool.
- Improved performance with various internal refactorings and optimizations.
- Implemented new decoder which removes limitations on the depth of control flow logic.
- Introduced chiplet architecture to offload complex computations to specialized modules.
- Added read-write random access memory.
- Added support for operations with 32-bit unsigned integers.
- Redesigned advice provider to include Merkle path advice sets.
- Changed base field of the VM to the prime field with modulus 2^64 - 2^32 + 1.
- Initial release (migration of the original Distaff VM codebase to Winterfell backend).