Releases: noir-lang/noir
Releases · noir-lang/noir
nightly-2024-07-25: feat: Implement format strings in the comptime interpreter (#5596)
Pre-release
# Description ## Problem\* Resolves https://github.com/noir-lang/noir/issues/5482 ## Summary\* Implements format strings in the interpreter. These are a bit weird since we immediately interpolate them and thus have no need to actually distinguish them from regular strings. They are also lowered into runtime code as normal strings. ## Additional Context ## Documentation\* Check one: - [x] No documentation needed. - [ ] Documentation included in this PR. - [ ] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist\* - [x] I have tested the changes locally. - [x] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings. --------- Co-authored-by: Michael J Klein <[email protected]>
nightly-2024-07-24: fix: lookup trait constraints methods in composite types (#5595)
Pre-release
# Description ## Problem Resolves #5186 ## Summary Looking for methods that are bound to trait constraints was already working for `NamedGeneric`, but when the trait is on a composite type, like `(T, U)` or even `(T, i32)` methods weren't lookup up in constraints bound to those types. We only lookup this in case the regular (`lookup_primitive_method`) lookup fails to find something. ## Additional Context None. ## Documentation Check one: - [x] No documentation needed. - [ ] Documentation included in this PR. - [ ] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist\* - [x] I have tested the changes locally. - [x] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.
nightly-2024-07-23: fix: allow calling a trait method with paths that don't consist of ex…
nightly-2024-07-23: fix: allow calling a trait method with paths that don't consist of ex…
Pre-release
Pre-release
…actly two segments (#5577) # Description ## Problem Resolves #5557 ## Summary For something like `Add::add` the logic was checking if `Add` was a trait, then looking for a method `add` in it. It only worked if the path had exactly two segments. I initially thought the fix was simple: also make it work if there are more segments. However, it got tricky if there's just one segment: we need to find out the trait associated with the found function. This wasn't tracked in `FuncMeta` (well, there was a boolean for it but not the optional `TraitId`) so in this PR this information is now tracked, and the lookup works in all cases. ## Additional Context None. ## Documentation\* Check one: - [x] No documentation needed. - [ ] Documentation included in this PR. - [ ] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist\* - [x] I have tested the changes locally. - [x] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.
nightly-2024-07-22: fix(frontend): Disallow signed numeric generics (#5572)
# Description ## Problem\* Resolves #5552 ## Summary\* This temporarily disallows signed numeric generics as to prevent the panic in the issue until they are fully supported. In general type-level integers need to be updated to support numeric generics. It is deceiving to not ban them until type-level integers are updated as otherwise users can declare signed numeric generics but not actually use them as per the linked issue. For the code in the issue we now get this error: <img width="697" alt="Screenshot 2024-07-19 at 5 41 13 PM" src="https://github.com/user-attachments/assets/17979de7-8c82-40af-aa0f-a32f73992d48"> ## Additional Context ## Documentation\* Check one: - [] No documentation needed. - [ ] Documentation included in this PR. - [X] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist\* - [X] I have tested the changes locally. - [X] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.
nightly-2024-07-21: fix(frontend): Disallow signed numeric generics (#5572)
# Description ## Problem\* Resolves #5552 ## Summary\* This temporarily disallows signed numeric generics as to prevent the panic in the issue until they are fully supported. In general type-level integers need to be updated to support numeric generics. It is deceiving to not ban them until type-level integers are updated as otherwise users can declare signed numeric generics but not actually use them as per the linked issue. For the code in the issue we now get this error: <img width="697" alt="Screenshot 2024-07-19 at 5 41 13 PM" src="https://github.com/user-attachments/assets/17979de7-8c82-40af-aa0f-a32f73992d48"> ## Additional Context ## Documentation\* Check one: - [] No documentation needed. - [ ] Documentation included in this PR. - [X] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist\* - [X] I have tested the changes locally. - [X] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.
nightly-2024-07-20: fix(frontend): Disallow signed numeric generics (#5572)
# Description ## Problem\* Resolves #5552 ## Summary\* This temporarily disallows signed numeric generics as to prevent the panic in the issue until they are fully supported. In general type-level integers need to be updated to support numeric generics. It is deceiving to not ban them until type-level integers are updated as otherwise users can declare signed numeric generics but not actually use them as per the linked issue. For the code in the issue we now get this error: <img width="697" alt="Screenshot 2024-07-19 at 5 41 13 PM" src="https://github.com/user-attachments/assets/17979de7-8c82-40af-aa0f-a32f73992d48"> ## Additional Context ## Documentation\* Check one: - [] No documentation needed. - [ ] Documentation included in this PR. - [X] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist\* - [X] I have tested the changes locally. - [X] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.
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](c47242a...
nightly-2024-07-19: feat: Add a compile-time hash map type (#5543)
# Description ## Problem\* Resolves https://github.com/noir-lang/noir/issues/5479 ## Summary\* Mostly copied over from our existing hash map with a few changes. - Uses slices and grows automatically - Uses `break` ## Additional Context Like other comptime code, I'm avoiding documenting this until comptime as a whole is stable ## Documentation\* Check one: - [ ] No documentation needed. - [ ] Documentation included in this PR. - [x] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist\* - [x] I have tested the changes locally. - [x] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings. --------- Co-authored-by: Michael J Klein <[email protected]>
nightly-2024-07-18: feat: LSP document symbol (#5532)
# Description ## Problem Resolves #5533 ## Summary With this you can see where you are at any time, and jump to any symbol in the document. https://github.com/user-attachments/assets/74ebdb36-cd51-4afc-a33e-775156c1317b ## Additional Context None ## Documentation Check one: - [x] No documentation needed. - [ ] Documentation included in this PR. - [ ] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist - [x] I have tested the changes locally. - [ ] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.
nightly-2024-07-17: chore: Remove dbg on find_func_with_name (#5526)
# Description ## Problem\* Resolves <!-- Link to GitHub Issue --> ## Summary\* Looks like we missed a dbg in one of the recent PRs. This was causing a lot of unnecessary dbg output. ## Additional Context ## Documentation\* Check one: - [X] No documentation needed. - [ ] Documentation included in this PR. - [ ] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist\* - [X] I have tested the changes locally. - [X] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.