Releases: 0xPolygonMiden/miden-vm
Releases · 0xPolygonMiden/miden-vm
v0.12.0
Highlights
- [BREAKING] Refactored memory to be element-addressable (#1598).
Changes
- [BREAKING] Resolved flag collision in
--verify
command and added functionality for optional input/output files (#1513). - [BREAKING] Refactored
MastForest
serialization/deserialization to put decorator data at the end of the binary (#1531). - [BREAKING] Refactored
Process
struct to no longer take ownership of theHost
(#1571). - [BREAKING] Converted
ProcessState
from a trait to a struct (#1571). - [BREAKING] Simplified
Host
andAdviceProvider
traits (#1572). - [BREAKING] Updated Winterfell dependency to v0.11 (#1586).
- [BREAKING] Cleaned up benchmarks and examples in the
miden-vm
crate (#1587) - [BREAKING] Switched to
thiserror
2.0 derive errors and refactored errors (#1588). - Moved handling of
FalconSigToStack
event from system event handlers to theDefaultHost
(#1630).
Enhancements
- Added options
--kernel
,--debug
and--output
tomiden bundle
(#1447). - Added
miden_core::mast::MastForest::advice_map
to load it into the advice provider before theMastForest
execution (#1574). - Optimized the computation of the DEEP queries in the recursive verifier (#1594).
- Added validity checks for the inputs to the recursive verifier (#1596).
v0.11.0
Enhancements
- Added
miden_core::utils::sync::racy_lock
module (#1463). - Updated
miden_core::utils
to re-exportstd::sync::LazyLock
andracy_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
MastForest
s inProgram
andLibrary
structs inArc
(#1465). MastForestBuilder
: useMastNodeId
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 theprove
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
toMastNodeFingerprint
and make itpub
(#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
MastNodeId
s to exceed theMastNodeId
s 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
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 toMastForestError::EmptyBasicBlock
(#1453).
Fixes
v0.10.3
v0.10.2
Enhancements
- Removed linear search of trace rows from
BlockHashTableRow::table_init()
(#1439). - Exposed some pretty printing internals for
MastNode
(#1441). - Made
KernelLibrary
implClone
andAsRef<Library>
(#1441). - Added serialization to the
Program
struct (#1442).
Changes
- [BREAKING] Removed serialization of AST structs (#1442).
v0.10.0
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
andu32max
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 asif.true
- Added support for immediate values for
u32and
,u32or
,u32xor
andu32not
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 andno changelog
label (#1406) - Introduced
MastForestError
to enforceMastForest
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
andMastForestBuilder
to add and ensure nodes with fewer LOC (#1404, #1412) - Added
Assembler::assemble_library()
andAssembler::assemble_kernel()
(#1413, #1418). - Added
miden_core::prettier::pretty_print_csv
helper, for formatting of iterators overPrettyPrint
values as comma-separated items. - Added source code management primitives in
miden-core
(#1419) - Added
make test-fast
andmake test-skip-proptests
Makefile targets for faster testing during local development. - Added
ProgramFile::read_with
constructor that takes aSourceManager
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 singlenop
instruction instead. - [BREAKING]
internals
configuration feature was renamed totesting
(#1399). - The
AssemblyOp
decorator now contains an optionalLocation
(#1419) - The
Assembler
now requires passing in aArc<dyn SourceManager>
, for use in rendering diagnostics. - The
Module::parse_file
andModule::parse_str
functions have been removed in favor of callingModule::parser
and then using theModuleParser
methods. - The
Compile
trait now requires passing aSourceManager
reference along with the item to be compiled. - Update minimum supported Rust version to 1.80 (#1425).
v0.9.2
v0.9.1
v0.9.0
Packaging
- [BREAKING] The package
miden-vm
crate was renamed frommiden
tomiden-vm
. Now the package and crate names match (#1271).
VM Internals
v0.8.0
Assembly
- 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).
Stdlib
- 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)
VM Internals
- 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.