1.0.0-beta.1 (2024-12-20)
⚠ BREAKING CHANGES
- stdlib: Remove Schnorr (#6749)
- remove SchnorrVerify opcode (https://github.com/AztecProtocol/aztec-packages/pull/9897)
- several format string fixes and improvements (#6703)
- remove
ec
module from stdlib (#6612) - Disallow
#[export]
on associated methods (#6626)
Features
nargo test -q
(or nargo test --format terse
) (#6776) (919149d)std::hint::black_box
function. (#6529) (237e8fa)- Add
(x | 1)
optimization for booleans (#6795) (feec2a1) - Add
BoundedVec::from_parts
and BoundedVec::from_parts_unchecked
(#6691) (768aa7c) - Add
nargo test --format json
(#6796) (eb975ab) - Add a warning when using unsafe blocks without safety comments (#6860) (5c00a79)
- Add memory report into the CI (#6630) (6acef6d)
- Allow filtering which SSA passes are printed (#6636) (50f4aa7)
- Allow ignoring test failures from foreign calls (#6660) (e3a0914)
- Better error message when trying to invoke struct function field (#6661) (ea7c04a)
- ci: Initial compilation report on test_programs (#6731) (b3c04f0)
- cli: Run command on the package closest to the current directory (#6752) (f45b354)
- cli: Verify
return
against ABI and Prover.toml
(#6765) (5795a09) - comptime: Implement blackbox functions in comptime interpreter (#6551) (10a9f81)
- Configurable external check failures (#6810) (73ccd45)
- Flatten nested if-else statements with equivalent conditions (#6875) (1a0a5f6)
- Improve parser recovery of constructor field with '::' instead of ':' (#6701) (c400543)
- Order attribute execution by their source ordering (#6326) (852155d)
- perf: Track last loads per block in mem2reg and remove them if possible (#6088) (624ae6c)
- Reduce memory consumption by storing array length as
u32
during SSA (#6606) (6196d05) - Replace
eval_global_as_array_length
with type/interpreter evaluation (#6469) (ddb4673) - Replace quadratic removal of
rc
instructions (#6705) (7619da5) - Replace quadratic removal of rc instructions (https://github.com/AztecProtocol/aztec-packages/pull/10416) (66d3275)
- Revert changes to
ValueMerger
and Instruction::IfElse
(#6673) (f81244c) - Several
nargo test
improvements (#6728) (1b0dd41) - Show printable byte arrays as byte strings in SSA (#6709) (fc11b63)
- Simplify
jmpif
s by reversing branches if condition is negated (#5891) (ba7a568) - ssa: Bring back tracking of RC instructions during DIE (#6783) (bc03152)
- ssa: Deduplicate intrinsics with predicates (#6615) (53f16c7)
- ssa: Hoist MakeArray instructions during loop invariant code motion (#6782) (b88db67)
- ssa: Hoisting of array get using known induction variable maximum (#6639) (26d2351)
- ssa: Implement missing brillig constraints SSA check (#6658) (c5a4caf)
- ssa: Option to set the maximum acceptable Brillig bytecode increase in unrolling (#6641) (4ff3081)
- ssa: Simplify array get from set that writes to the same dynamic index (#6684) (304403f)
- Sync from aztec-packages (#6634) (aa143a7)
- Sync from aztec-packages (#6656) (594aad2)
- Sync from aztec-packages (#6824) (b3bca76)
- Sync from noir (https://github.com/AztecProtocol/aztec-packages/pull/10307) (66d3275)
- test: Check that
nargo::ops::transform_program
is idempotent (#6694) (9f3e0e6) - tooling: Skip program transformation when loaded from cache (#6689) (7feb658)
- Warn on unnecessary unsafe blocks (#6867) (a97402a)
Bug Fixes
- Allow empty loop headers (#6736) (332ba79)
- Allow multiple
_
parameters, and disallow _
as an expression you can read from (#6657) (d80a9d7) - Always return an array of
u8
s when simplifying Intrinsic::ToRadix
calls (#6663) (59c0c35) - Correct signed integer handling in
noirc_abi
(#6638) (ecaf63d) - Correct types returned by constant EC operations simplified within SSA (#6652) (eec5970)
- Detect cycles in globals (#6859) (0d7642c)
- Disable failure persistance in nargo test fuzzing (#6777) (68ff7bd)
- Disallow
#[export]
on associated methods (#6626) (7b56904) - Do not merge expressions that contain output witnesses (#6757) (f9abf72)
- Do not warn on unused functions marked with #[export] (#6625) (30f8378)
- Don't deduplicate binary math of unsigned types (#6848) (ee0754b)
- Don't remove necessary RC instructions in DIE pass (#6585) (440d94d)
- Double alias in path (#6855) (82f595b)
- Git dependency trailing slash (#6725) (df71df7)
- Implement
as_field
and from_field
in the interpreter (#6829) (f037c36) - Improve type error when indexing a variable of unknown type (#6744) (909b22b)
- LSP auto-import text indent (#6699) (bbe7564)
- LSP code action wasn't triggering on beginning or end of identifier (#6616) (1b910bc)
- LSP: Use generic self type to narrow down methods to complete (#6617) (454b77b)
- Map entry point indexes after all ssa passes (#6740) (1b6e26b)
- Minimal change to avoid reverting entire PR #6685 (#6778) (0925a33)
- Optimize array ref counts to copy arrays much less often (#6685) (24cc19e)
- Optimizer to keep track of changing opcode locations (#6781) (13c41d2)
- Parser would hand on function type with colon in it (#6764) (9d7aadc)
- Prevent hoisting binary instructions which can overflow (#6672) (b4750d8)
- Print ssa blocks without recursion (#6715) (5ccde81)
- Println("{{}}") was printing "{{}}" instead of "{}" (#6745) (36bca82)
- Several format string fixes and improvements (#6703) (b70daf4)
- ssa: Don't deduplicate constraints in blocks that are not dominated (#6627) (b024581)
- ssa: Remove RC tracker in DIE (#6700) (f2607fd)
- ssa: Track all local allocations during flattening (#6619) (6491175)
- Typo in u128 docs (#6711) (37a4996)
- Use correct type for attribute arguments (#6640) (de3e77a)
- Use extension in docs link so it also works on GitHub (#6787) (655a3d3)
- Used signed division for signed modulo (#6635) (dace078)
Miscellaneous Chores
- Remove
ec
module from stdlib (#6612) (1e965bc) - Remove SchnorrVerify opcode (https://github.com/AztecProtocol/aztec-packages/pull/9897) (66d3275)
- stdlib: Remove Schnorr (#6749) (57ebee0)