Skip to content

Releases: 0xPolygonMiden/miden-vm

v0.6.0

29 Jun 05:59
Compare
Choose a tag to compare

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 and adv_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 (only smt::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 to miden-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

29 Mar 23:29
4195475
Compare
Choose a tag to compare

CLI

  • Renamed ProgramInfo to ExecutionDetails since there is another ProgramInfo struct in the source code.
  • [BREAKING] renamed stack_init and advice_tape to operand_stack and advice_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 into AdvPop, AdvPopW.
  • [BREAKING] Replaced AdviceSet with MerkleStore.
  • Updated Winterfell dependency to v0.6.0.

VM Internals

  • [BREAKING] Renamed Read/ReadW operations into AdvPop/AdvPopW.

v0.4.0

28 Feb 01:24
Compare
Choose a tag to compare

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 to hperm and rphash to hmerge.
  • Removed requirement that code blocks must be non-empty (i.e., allowed empty blocks).
  • [BREAKING] Refactored mtree_set and mtree_cwm instructions to leave the old value on the stack.
  • [BREAKING] Replaced ModuleProvider with Library to improve 3rd party library support.

Processor, Prover, and Verifier

  • [BREAKING] Refactored execute(), prove(), verify() functions to take StackInputs as one of the parameters.
  • [BREAKING] Refactored prove() function to return ExecutionProof (which is a wrapper for StarkProof).
  • [BREAKING] Refactored verify() function to take ProgramInfo, StackInputs, and ExecutionProof as parameters and return a u32 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

24 Nov 02:08
1b3549c
Compare
Choose a tag to compare
  • Implemented call operation for context-isolated function calls.
  • Added support for custom kernels.
  • Implemented syscall operation for kernel calls, and added a new caller 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 and mtree_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

08 Aug 23:17
Compare
Choose a tag to compare

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

16 Nov 08:12
Compare
Choose a tag to compare
v0.1.0 Pre-release
Pre-release

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).