Releases: 0xPolygonMiden/miden-vm
Releases · 0xPolygonMiden/miden-vm
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.
v0.7.0
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()
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).