v0.32.0
0.32.0 (2024-07-18)
⚠ BREAKING CHANGES
- constant inputs for blackbox (AztecProtocol/aztec-packages#7222)
- error on too large integer value (#5371)
- rename struct-specific TypeDefinition -> StructDefinition (#5356)
- frontend: Explicit numeric generics and type kinds (#5155)
Features
mod.nr
entrypoint (#5039) (076fe0a)static_assert
builtin (#5342) (ef44270)- Add
map
,fold
,reduce
,any
, andall
for slices (#5331) (03e25b4) - Add CLI argument for debugging comptime blocks (#5192) (0b74a18)
- Add comptime support for
modulus_*
compiler builtins (#5530) (5bbce79) - Add debug codelens action (#5474) (6bcdac4)
- Add fuzzer for Noir programs (#5251) (e100017)
- Add gate profiler for noir circuits (AztecProtocol/aztec-packages#7004) (083070e)
- Add more slice methods to the stdlib (#5424) (4020e77)
- Add opcodes flamegraph and refactor gates flamegraph (AztecProtocol/aztec-packages#7282) (32029f9)
- Add support for fieldable in events (AztecProtocol/aztec-packages#7310) (3f71169)
- Add support for usage of
super
in import paths (#5502) (256509e) - Add support for wildcard types (#5275) (7445efb)
- Add TraitConstraint type (#5499) (30cb65a)
- Add unquote function (#5497) (2947aba)
- Allow arguments to attribute functions (#5494) (a33cafc)
- Allow comptime attributes on traits & functions (#5496) (b59a29e)
- Apply
no_predicates
in stdlib (#5454) (24d26c0) - Build releases for
aarch64-unknown-linux-gnu
target (#5289) (f35614a) - Build simple dictionary from inspecting ACIR program (#5264) (508e677)
- Constant inputs for blackbox (AztecProtocol/aztec-packages#7222) (fb97bb9)
- Detect subgraphs that are completely independent from inputs or outputs (#5402) (7ea83a9)
- Disable nargo color output if stderr is tty (#5346) (554dd6b)
- Error on too large integer value (#5371) (0c4fffa)
- frontend: Explicit numeric generics and type kinds (#5155) (d4e03d0)
- frontend: Where clause on impl (#5320) (cf938bc)
- Handle ACIR calls in the debugger (#5051) (0541568)
- Implement comptime support for
array_len
builtin (#5272) (c91186a) - Implement comptime support for
as_slice
builtin (#5276) (9db65d8) - Implement trait dispatch in the comptime interpreter (#5376) (8aa5b2e)
- Insert trait impls into the program from type annotations (#5327) (efdd818)
- Let
should_fail_with
check that the failure reason contains the expected message (#5319) (cb9db55) - Let LSP always work in a Noir workspace if there's any (#5461) (e0d7833)
- Lsp "find all references" (#5395) (ce1994c)
- Lsp "go to definition" for modules (#5406) (3e7f1f2)
- LSP document symbol (#5532) (1fabcde)
- LSP hover (#5491) (010c835)
- LSP inlay hints for let and global (#5510) (43f5b8d)
- Lsp rename struct (#5380) (ee8b0cd)
- Lsp rename/find-all-references for globals (#5415) (fa9b444)
- Lsp rename/find-all-references for local variables (#5439) (bb6913a)
- Lsp rename/find-all-references for struct members (#5443) (a6d213d)
- Lsp rename/find-all-references for traits (#5409) (bf3a75a)
- Lsp rename/find-all-references for type aliases (#5414) (24c621f)
- lsp: Allow function rename (#4294) (3d86dc6)
- Make macros operate on token streams instead of AST nodes (#5301) (7689d59)
- nargo: Default expression width field in
Nargo.toml
(#5505) (dea6b32) - optimization: Deduplicate more instructions (#5457) (c47242a)
- Prefix operator overload trait dispatch (#5423) (a3bb09e)
- Remove duplicated array reads at constant indices (#5445) (82a67a0)
- Remove redundant
EnableSideEffects
instructions (#5440) (e153ecb) - Rename struct-specific TypeDefinition -> StructDefinition (#5356) (7ffccf7)
- Run
comptime
code from annotations on a type definition (#5256) (6cbe6a0) - Skip reading values immediately after it being written into an array (#5449) (141ecdd)
- stdlib: Update stdlib to use explicit numeric generics (#5306) (8456185)
- Sync from aztec-packages (#5347) (47b621f)
- Sync from aztec-packages (#5377) (7b77bbf)
- Sync from noir (AztecProtocol/aztec-packages#7257) (32029f9)
- Sync from noir (AztecProtocol/aztec-packages#7288) (322f863)
- Sync from noir (AztecProtocol/aztec-packages#7308) (322f863)
- Sync from noir (AztecProtocol/aztec-packages#7332) (3f71169)
- Sync from noir (AztecProtocol/aztec-packages#7352) (98e72ac)
- Sync from noir (AztecProtocol/aztec-packages#7392) (fb97bb9)
- Sync from noir (AztecProtocol/aztec-packages#7400) (fb97bb9)
- Unquote multiple items from annotations (#5441) (be8eac6)
- Use runtime loops for brillig array initialization (#5243) (0bd22bb)
Bug Fixes
- Account for the expected kind when resolving turbofish generics (#5448) (82c335d)
- Add more thorough check for whether a type is valid when passing it from constrained code to unconstrained code (#5009) (318314d)
- Address compiler warnings coming from stdlib (#5351) (758a905)
- Allow importing notes from other contracts and inject them in the macros (AztecProtocol/aztec-packages#7349) (98e72ac)
- Avoid duplicating constant arrays (#5287) (3ef3645)
- Avoid panic in type system (#5332) (52d48ff)
- Avoid unnecessarily splitting expressions with multiplication terms with a shared term (#5291) (19884f1)
- Change panic to error in interpreter (#5446) (d44f882)
- Complete call stacks with no_predicates (#5418) (df73fe2)
- Correct range for overlfowing/underflowing integer assignment (#5416) (30c50f5)
- Correctly detect signed/unsigned integer overflows/underflows (#5375) (0603bd3)
- docs: Fix broken docs link to gihtub (#5398) (70ebf60)
- Don't benchmark the "prove" command as it doesn't exist anymore (#5323) (3bb3b03)
- Don't lazily elaborate functions (#5282) (0ea608f)
- Don't panic when using undefined variables in the interpreter (#5381) (94d209a)
- Don't type error when calling certain trait impls in the interpreter (#5471) (299703c)
- Error on empty function bodies (#5519) (6a7f593)
- Error when a local function is called in a comptime context (#5334) (7cd4a4d)
- Fix incorrect return type being applied to stdlib functions
modulus_be_bytes()
,modulus_be_bits()
, etc. (#5278) (91a9b72) - Fix issue with unresolved results (#5453) (c4154cb)
- Fix tokenization of unquoted types in macros (#5326) (6673c8b)
- Fix usage of
#[abi(tag)]
attribute with elaborator (#5298) (64dd48a) - Go to definition from
use
statement (#5390) (53bae3b) - Go to definition from aliased use (#5396) (90b135c)
- Handle struct with nested arrays in oracle return values (#5244) (a30814f)
- ICE when using a comptime let variable in runtime code (#5391) (9fb7e4d)
- Ignore calls to
Intrinsic::AsWitness
during brillig codegen (#5350) (9c11fd2) - Implement generic functions in the interpreter (#5330) (d8b9870)
- Included argshash computation in public call_interfaces and cleanup (AztecProtocol/aztec-packages#7354) (98e72ac)
- Lsp find struct reference in return locations and paths (#5404) (e1bcb73)
- Lsp hover wasn't always working (#5515) (951e821)
- Lsp struct rename/reference difference (#5411) (580c16d)
- Move BigInt modulus checks to runtime in brillig (#5374) (741d339)
- Mutability in the comptime interpreter (#5517) (8cab4ac)
- nargo_fmt: Account for spaces before the generic list of a function (#5303) (ec728dd)
- Never panic in LSP inlay hints (#5534) (6b11445)
- Prevent
no_predicates
from removing predicates in calling function (#5452) (66244b6) - Remove compile-time error for invalid indices (#5466) (323e0c9)
- Remove panics in the interpreter when a builtin fails to type check (#5382) (c8161c8)
- Replace expects in interpreter with errors (#5383) (ac738b2)
- Replace panic in monomorphization with an error (#5305) (49e1b0c)
- Replace std::HashMap with FxHashMap to fix frontend indeterminism (#5385) (9501495)
- Revert PR #5449 (#5548) (a213c15)
- Run macro processors in the elaborator (#5472) (89642c2)
- Runtime brillig bigint id assignment (#5369) (a8928dd)
- Skip emission of brillig calls which will never be executed (#5314) (b859ef9)
- Truncate flamegraph text to the right (AztecProtocol/aztec-packages#7333) (3f71169)
- Update
in_contract
flag before handling function metadata in elaborator (#5292) (4c4ea2d) - Use proper serialization in
AbiValue
(#5270) (d08b7b9)