v0.34.0
Pre-release
Pre-release
0.34.0 (2024-09-13)
⚠ BREAKING CHANGES
- Add Not instruction in brillig (AztecProtocol/aztec-packages#8488)
- avm: variants for SET opcode (AztecProtocol/aztec-packages#8441)
- avm/brillig: take addresses in calldatacopy (AztecProtocol/aztec-packages#8388)
- Do not encode assertion strings in the programs (AztecProtocol/aztec-packages#8315)
- return arrays instead of slices from
to_be_radix
functions (#5851) - Check unused generics are bound (#5840)
Features
- (bb) 128-bit challenges (AztecProtocol/aztec-packages#8406) (3c3ed1e)
- (LSP) suggest names that match any part of the current prefix (#5752) (cb0d490)
Module::add_item
(#5947) (af50a7b)- Add
Expr::as_any_integer
andExpr::as_member_access
(#5742) (6266755) - Add
Expr::as_array
,Expr::as_repeated_element_array
and same for slice (#5750) (f44e0b3) - Add
Expr::as_assert_eq
(#5880) (88f7858) - Add
Expr::as_assert
(#5857) (4e4ad26) - Add
Expr::as_binary_op
(#5734) (73a9f51) - Add
Expr::as_block
andExpr::has_semicolon
(#5784) (19ffa20) - Add
Expr::as_bool
(#5729) (ca75cc2) - Add
Expr::as_cast
andUnresolvedType::is_field
(#5801) (c9aa50d) - Add
Expr::as_let
(#5964) (65da598) - Add
Expr::as_unary
(#5731) (ae33811) - Add
Expr::resolve
andTypedExpr::as_function_definition
(#5859) (bceee55) - Add
Expr
methods:as_tuple
,as_parenthesized
,as_index
,as_if
(#5726) (f57a7b2) - Add
Expr
methods: as_comptime, as_unsafe, is_break, is_continue (#5799) (619fa5c) - Add
fmtstr::contents
(#5928) (f18e9ca) - Add
FunctionDef::body
(#5825) (39b30ba) - Add
FunctionDef::has_named_attribute
(#5870) (a950195) - Add
FunctionDef::set_return_visibility
(#5941) (8beda6b) - Add
FunctionDefinition::add_attribute
(#5944) (c7479c4) - Add
FunctionDefinition::module
andStructDefinition::module
(#5956) (f19344c) - Add
FunctionDefinition
methodsis_unconstrained
andset_unconstrained
(#5962) (b9a072d) - Add
Module::structs
(#6017) (fc5bb02) - Add
Quoted::as_expr
andExpr::as_function_call
(#5708) (3f79607) - Add
Quoted::tokens
(#5942) (a297ec6) - Add
std::meta::typ::fresh_type_variable
(#5948) (3dab4dd) - Add
StructDefinition::add_attribute
andhas_named_attribute
(#5945) (344dd5e) - Add
StructDefinition::add_generic
(#5961) (6004067) - Add
StructDefinition::name
(#5960) (102ebe3) - Add
StructDefinition::set_fields
(#5931) (9d2629d) - Add
TraitImpl::trait_generic_args
andTraitImpl::methods
(#5722) (8c7e493) - Add
Type::as_string
(#5871) (e29d4b3) - Add
Type::get_trait_impl
(#5716) (eb33d1c) - Add
Type::implements
(#5701) (2166c94) - Add
TypedExpr::get_type
(#5992) (31f50c4) - Add
UnresolvedType::is_field
andExpr::as_assign
(#5804) (c45df4e) - Add
unsafe
blocks for calling unconstrained code from constrained functions (#4429) (79593b4) - Add a
panic
method to the stdlib (#5966) (b86c2bc) - Add array_to_str_lossy (#5613) (af5acf4)
- Add assertions for ACVM
FunctionInput
bit_size
(#5864) (8712f4c) - Add Expr::as_method_call (#5822) (806af24)
- Add mutating FunctionDefinition functions (#5685) (2882eae)
- Add Not instruction in brillig (AztecProtocol/aztec-packages#8488) (95e19ab)
- Add recursive aggregation object to proving/verification keys (AztecProtocol/aztec-packages#6770) (4ea25db)
- Add reusable procedures to brillig generation (AztecProtocol/aztec-packages#7981) (5c4f19f)
- Add some
Module
comptime functions (#5684) (eefd69b) - Added indirect const instruction (AztecProtocol/aztec-packages#8065) (5c4f19f)
- Adding aggregation to honk and rollup (AztecProtocol/aztec-packages#7466) (4ea25db)
- Allow inserting new structs and into programs from attributes (#5927) (94e661e)
- Arithmetic Generics (#5950) (00a79ce)
- Automate verify_honk_proof input generation (AztecProtocol/aztec-packages#8092) (5c4f19f)
- avm/brillig: Take addresses in calldatacopy (AztecProtocol/aztec-packages#8388) (3c3ed1e)
- avm: Variants for SET opcode (AztecProtocol/aztec-packages#8441) (3c3ed1e)
- Better error message for misplaced doc comments (#5990) (28415ef)
- Better println for Quoted (#5896) (6f30e42)
- Calculate
FunctionSelector
s andEventSelector
s during comptime (AztecProtocol/aztec-packages#8354) (33bd102) - Change the layout of arrays and vectors to be a single pointer (AztecProtocol/aztec-packages#8448) (d4832ec)
- Check argument count and types on attribute function callback (#5921) (91f693d)
- Do not encode assertion strings in the programs (AztecProtocol/aztec-packages#8315) (4144152)
- Explicit Associated Types & Constants (#5739) (e050e93)
- Extract brillig slice ops to reusable procedures (#6002) (339c17b)
- Fault-tolerant parsing of
fn
andimpl
(#5753) (d4e2f0a) - Format trait impl functions (#6016) (da32bd8)
- Hook up secondary calldata column in dsl (AztecProtocol/aztec-packages#7759) (4ea25db)
- Impl Hash and Eq on more comptime types (#6022) (114903d)
- Implement
str_as_bytes
in thecomptime
interpreter (#5887) (45344bf) - Implement LSP code action "Implement missing members" (#6020) (9bf2dcb)
- Improve "type annotations needed" errors (#5830) (90f9ea0)
- Let
has_named_attribute
work for built-in attributes (#6024) (a09646b) - Let
nargo
and LSP work well in the stdlib (#5969) (8e8e97c) - Liveness analysis for constants (AztecProtocol/aztec-packages#8294) (71e1556)
- LSP auto-import completion (#5741) (cdbb940)
- LSP autocomplete constructor fields (#5732) (e71c75a)
- LSP autocompletion for attributes (#5963) (b7b9e3f)
- LSP autocompletion for use statement (#5704) (226aeb1)
- LSP code action "Fill struct fields" (#5885) (1e6e4f4)
- LSP code actions to import or qualify unresolved paths (#5876) (410c1f6)
- LSP completion function detail (#5993) (e84f7d2)
- LSP completion now works better in the middle of idents (#5795) (1c84038)
- LSP diagnostics for all package files (#5895) (4e616b3)
- LSP diagnostics now have "unnecessary" and "deprecated" tags (#5878) (2f0d4e0)
- LSP fields, functions and methods completion after "." and "::" (#5714) (13c1fe6)
- LSP hover and go-to-definition for crates (#5786) (86d8840)
- LSP now suggests self fields and methods (#5955) (f57ce85)
- LSP path completion (#5712) (3c6b998)
- LSP signature help (#5725) (5a3d241)
- LSP signature help for assert and assert_eq (#5862) (663e00c)
- LSP will now suggest private items if they are visible (#5923) (d2caa5b)
- Make token transfer be recursive (AztecProtocol/aztec-packages#7730) (4ea25db)
- meta: Comptime keccak (#5854) (0e8becc)
- Module attributes (#5888) (2ca2e5c)
- New test programs for wasm benchmarking (AztecProtocol/aztec-packages#8389) (95e19ab)
- Note hashes as points (AztecProtocol/aztec-packages#7618) (4ea25db)
- Only check array bounds in brillig if index is unsafe (#5938) (8b60bbc)
- optimization: Avoid merging identical (by ID) arrays (#5853) (062103e)
- optimization: Follow past
array_set
s when optimizingarray_get
s (#5772) (090501d) - Optimize constant array handling in brillig_gen (AztecProtocol/aztec-packages#7661) (4ea25db)
- Optimize to_radix (AztecProtocol/aztec-packages#8073) (5c4f19f)
- Pass calldata ids to the backend (AztecProtocol/aztec-packages#7875) (4ea25db)
- perf: Mem2reg function state for value loads to optimize across blocks (#5757) (0b297b3)
- perf: Remove known store values that equal the store address in mem2reg (#5935) (b84009c)
- perf: Remove last store in return block if last load is before that store (#5910) (1737b65)
- perf: Simplify poseidon2 cache zero-pad (#5869) (31e9be6)
- Poseidon2 gates for Ultra arithmetisation (AztecProtocol/aztec-packages#7494) (5c4f19f)
- profiler: Add support for brillig functions in opcodes-flamegraph (AztecProtocol/aztec-packages#7698) (4ea25db)
- Remove blocks which consist of only a jump to another block (#5889) (f391af2)
- Remove unnecessary copying of vector size during reversal (#5852) (5739904)
- Removing superfluous call to MSM (AztecProtocol/aztec-packages#7708) (4ea25db)
- Report gates and VKs of private protocol circuits with megahonk (AztecProtocol/aztec-packages#7722) (4ea25db)
- Return arrays instead of slices from
to_be_radix
functions (#5851) (d59c708) - Show backtrace on comptime assertion failures (#5842) (cfd68d4)
- Show doc comments in LSP (#5968) (45f4ae0)
- Simplify constant calls to
poseidon2_permutation
,schnorr_verify
andembedded_curve_add
(#5140) (2823ba7) - Small optimization in toradix (AztecProtocol/aztec-packages#8040) (5c4f19f)
- Suggest trait methods in LSP completion (#5735) (e2f7e95)
- Suggest tuple fields in LSP completion (#5730) (64d7d78)
- Sync from noir (AztecProtocol/aztec-packages#7743) (4ea25db)
- Sync from noir (AztecProtocol/aztec-packages#7862) (4ea25db)
- Sync from noir (AztecProtocol/aztec-packages#7945) (4ea25db)
- Sync from noir (AztecProtocol/aztec-packages#7958) (5c4f19f)
- Sync from noir (AztecProtocol/aztec-packages#8008) (5c4f19f)
- Sync from noir (AztecProtocol/aztec-packages#8093) (5c4f19f)
- Sync from noir (AztecProtocol/aztec-packages#8125) (f0c2686)
- Sync from noir (AztecProtocol/aztec-packages#8237) (f0c2686)
- Sync from noir (AztecProtocol/aztec-packages#8314) (4144152)
- Sync from noir (AztecProtocol/aztec-packages#8333) (33bd102)
- Sync from noir (AztecProtocol/aztec-packages#8423) (3c3ed1e)
- Sync from noir (AztecProtocol/aztec-packages#8435) (3c3ed1e)
- Sync from noir (AztecProtocol/aztec-packages#8466) (3c3ed1e)
- Sync from noir (AztecProtocol/aztec-packages#8482) (d4832ec)
- Sync from noir (AztecProtocol/aztec-packages#8512) (95e19ab)
- Sync from noir (AztecProtocol/aztec-packages#8526) (95e19ab)
- TXE nr deployments, dependency cleanup for CLI (AztecProtocol/aztec-packages#7548) (4ea25db)
- Unify all acir recursion constraints based on RecursionConstraint and proof_type (AztecProtocol/aztec-packages#7993) (5c4f19f)
- Unquote some value as tokens, not as unquote markers (#5924) (70ebb90)
- Use visibility (#5856) (e349f30)
- Use Zac's quicksort algorithm in stdlib sorting (#5940) (19f5757)
- User
super::
in LSP autocompletion if possible (#5751) (5192e53) - Warn on unused functions (#5892) (af3db4b)
- Warn on unused imports (#5847) (58f855e)
Bug Fixes
- (LSP) only add cached files relevant to workspace (#5775) (1958a79)
- acir_gen: Nested dynamic array initialization (#5810) (4df53ad)
- acvm: Clear ACIR call stack after successful circuit execution (#5783) (656a7d6)
- Add locations to most SSA instructions (#5697) (85d5c85)
- Add missing trait impls for integer types to stdlib (#5738) (d3f20c6)
- Allow comptime code to use break without also being
unconstrained
(#5744) (c2a1a87) - Always place module attribute generated items inside module (#5943) (89ac6e0)
- Bit shifting type checking (#5824) (fb5136e)
- Check unused generics are bound (#5840) (82eb158)
- Collect functions generated by attributes (#5930) (2c22fe5)
- Correctly print string tokens (#6021) (b8a3a9b)
- debugger: Update the debugger to handle the new Brillig debug metadata format (#5706) (a31f82e)
- Deflatten databus visibilities (AztecProtocol/aztec-packages#7761) (4ea25db)
- Do not duplicate redundant Brillig debug metadata (#5696) (e4f7dbe)
- Do not use predicate for index in array operation, when the index is safe (#5779) (9d8f2bd)
- docs: Fix file paths for metaprogramming docs (#5826) (a764c5b)
- Error when
quote
is used in runtime code (#5978) (cc30d88) - Error when comptime functions are used in runtime code (#5976) (ec24917)
- Error when comptime types are used in runtime code (#5987) (3d39196)
- Error when mutating comptime variables in non-comptime code (#6003) (e20c44d)
- Export brillig names in contract functions (AztecProtocol/aztec-packages#8212) (f0c2686)
- Fix some mistakes in arithmetic generics docs (#5999) (29550d1)
- Fix using lazily elaborated comptime globals (#5995) (f6f493c)
- frontend: Ban type vars bound to a reference from passing the unconstrained boundary (#5949) (ce34fbd)
- frontend: Continue type check if we are missing an unsafe block (#5720) (86de991)
- Handle multiple entry points for Brillig call stack resolution after metadata deduplication (#5788) (38fe9dd)
- Help link was outdated (#6004) (d1e52f3)
- Honor function visibility in LSP completion (#5809) (335de05)
- Let
derive(Eq)
work for empty structs (#5965) (ff8e8b5) - Let LSP autocompletion work in more contexts (#5719) (03ba6dd)
- LSP document symbol didn't work for primitive impls (#5970) (e1f81da)
- mem2reg: Handle aliases better when setting a known value for a load (#5959) (1b72a17)
- mem2reg: Handle aliases in function last store cleanup and additional alias unit test (#5967) (36756e8)
- nargo: Resolve Brillig assertion payloads (#5872) (f53a28b)
- Prevent comptime println from crashing LSP (#5918) (44cf9a2)
- Replace unused ArrayGet/Set with constrain if possibly out of bounds (#5691) (a87d926)
- Restrict keccak256_injective test input to 8 bits (#5977) (a1b1346)
- sha256: Add extra checks against message size when constructing msg blocks (#5861) (46e266a)
- sha256: Fix upper bound when building msg block and delay final block compression under certain cases (#5838) (130b7b6)
- sha256: Perform compression per block and utilize ROM instead of RAM when setting up the message block (#5760) (c52dc1c)
- Suggest trait attributes in LSP (#5972) (d6f60d7)
- Support debug comptime flag for attributes (#5929) (34f21c0)
- Temporary register leaks in brillig gen (AztecProtocol/aztec-packages#8350) (33bd102)
- Try to move constant terms to one side for arithmetic generics (#6008) (4d8fe28)
- Unconstrained fn mismatch is now a warning (#5764) (37af966)
- Use element_size() instead of computing it with division (#5939) (6a45007)
- Use module name as line after which we'll insert auto-import (#6025) (c2e4a9a)