Skip to content

Releases: 0xPolygonMiden/miden-vm

v0.11.0

05 Nov 04:07
c61f099
Compare
Choose a tag to compare

Enhancements

  • Added miden_core::utils::sync::racy_lock module (#1463).
  • Updated miden_core::utils to re-export std::sync::LazyLock and racy_lock::RacyLock as LazyLock for std and no_std environments, respectively (#1463).
  • Debug instructions can be enabled in the cli run command using --debug flag (#1502).
  • Added support for procedure annotation (attribute) syntax to Miden Assembly (#1510).
  • Make miden-prover::prove() method conditionally asynchronous (#1563).

Changes

  • [BREAKING] Wrapped MastForests in Program and Library structs in Arc (#1465).
  • MastForestBuilder: use MastNodeId instead 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 Emit instruction (#1496).
  • [BREAKING] ExecutionOptions::new constructor requires a boolean to explicitly set debug mode (#1502).
  • [BREAKING] The run and the prove commands in the cli will accept --trace flag instead of --tracing (#1502).
  • Migrated to new padding rule for RPO (#1343).
  • Migrated to miden-crypto v0.11.0 (#1343).
  • Implemented MastForest merging (#1534).
  • Rename EqHash to MastNodeFingerprint and make it pub (#1539).
  • Updated Winterfell dependency to v0.10 (#1533).
  • [BREAKING] DYN operation now expects a memory address pointing to the procedure hash (#1535).
  • [BREAKING] DYNCALL operation fixed, and now expects a memory address pointing to the procedure hash (#1535).
  • Permit child MastNodeIds to exceed the MastNodeIds of their parents (#1542).
  • Don't validate export names on Library deserialization (#1554)

Fixes

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

v0.10.5

21 Aug 21:16
4923e3d
Compare
Choose a tag to compare

Enhancements

  • Updated MastForest::read_from to deserialize without computing node hashes unnecessarily (#1453).
  • Assembler: Merge contiguous basic blocks (#1454).
  • Added support for executing Dyn nodes from external MAST forests (#1455).
  • Assembler: Add a threshold number of operations after which we stop merging more in the same block (#1461).

Changes

  • Added new_unsafe() constructors to MAST node types which do not compute node hashes (#1453).
  • Consolidated BasicBlockNode constructors and converted assert flow to MastForestError::EmptyBasicBlock (#1453).

Fixes

  • Fixed an issue with registering non-local procedures in MemMastForestStore (#1462).
  • Added a check for circular external node lookups in the processor (#1464).

v0.10.3

13 Aug 07:25
431f917
Compare
Choose a tag to compare

Enhancements

  • Added with-debug-info feature to miden-stdlib (#1445).
  • Added Assembler::add_modules_from_dir() method (#1445).
  • [BREAKING] Implemented building of multi-module kernels (#1445).

Changes

  • [BREAKING] Replaced SourceManager parameter with Assembler in Library::from_dir (#1445).
  • [BREAKING] Moved Library and KernelLibrary exports to the root of the miden-assembly crate. (#1445).

v0.10.2

11 Aug 08:22
d1679d6
Compare
Choose a tag to compare

Enhancements

  • Removed linear search of trace rows from BlockHashTableRow::table_init() (#1439).
  • Exposed some pretty printing internals for MastNode (#1441).
  • Made KernelLibrary impl Clone and AsRef<Library> (#1441).
  • Added serialization to the Program struct (#1442).

Changes

  • [BREAKING] Removed serialization of AST structs (#1442).

v0.10.0

07 Aug 05:25
81eaa3e
Compare
Choose a tag to compare

Features

  • Added source location tracking to assembled MAST (#1419).
  • Added error codes support for the mtree_verify instruction (#1328).
  • Added support for immediate values for lt, lte, gt, gte comparison instructions (#1346).
  • Added support for immediate values for u32lt, u32lte, u32gt, u32gte, u32min and u32max comparison instructions (#1358).
  • Added support for the nop instruction, which corresponds to the VM opcode of the same name, and has the same semantics.
  • Added support for the if.false instruction, which can be used in the same manner as if.true
  • Added support for immediate values for u32and, u32or, u32xor and u32not bitwise instructions (#1362).
  • [BREAKING] Assembler: add the ability to compile MAST libraries, and to assemble a program using compiled libraries (#1401)

Enhancements

  • 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_stuck procedure (#1384).
  • Updated CI and Makefile to standardize it across Miden repositories (#1342).
  • Add serialization/deserialization for MastForest (#1370)
  • Updated CI to support CHANGELOG.md modification checking and no changelog label (#1406)
  • Introduced MastForestError to enforce MastForest node count invariant (#1394)
  • Added functions to MastForestBuilder to allow ensuring of nodes with fewer LOC (#1404)
  • [BREAKING] Made Assembler single-use (#1409).
  • Removed ProcedureCache from the assembler (#1411).
  • Added functions to MastForest and MastForestBuilder to add and ensure nodes with fewer LOC (#1404, #1412)
  • Added Assembler::assemble_library() and Assembler::assemble_kernel() (#1413, #1418).
  • Added miden_core::prettier::pretty_print_csv helper, for formatting of iterators over PrettyPrint values as comma-separated items.
  • Added source code management primitives in miden-core (#1419)
  • Added make test-fast and make test-skip-proptests Makefile targets for faster testing during local development.
  • Added ProgramFile::read_with constructor that takes a SourceManager impl to use for source management.
  • Added RowIndex(u32) (#1408).

Changed

  • 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 single nop instruction instead.
  • [BREAKING] internals configuration feature was renamed to testing (#1399).
  • The AssemblyOp decorator now contains an optional Location (#1419)
  • The Assembler now requires passing in a Arc<dyn SourceManager>, for use in rendering diagnostics.
  • The Module::parse_file and Module::parse_str functions have been removed in favor of calling Module::parser and then using the ModuleParser methods.
  • The Compile trait now requires passing a SourceManager reference along with the item to be compiled.
  • Update minimum supported Rust version to 1.80 (#1425).

v0.9.2

25 Apr 22:54
9abd8d1
Compare
Choose a tag to compare
  • Allowed enabling debug mode via ExecutionOptions (#1316).

v0.9.1

04 Apr 16:46
Compare
Choose a tag to compare
  • Added additional trait implementations to error types (#1306).

v0.9.0

04 Apr 15:45
17555ad
Compare
Choose a tag to compare

Packaging

  • [BREAKING] The package miden-vm crate was renamed from miden to miden-vm. Now the package and crate names match (#1271).

VM Internals

  • Removed unused find_lone_leaf() function from the Advice Provider (#1262).
  • [BREAKING] Changed fields type of the StackOutputs struct from Vec<u64> to Vec<Felt> (#1268).
  • [BREAKING] Migrated to miden-crypto v0.9.0 (#1287).

v0.8.0

27 Feb 00:16
3a957f7
Compare
Choose a tag to compare

Assembly

  • Expanded capabilities of the debug decorator. Added debug.mem and debug.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 all unchecked versions (#1115).
  • Introduced the u32clz, u32ctz, u32clo, u32cto and ilog2 assembly instructions (#1176).
  • Added support for hexadecimal values in constants (#1199).
  • Added the RCombBase instruction (#1216).

Stdlib

  • Introduced std::utils module with is_empty_word procedure. Refactored std::collections::smt
    and std::collections::smt64 to use the procedure (#1107).
  • [BREAKING] Removed checked versions of the instructions in the std::math::u64 module (#1142).
  • Introduced clz, ctz, clo and cto instructions in the std::math::u64 module (#1179).
  • [BREAKING] Refactored std::collections::smt to use SimpleSmt-based implementation (#1215).
  • [BREAKING] Removed std::collections::smt64 (#1249)

VM Internals

  • Introduced the Event decorator and an associated on_event handler on the Host trait (#1119).
  • Added methods StackOutputs::get_stack_item() and StackOutputs::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 the Host interface (#1198).
  • Updated Winterfell dependency to v0.8 (#1234).
  • Increased min version of rustc to 1.75.

v0.7.0

11 Oct 23:55
Compare
Choose a tag to compare

Assembly

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

CLI

  • Implemented ability to output compiled .masb files to disk (#1102).

VM Internals

  • 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() and get_store_subset() methods to the AdviceProvider 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 the ExecutionTrace (#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 into Host interface (#1082).

Stdlib

  • Completed std::collections::smt module by implementing insert and set procedures (#1036, #1038, #1046).
  • Added new module std::crypto::dsa::rpo_falcon512 to support Falcon signature verification (#1000, #1094).