- Expanded capabilities of the
debug
decorator. Addeddebug.mem
anddebug.local
variations (#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
repeat
loops (#1124). - [BREAKING] Removed all
checked
versions of the u32 instructions. Renamed allunchecked
versions (#1115). - Introduced the
u32clz
,u32ctz
,u32clo
,u32cto
andilog2
assembly instructions (#1176). - Added support for hexadecimal values in constants (#1199).
- Added the
RCombBase
instruction (#1216).
- Introduced
std::utils
module withis_empty_word
procedure. Refactoredstd::collections::smt
andstd::collections::smt64
to use the procedure (#1107). - [BREAKING] Removed
checked
versions of the instructions in thestd::math::u64
module (#1142). - Introduced
clz
,ctz
,clo
andcto
instructions in thestd::math::u64
module (#1179). - [BREAKING] Refactored
std::collections::smt
to useSimpleSmt
-based implementation (#1215). - [BREAKING] Removed
std::collections::smt64
(#1249)
- Introduced the
Event
decorator and an associatedon_event
handler on theHost
trait (#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
u32lt
instruction (#1193) - Added
on_assert_failed()
method to the Host trait (#1197). - Added support for handling
trace
instruction in theHost
interface (#1198). - Updated Winterfell dependency to v0.8 (#1234).
- Increased min version of
rustc
to 1.75.
- Introduced the
!use
command for the Miden REPL (#1162). - Introduced a
BLAKE3
hashing 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_hperm
decorator (#1042). - Added
adv.push_smtpeek
decorator (#1056). - Added
debug
decorator (#1069). - Refactored
push
instruction so now it parses long hex string in little-endian (#1076).
- Implemented ability to output compiled
.masb
files 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 theAdviceProvider
trait (#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
StackOutputs
constructors (#1010). - Allowed the assembler to produce programs with "phantom" calls (#1019).
- Added
TraceLenSummary
struct 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
PartialMerkleTree
as a secret input in.input
file (#1072). - [BREAKING] Refactored
AdviceProvider
interface intoHost
interface (#1082).
- Completed
std::collections::smt
module by implementinginsert
andset
procedures (#1036, #1038, #1046). - Added new module
std::crypto::dsa::rpo_falcon512
to support Falcon signature verification (#1000, #1094)
- Fixed
no-std
compilation formiden-core
,miden-assembly
, andmiden-processor
crates.
- Added new instructions:
mtree_verify
. - [BREAKING] Refactored
adv.mem
decorator to use parameters from operand stack instead of immediate values. - [BREAKING] Refactored
mem_stream
andadv_pipe
instructions. - 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::get
available). - Added new module:
std::collections::mmr
. - Added new module:
std::collections::smt64
. - Added several convenience procedures to
std::mem
module. - [BREAKING] Added procedures to compute 1-to-1 hashes in
std::crypto::hashes
module and renamed existing procedures to remove ambiguity. - Greatly optimized recursive STARK verifier (reduced number of cycles by 6x - 8x).
- Moved test framework from
miden-vm
crate tomiden-test-utils
crate. - 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
ProgramInfo
toExecutionDetails
since there is anotherProgramInfo
struct in the source code. - [BREAKING] renamed
stack_init
andadvice_tape
tooperand_stack
andadvice_stack
in 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_cwm
instruction. - Added
breakpoint
instruction to help with debugging.
- [BREAKING] Renamed
Read
,ReadW
operations intoAdvPop
,AdvPopW
. - [BREAKING] Replaced
AdviceSet
withMerkleStore
. - Updated Winterfell dependency to v0.6.0.
- [BREAKING] Renamed
Read/ReadW
operations intoAdvPop/AdvPopW
.
- [BREAKING] Converted
AdviceProvider
into a trait which can be provided to the processor. - Added a decorator for interpolating polynomials over degree 2 extension field (
ext2intt
). - Added
AdviceSource
enum for greater future flexibility of advice injectors.
- Added
debug
subcommand 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
rpperm
tohperm
andrphash
tohmerge
. - Removed requirement that code blocks must be non-empty (i.e., allowed empty blocks).
- [BREAKING] Refactored
mtree_set
andmtree_cwm
instructions to leave the old value on the stack. - [BREAKING] Replaced
ModuleProvider
withLibrary
to improve 3rd party library support.
- [BREAKING] Refactored
execute()
,prove()
,verify()
functions to takeStackInputs
as one of the parameters. - [BREAKING] Refactored
prove()
function to returnExecutionProof
(which is a wrapper forStarkProof
). - [BREAKING] Refactored
verify()
function to takeProgramInfo
,StackInputs
, andExecutionProof
as parameters and return au32
indicating security level of the verified proof.
- Added
std::mem::memcopy
procedure for copying regions of memory. - Added
std::crypto::fri::frie2f4::verify
for verifying FRI proofs over degree 2 extension field.
- [BREAKING] Migrated to Rescue Prime Optimized hash function.
- Updated Winterfell backend to v0.5.1
- Implemented
call
operation for context-isolated function calls. - Added support for custom kernels.
- Implemented
syscall
operation for kernel calls, and added a newcaller
instruction for accessing the hash of the calling function. - Implemented
mem_stream
operation for fast hashing of memory regions. - Implemented
adv_pipe
operation 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_set
andmtree_get
to improve efficiency. - Refactored the advice provider to add support for advice maps, and added the
adv.mem
decorator 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).