Releases: 0xPolygonMiden/miden-vm
Releases Β· 0xPolygonMiden/miden-vm
v0.6.0
Assembly
- 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.
CLI
- Implemented support for all types of nondeterministic inputs (advice stack, advice map, and Merkle store).
- Implemented ability to generate proofs suitable for recursion.
Stdlib
- 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).
VM Internals
- 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
.
v0.5.0
CLI
- 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.
Assembly
- Added new instructions:
is_odd
,assert_eqw
,mtree_merge
. - [BREAKING] Removed
mtree_cwm
instruction. - Added
breakpoint
instruction to help with debugging.
VM Internals
- [BREAKING] Renamed
Read
,ReadW
operations intoAdvPop
,AdvPopW
. - [BREAKING] Replaced
AdviceSet
withMerkleStore
. - Updated Winterfell dependency to v0.6.0.
VM Internals
- [BREAKING] Renamed
Read/ReadW
operations intoAdvPop/AdvPopW
.
v0.4.0
Advice provider
- [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.
CLI
- Added
debug
subcommand to enable stepping through program execution forward/backward. - Added cycle count to the output of program execution.
Assembly
- 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.
Processor, Prover, and Verifier
- [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.
Stdlib
- 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.
VM Internals
- [BREAKING] Migrated to Rescue Prime Optimized hash function.
- Updated Winterfell backend to v0.5.1
v0.3.0
- 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.
- Updated Winterfell dependency to v0.4.2
v0.2.0
This release constitutes a complete redesign of the VM.
The most important changes are:
- 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.
v0.1.0
This is the first release of Miden VM. It contains migration of the original Distaff VM codebase to Winterfell backend, as well as code organization refactoring (e.g., splitting the codebase into multiple crates).