v0.35.0
0.35.0 (2024-10-03)
⚠ BREAKING CHANGES
- Syncing TypeVariableKind with Kind (#6094)
- remove sha256 opcode (AztecProtocol/aztec-packages#4571)
- add support for u1 in the avm, ToRadix's radix arg is a memory addr (AztecProtocol/aztec-packages#8570)
- Infer globals to be u32 when used in a type (#6083)
- removing implicit numeric generics (#5837)
Features
- (LSP) if in runtime code, always suggest functions that return Quoted as macro calls (#6098) (4a160cb)
- (LSP) remove unused imports (#6129) (98bc460)
- (LSP) show global value on hover (#6097) (3d9d072)
- (LSP) suggest $vars inside
quote { ... }
(#6114) (73245b3) - Add
Expr::as_constructor
(#5980) (76dea7b) - Add
Expr::as_for
andExpr::as_for_range
(#6039) (abcae75) - Add
Expr::as_lambda
(#6048) (31130dc) - Add a
comptime
string type for string handling at compile-time (#6026) (5d2984f) - Add support for u1 in the avm, ToRadix's radix arg is a memory addr (AztecProtocol/aztec-packages#8570) (e8bbce7)
- Allow silencing an unused variable defined via
let
(#6149) (a2bc059) - Allow visibility modifiers in struct definitions (#6054) (199be58)
- Check unconstrained trait impl method matches (#6057) (aedc983)
- Default to outputting witness with file named after package (#6031) (e74b4ae)
- Detect unconstructed structs (#6061) (bcb438b)
- Do not double error on import with error (#6131) (9b26650)
- Expose
derived_generators
andpedersen_commitment_with_separator
from the stdlib (#6154) (877b806) - Faster LSP by caching file managers (#6047) (c48a4f8)
- Hoist constant allocation outside of loops (#6158) (180bfc9)
- Implement
to_be_radix
in the comptime interpreter (#6043) (1550278) - Implement solver for mov_registers_to_registers (#6089) (4170c55)
- Implement type paths (#6093) (2174ffb)
- Let
Module::functions
andModule::structs
return them in definition order (#6178) (dec9874) - Let LSP suggest macro calls too (#6090) (26d275b)
- Let LSP suggest trait impl methods as you are typing them (#6029) (dfed81b)
- LSP autocompletion for
TypePath
(#6117) (3f79d8f) - metaprogramming: Add
#[use_callers_scope]
(#6050) (8c34046) - Optimize allocating immediate amounts of memory (AztecProtocol/aztec-packages#8579) (e8bbce7)
- Optimize constraints in sha256 (#6145) (164d29e)
- perf: Allow array set last uses optimization in return block of Brillig functions (#6119) (5598059)
- perf: Handle array set optimization across blocks for Brillig functions (#6153) (12cb80a)
- perf: Optimize array set from get (#6207) (dfeb1c5)
- perf: Remove inc_rc instructions for arrays which are never mutably borrowed (#6168) (a195442)
- perf: Remove redundant inc rc without instructions between (#6183) (be9dcfe)
- perf: Remove unused loads in mem2reg and last stores per function (#5925) (19eef30)
- perf: Remove useless paired RC instructions within a block during DIE (#6160) (59c4118)
- perf: Simplify the cfg after DIE (#6184) (a1b5046)
- Pretty print Quoted token stream (#6111) (cd81f85)
- Refactor SSA passes to run on individual functions (#6072) (85c502c)
- Remove aztec macros (#6087) (9d96207)
- Remove orphaned blocks from cfg to improve
simplify_cfg
pass. (#6198) (b4712c5) - Remove sha256 opcode (AztecProtocol/aztec-packages#4571) (e8bbce7)
- Remove unnecessary branching in keccak impl (#6133) (9c69dce)
- Represent assertions more similarly to function calls (#6103) (3ecd0e2)
- Show test output when running via LSP (#6049) (9fb010e)
- Simplify sha256 implementation (#6142) (acdfbbc)
- Skip
remove_enable_side_effects
pass on brillig functions (#6199) (2303615) - ssa: Simplify signed casts (#6166) (eec3a61)
- Swap endianness in-place in keccak implementation (#6128) (e3cdebe)
- Syncing TypeVariableKind with Kind (#6094) (6440e18)
- Visibility for globals (#6161) (103b54d)
- Visibility for modules (#6165) (fcdbcb9)
- Visibility for traits (#6056) (5bbd9ba)
- Visibility for type aliases (#6058) (66d2a07)
Bug Fixes
- (LSP) make goto and hover work well for attributes (#6152) (c679bc6)
- Allow macros to change types on each iteration of a comptime loop (#6105) (0864e7c)
- Allow providing default implementations of unconstrained trait methods (#6138) (7679bbc)
- Always parse all tokens from quoted token streams (#6064) (23ed74b)
- Be more lenient with semicolons on interned expressions (#6062) (052c4fe)
- Consider constants as used values to keep their rc ops (#6122) (1217005)
- Correct stack trace order in comptime assertion failures (#6066) (04f1636)
- Databus panic for fns with empty params (AztecProtocol/aztec-packages#8847) (d252748)
- Decode databus return values (#6095) (c40eb1f)
- Disable side-effects for no_predicates functions (#6027) (fc74c55)
- Disambiguate field or int static trait method call (#6112) (5b27ea4)
- Do not duplicate constant arrays in brillig (#6155) (68f3022)
- docs: Rename recursion.md to recursion.mdx (#6195) (054e48b)
- Don't crash on untyped global used as array length (#6076) (426f295)
- Ensure to_bytes returns the canonical decomposition (#6084) (b280a79)
- Error on
&mut x
whenx
is not mutable (#6037) (57afc7d) - Fix canonicalization bug (#6033) (7397772)
- Fix comptime type formatting (#6079) (e678091)
- Handle multi-byte utf8 characters in formatter (#6118) (b1d0619)
- Handle parenthesized expressions in array length (#6132) (9f0b397)
- Ignore compression of blocks after msg.len in sha256_var (#6206) (76eec71)
- Infer globals to be u32 when used in a type (#6083) (78262c9)
- Initialise databus using return values (#6074) (e17dfa5)
- Let LSP suggest fields and methods in LValue chains (#6051) (5bf6567)
- Let token pretty printer handle
+=
and similar token sequences (#6135) (684b6cc) - mem2reg: Remove possibility of underflow (#6107) (aea5cc7)
- Parse a statement as an expression (#6040) (ab203e4)
- Pass radix directly to the blackbox (#6164) (82b89c4)
- Preserve generic kind on trait methods (#6099) (1df102a)
- Prevent check_can_mutate crashing on undefined variable (#6044) (b3accfc)
- Revert mistaken stack size change (#6212) (a37117a)
- ssa: Check if result of array set is used in value of another array set (#6197) (594ec91)
- ssa: RC correctness issue (#6134) (5b1c896)
- Type variables by default should have Any kind (#6203) (268f2a0)
- Unify macro result type with actual type (#6086) (af52873)
- Update databus in flattening (#6063) (e993da1)