Skip to content

Releases: noir-lang/noir

nightly-2024-09-05: feat: warn on unused functions (#5892)

05 Sep 02:25
af3db4b
Compare
Choose a tag to compare
# Description

## Problem

Now that we warn on unused imports, doing that for functions too is
relatively straight-forward.

## Summary

Now unused private or `pub(crate)` functions will be reported as unused.

## Additional Context

I'd like to try this on some Aztec-Packages projects, but for that it
would be nice to merge #5895 first so I could get all warnings/errors
for a package inside VS Code.

We can eventually do the same thing with globals, traits, etc., once we
track their visibility.

I also think we could warn on unused `pub` functions in a "bin" or
"contract" package, not sure... but if we decide to do that, it could be
a separate PR.

## 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-09-04: chore: make nested slice error more clear for `[[T]; N]` case (#5906)

04 Sep 02:23
712468a
Compare
Choose a tag to compare
# Description

## Problem\*

The `NestedSlice` error is unclear when there is only one slice:

```bash
error: Nested slices are not supported
   ┌─ /Users/michaelklein/Coding/noir/two_tag/src/main.nr:31:12
   │
31 │     rules: [[Field]; N],
   │            ------------ Try to use a constant sized array instead
```

## Summary\*

Rephrases the `NestedSlice` error message to make it more clear that
slices within arrays or other slices are disallowed.

## 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.

nightly-2024-09-03: feat: use visibility (#5856)

03 Sep 12:11
e349f30
Compare
Choose a tag to compare
# Description

## Problem

Part of #4515

## Summary

We recently added a warning for unused imports... but only for bin and
contract packages. We didn't enable it for lib packages because a `use`
could also be used as `pub use`, something we don't have yet. I thought
it would be really nice if we had `pub use`, and warned on unused
imports in libs too. I checked the code and we already track visibility
for any item, in general, it's just that for things that don't allow a
visibility modifier we just consider it's public. So I tried to see how
difficult it would be to implement it, and it turned out it wasn't that
hard or time-consuming.

That said, visibility for `use` involves some more logic, particularly
for autocompletion, because now `pub use` should be suggested, but the
"parent" module of that item isn't the actual parent (it's the module
where the `pub use` is defined) but that was relatively striaght-forward
to implement too.

## Additional Context

If we decide to go forward with this, any existing `use` that was used
as `pub use` will likely start producing a warning for libs (a lot of
them in Aztec-Packages), but now that can be silenced by changing them
to `pub use`.

Where should this new feature be documented? I'm not sure if it should
go in `dependencies.md` or `modules.md`.

## Documentation\*

Check one:
- [ ] No documentation needed.
- [x] 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: Tom French <[email protected]>

v0.33.0

06 Aug 23:41
325dac5
Compare
Choose a tag to compare

0.33.0 (2024-08-06)

⚠ BREAKING CHANGES

  • parse block and if statements independently of expressions in statements (#5634)
  • frontend: Restrict numeric generic types to unsigned ints up to u32 (#5581)

Features

Bug Fixes

Read more

nightly-2024-08-06: chore: Release Noir(0.33.0) (#5550)

06 Aug 23:46
325dac5
Compare
Choose a tag to compare
:robot: I have created a release *beep* *boop*
---


<details><summary>0.33.0</summary>

## [0.33.0](https://github.com/noir-lang/noir/compare/v0.32.0...v0.33.0)
(2024-08-06)


### ⚠ BREAKING CHANGES

* parse block and if statements independently of expressions in
statements ([#5634](https://github.com/noir-lang/noir/issues/5634))
* **frontend:** Restrict numeric generic types to unsigned ints up to
`u32` ([#5581](https://github.com/noir-lang/noir/issues/5581))

### Features

* **acir_gen:** Width aware ACIR gen addition
([#5493](https://github.com/noir-lang/noir/issues/5493))
([85fa592](https://github.com/noir-lang/noir/commit/85fa592fdef3b8589ce03b232e1b51565837b540))
* Add `FunctionDefinition::parameters`,
`FunctionDefinition::return_type` and `impl Eq for Quoted`
([#5681](https://github.com/noir-lang/noir/issues/5681))
([d52fc05](https://github.com/noir-lang/noir/commit/d52fc056ae5dec4457dd869d50dd9a6e5b0b5cb1))
* Add `std::meta::type_of` and `impl Eq for Type`
([#5669](https://github.com/noir-lang/noir/issues/5669))
([0503956](https://github.com/noir-lang/noir/commit/05039568e317c16cecc173717e63288e7ca3890c))
* Add `TraitDefinition::as_trait_constraint()`
([#5541](https://github.com/noir-lang/noir/issues/5541))
([0943223](https://github.com/noir-lang/noir/commit/094322381da67e2b9aef27b5558ba98a47abfccc))
* Add `Type::as_struct`
([#5680](https://github.com/noir-lang/noir/issues/5680))
([ade69a9](https://github.com/noir-lang/noir/commit/ade69a9e5f1546249e9b43b40e9ff0da87c4632e))
* Add `Type::is_field` and `Type::as_integer`
([#5670](https://github.com/noir-lang/noir/issues/5670))
([939357a](https://github.com/noir-lang/noir/commit/939357acae87eae833ff10572f7a1ad52b35d94e))
* Add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`,
`is_bool` ([#5678](https://github.com/noir-lang/noir/issues/5678))
([604fa0d](https://github.com/noir-lang/noir/commit/604fa0d85c1a0c47c7c0b8402576afb61ceb664b))
* Add a compile-time hash map type
([#5543](https://github.com/noir-lang/noir/issues/5543))
([c6e5c4b](https://github.com/noir-lang/noir/commit/c6e5c4b304eb4e87ca519151f610e7e03b1a4fba))
* Add a limited form of arithmetic on generics
([#5625](https://github.com/noir-lang/noir/issues/5625))
([0afb680](https://github.com/noir-lang/noir/commit/0afb6805e3c3cbe0f84f39d9e2e57e038450547d))
* Add parameter to call_data attribute
([#5599](https://github.com/noir-lang/noir/issues/5599))
([e8bb341](https://github.com/noir-lang/noir/commit/e8bb3417d276d17db85b408b825e61c32fa20744))
* Allow inserting LSP inlay type hints
([#5620](https://github.com/noir-lang/noir/issues/5620))
([b33495d](https://github.com/noir-lang/noir/commit/b33495d0799f7c296cf6e284ea19abbbe5821793))
* Avoid heap allocs when going to/from field
(https://github.com/AztecProtocol/aztec-packages/pull/7547)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl`
helper ([#5683](https://github.com/noir-lang/noir/issues/5683))
([38397d3](https://github.com/noir-lang/noir/commit/38397d346aac4ec19026ede2776e776fdceb854c))
* Don't eagerly error on cast expressions
([#5635](https://github.com/noir-lang/noir/issues/5635))
([0ca5d9d](https://github.com/noir-lang/noir/commit/0ca5d9d7b389d24cf48fa62a29cb437b1855438a))
* Implement `poseidon2_permutation` in comptime interpreter
([#5590](https://github.com/noir-lang/noir/issues/5590))
([89dfbbf](https://github.com/noir-lang/noir/commit/89dfbbfe6efffcce9a44c39ccf7e92036a0e222a))
* Implement `Value::Type` in comptime interpreter
([#5593](https://github.com/noir-lang/noir/issues/5593))
([4c3bf97](https://github.com/noir-lang/noir/commit/4c3bf97fe7475f1027285cb5ad26b3c578a632b7))
* Implement `zeroed` in the interpreter
([#5540](https://github.com/noir-lang/noir/issues/5540))
([ff8ca91](https://github.com/noir-lang/noir/commit/ff8ca91efc925bf8bdbe7f2d2feb651981c5c1b9))
* Implement closures in the comptime interpreter
([#5682](https://github.com/noir-lang/noir/issues/5682))
([9e2a323](https://github.com/noir-lang/noir/commit/9e2a3232c8849f19732472e75840717b8b95a4a9))
* Implement format strings in the comptime interpreter
([#5596](https://github.com/noir-lang/noir/issues/5596))
([fd7002c](https://github.com/noir-lang/noir/commit/fd7002caaf15c297227ce53047dd3361674a527d))
* Integrate new proving systems in e2e
(https://github.com/AztecProtocol/aztec-packages/pull/6971)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Let filenames in errors be relative to the current dir if possible
([#5642](https://github.com/noir-lang/noir/issues/5642))
([f656681](https://github.com/noir-lang/noir/commit/f656681dfccf01bac2811835fc9ab482e54e3da8))
* Let LSP work will with code generated by macros
([#5665](https://github.com/noir-lang/noir/issues/5665))
([8122624](https://github.com/noir-lang/noir/commit/812262413770d2f20cba04eb0e3176320a3b704a))
* LSP closing brace hints
([#5686](https://github.com/noir-lang/noir/issues/5686))
([2b18151](https://github.com/noir-lang/noir/commit/2b18151168b4fa0b1a4173b11f047ff2fc338d28))
* LSP hover now includes "Go to" links
([#5677](https://github.com/noir-lang/noir/issues/5677))
([d466d49](https://github.com/noir-lang/noir/commit/d466d491ea50b495be7d5a45a8c3d85771f9b1c0))
* LSP inlay parameter hints
([#5553](https://github.com/noir-lang/noir/issues/5553))
([822fe2c](https://github.com/noir-lang/noir/commit/822fe2ce38184243789a97f79ee412b9cef614e2))
* LSP inlay type hints on lambda parameters
([#5639](https://github.com/noir-lang/noir/issues/5639))
([80128ff](https://github.com/noir-lang/noir/commit/80128ff0a5d54fc777ffef89a7acc27d347181e6))
* Make Brillig do integer arithmetic operations using u128 instead of
Bigint (https://github.com/AztecProtocol/aztec-packages/pull/7518)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* **noir_js:** Expose UltraHonk and integration tests
([#5656](https://github.com/noir-lang/noir/issues/5656))
([4552b4f](https://github.com/noir-lang/noir/commit/4552b4f357f023a9d054a34b3dc94d7a659c7d09))
* Remove 'comptime or separate crate' restriction on comptime code
([#5609](https://github.com/noir-lang/noir/issues/5609))
([1cddf42](https://github.com/noir-lang/noir/commit/1cddf427b7f52b3cb394c8c4c682cfd176d5eb93))
* Resolve arguments to attributes
([#5649](https://github.com/noir-lang/noir/issues/5649))
([e139002](https://github.com/noir-lang/noir/commit/e1390020c5ffc9c252b47eeffb3219ffa20c4879))
* **ssa:** Simple serialization of unoptimized SSA to file
([#5679](https://github.com/noir-lang/noir/issues/5679))
([07ea107](https://github.com/noir-lang/noir/commit/07ea1077cad8a332970d9d5f40a520009976a033))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7432)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7444)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7454)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7512)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7577)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7583)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Turbofish in struct pattern
([#5616](https://github.com/noir-lang/noir/issues/5616))
([b3c408b](https://github.com/noir-lang/noir/commit/b3c408b62424c87f9be5b58c33be7d77e62af98e))
* Turbofish operator in struct constructor
([#5607](https://github.com/noir-lang/noir/issues/5607))
([106abd7](https://github.com/noir-lang/noir/commit/106abd71299a54dc68eb6ff39a0a8135b3f8eb49))
* Turbofish operator on path segments
([#5603](https://github.com/noir-lang/noir/issues/5603))
([0bb8372](https://github.com/noir-lang/noir/commit/0bb8372e118036a34709da37c26d11a539a86bb3))
* Typing return values of embedded_curve_ops
(https://github.com/AztecProtocol/aztec-packages/pull/7413)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))


### Bug Fixes

* 'cannot eval non-comptime global' error
([#5586](https://github.com/noir-lang/noir/issues/5586))
([0a987c7](https://github.com/noir-lang/noir/commit/0a987c774e0349e2cdc17ad2aaee634c732b8785))
* `NoMatchingImplFound` in comptime code only
([#5617](https://github.com/noir-lang/noir/issues/5617))
([28211a3](https://github.com/noir-lang/noir/commit/28211a397b810c661204b45b7da06f7cad345278))
* Add trailing extra arguments for backend in gates_flamegraph
(https://github.com/AztecProtocol/aztec-packages/pull/7472)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Allow calling a trait method with paths that don't consist of exactly
two segments ([#5577](https://github.com/noir-lang/noir/issues/5577))
([88c0a40](https://github.com/noir-lang/noir/commit/88c0a40ea35c7a64e4361e3022286be6fa7da666))
* Allow trailing comma when parsing where clauses
([#5594](https://github.com/noir-lang/noir/issues/5594))
([75bfe13](https://github.com/noir-lang/noir/commit/75bfe134457788f912da5173c395d7fbe0bb731a))
* Allow using Self for function calls
([#5629](https://github.com/noir-lang/noir/issues/5629))
([b7e4f42](https://github.com/noir-lang/noir/commit/b7e4f424f3fc461122447c30989a3ce52ddea09d))
* Correct span for prefix operator
([#5624](https://github.com/noir-lang/noir/issues/5624))
([5824785](https://github.com/noir-lang/noir/commit/58247854fba4309991529317671280bccd5cf21f))
* Correctly track sources for open LSP documents
([#5561](https://github.com/noir-lang/noir/issues/5561))
([9e61e97](https://github.com/noir-lang/noir/commit/9e61e97a6cc5aecaf673742f4b333879eeb687d0))
* Derive generic types
([#5674](https://github.com/noir-lang/noir/issues/5674))
([19e58a9](https://github.com/noir-lang/noir/commit/19e58a91a3b1d0534d8b0198347e3a2fb5488599))
* Don't panic when a macro fails to resolve
([#5537](https://github.com/noir-lang/noir/issues/5537))
([6109ddc](https://github.com/noir-lang/noir/commit/6109ddc4a12a4f7593c87fcc42a059737febd470))
* Elaborate struct & trait annotations in the correct module
([#5643](https://github.com/noir-lang/noir/issues/5643))
([d0a957b](https://github.com/noir-lang/noir/commit/d0a957ba9bd743ae00959b0680e275a0a3992308))
* Error on duplicate struct field
([#5585](https://github.com/noir-lang/noir/issues/5585))
([3aed671](https://github.com/noir-lang/noir/commit/3aed671d2fdca661fdef160b3e2468ce10eda028))
* Error on incorrect generic count for impl and type alias
([#5623](https://github.com/noir-lang/noir/issues/5623))
([1f5d000](https://github.com/noir-lang/noir/commit/1f5d0007430cd5cf057ce61ebc87304bb8cb557c))
* Error on trait impl generics count mismatch
([#5582](https://github.com/noir-lang/noir/issues/5582))
([da3d607](https://github.com/noir-lang/noir/commit/da3d607fb30143f7fd4077765119f98e664f31f7))
* Error on unbound generics in structs
([#5619](https://github.com/noir-lang/noir/issues/5619))
([efef6b4](https://github.com/noir-lang/noir/commit/efef6b4c9f2ff4bce7e83bed004eb05332ac349f))
* Filter comptime globals
([#5538](https://github.com/noir-lang/noir/issues/5538))
([2adc6ac](https://github.com/noir-lang/noir/commit/2adc6ac372b41ab7f9e803311d3d733b1a5ca4fb))
* Fix `uhashmap` test name
([#5563](https://github.com/noir-lang/noir/issues/5563))
([d5de83f](https://github.com/noir-lang/noir/commit/d5de83f7fefe014c5e5d9c3d82ab6aff6fd3217c))
* Fix occurs check
([#5535](https://github.com/noir-lang/noir/issues/5535))
([51dd529](https://github.com/noir-lang/noir/commit/51dd529872da96ad7f7770d6bc5f7c23f5415b5a))
* Fix where clause issue in items generated from attributes
([#5673](https://github.com/noir-lang/noir/issues/5673))
([9a8cfc9](https://github.com/noir-lang/noir/commit/9a8cfc9cfbf1861ca2b6563030b315bfcfbab130))
* **frontend:** Disallow signed numeric generics
([#5572](https://github.com/noir-lang/noir/issues/5572))
([2b4853e](https://github.com/noir-lang/noir/commit/2b4853e71859f225acc123160e87c522212b16b5))
* **frontend:** Error for when impl is stricter than trait
([#5343](https://github.com/noir-lang/noir/issues/5343))
([ece033f](https://github.com/noir-lang/noir/commit/ece033fcbf90ffbea992b4519d40076bf573b7af))
* **frontend:** Restrict numeric generic types to unsigned ints up to
`u32` ([#5581](https://github.com/noir-lang/noir/issues/5581))
([b85e764](https://github.com/noir-lang/noir/commit/b85e764c2156ebb68acb7fba68e63856f9d1235b))
* Let a trait impl that relies on another trait work
([#5646](https://github.com/noir-lang/noir/issues/5646))
([e00c370](https://github.com/noir-lang/noir/commit/e00c3705794657ea8f8faa16bc2325511567e185))
* Let std::unsafe::zeroed() work for slices
([#5592](https://github.com/noir-lang/noir/issues/5592))
([7daee20](https://github.com/noir-lang/noir/commit/7daee20a3c3628044e2e76b0a52abd5285a4432a))
* Let trait calls work in globals
([#5602](https://github.com/noir-lang/noir/issues/5602))
([c02a6f6](https://github.com/noir-lang/noir/commit/c02a6f64b1920ec5a1a05e20df34227cc95d7b0a))
* Let unary traits work at comptime
([#5507](https://github.com/noir-lang/noir/issues/5507))
([aa62d8a](https://github.com/noir-lang/noir/commit/aa62d8adce7ca2a4e021c8ec18b6056a7600fe95))
* Lookup trait constraints methods in composite types
([#5595](https://github.com/noir-lang/noir/issues/5595))
([cec6390](https://github.com/noir-lang/noir/commit/cec63902c52710ba7df433eda310296f7b7652d2))
* Parse block and if statements independently of expressions in
statements ([#5634](https://github.com/noir-lang/noir/issues/5634))
([9341113](https://github.com/noir-lang/noir/commit/9341113840294d6d895d5ed9713ba551cf8a1db9))
* Revert "feat: Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7512)"
(https://github.com/AztecProtocol/aztec-packages/pull/7558)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Run macros within comptime contexts
([#5576](https://github.com/noir-lang/noir/issues/5576))
([df44919](https://github.com/noir-lang/noir/commit/df449191a4edf669e1d3412789422177c54a9304))
* Speed up LSP ([#5650](https://github.com/noir-lang/noir/issues/5650))
([e5f1b36](https://github.com/noir-lang/noir/commit/e5f1b368c8894b3e37209b22c48fde8c82851cba))
* **ssa:** More robust array deduplication check
([#5547](https://github.com/noir-lang/noir/issues/5547))
([dd89b90](https://github.com/noir-lang/noir/commit/dd89b900dfabbea889f6f181aa562e73a87215b7))
* Switch verify proof to arrays
([#5664](https://github.com/noir-lang/noir/issues/5664))
([c1ed9fb](https://github.com/noir-lang/noir/commit/c1ed9fb3f6e6778b519685fe218178b52c12076f))
* Type_of for pointer types
([#5536](https://github.com/noir-lang/noir/issues/5536))
([edb3810](https://github.com/noir-lang/noir/commit/edb3810c6863e3c7802fcaece82eb6de21ebd71f))
* Workaround from_slice with nested slices
([#5648](https://github.com/noir-lang/noir/issues/5648))
([6310a55](https://github.com/noir-lang/noir/commit/6310a55163ba3ce84e50a6df68d8963cd5222bd9))
</details>

<details><summary>0.49.0</summary>

## [0.49.0](https://github.com/noir-lang/noir/compare/v0.48.0...v0.49.0)
(2024-08-06)


### ⚠ BREAKING CHANGES

* constant inputs for blackbox
(https://github.com/AztecProtocol/aztec-packages/pull/7222)
* add session id to foreign call RPC requests
([#5205](https://github.com/noir-lang/noir/issues/5205))
* restrict noir word size to u32
([#5180](https://github.com/noir-lang/noir/issues/5180))
* switch `bb` over to read ACIR from nargo artifacts
(https://github.com/AztecProtocol/aztec-packages/pull/6283)
* specify databus arrays for BB
(https://github.com/AztecProtocol/aztec-packages/pull/6239)
* remove `Opcode::Brillig` from ACIR
(https://github.com/AztecProtocol/aztec-packages/pull/5995)
* AES blackbox
(https://github.com/AztecProtocol/aztec-packages/pull/6016)
* Bit shift is restricted to u8 right operand
([#4907](https://github.com/noir-lang/noir/issues/4907))
* contract interfaces and better function calls
(https://github.com/AztecProtocol/aztec-packages/pull/5687)
* change backend width to 4
(https://github.com/AztecProtocol/aztec-packages/pull/5374)
* Use fixed size arrays in black box functions where sizes are known
(https://github.com/AztecProtocol/aztec-packages/pull/5620)
* trap with revert data
(https://github.com/AztecProtocol/aztec-packages/pull/5732)
* **acir:** BrilligCall opcode
(https://github.com/AztecProtocol/aztec-packages/pull/5709)
* remove fixed-length keccak256
(https://github.com/AztecProtocol/aztec-packages/pull/5617)
* storage_layout and `#[aztec(storage)]`
(https://github.com/AztecProtocol/aztec-packages/pull/5387)
* **acir:** Add predicate to call opcode
(https://github.com/AztecProtocol/aztec-packages/pull/5616)
* contract_abi-exports
(https://github.com/AztecProtocol/aztec-packages/pull/5386)
* Brillig typed memory
(https://github.com/AztecProtocol/aztec-packages/pull/5395)

### Features

* `multi_scalar_mul` blackbox func
(https://github.com/AztecProtocol/aztec-packages/pull/6097)
([73a635e](https://github.com/noir-lang/noir/commit/73a635e5086cf3407f9846ce39807cd15b4e485a))
* `variable_base_scalar_mul` blackbox func
(https://github.com/AztecProtocol/aztec-packages/pull/6039)
([73a635e](https://github.com/noir-lang/noir/commit/73a635e5086cf3407f9846ce39807cd15b4e485a))
* **acir_gen:** Brillig stdlib
([#4848](https://github.com/noir-lang/noir/issues/4848))
([0c8175c](https://github.com/noir-lang/noir/commit/0c8175cb539efd9427c73ae5af0d48abe688ebab))
* **acir_gen:** Fold attribute at compile-time and initial non inlined
ACIR (https://github.com/AztecProtocol/aztec-packages/pull/5341)
([a0f7474](https://github.com/noir-lang/noir/commit/a0f7474ae6bd74132efdb945d2eb2383f3913cce))
* **acir_gen:** Width aware ACIR gen addition
([#5493](https://github.com/noir-lang/noir/issues/5493))
([85fa592](https://github.com/noir-lang/noir/commit/85fa592fdef3b8589ce03b232e1b51565837b540))
* **acir:** Add predicate to call opcode
(https://github.com/AztecProtocol/aztec-packages/pull/5616)
([2bd006a](https://github.com/noir-lang/noir/commit/2bd006ae07499e8702b0fa9565855f0a5ef1a589))
* **acir:** BrilligCall opcode
(https://github.com/AztecProtocol/aztec-packages/pull/5709)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Activate return_data in ACIR opcodes
([#5080](https://github.com/noir-lang/noir/issues/5080))
([c9fda3c](https://github.com/noir-lang/noir/commit/c9fda3c7fd4575bfe7d457e8d4230e071f0129a0))
* **acvm_js:** Execute program
([#4694](https://github.com/noir-lang/noir/issues/4694))
([386f6d0](https://github.com/noir-lang/noir/commit/386f6d0a5822912db878285cb001032a7c0ff622))
* **acvm:** Execute multiple circuits
(https://github.com/AztecProtocol/aztec-packages/pull/5380)
([a0f7474](https://github.com/noir-lang/noir/commit/a0f7474ae6bd74132efdb945d2eb2383f3913cce))
* Add native rust implementation of schnorr signature verification
([#5053](https://github.com/noir-lang/noir/issues/5053))
([fab1c35](https://github.com/noir-lang/noir/commit/fab1c3567d731ea7902635a7a020a8d14f94fd27))
* Add native rust implementations of pedersen functions
([#4871](https://github.com/noir-lang/noir/issues/4871))
([fb039f7](https://github.com/noir-lang/noir/commit/fb039f74df23aea39bc0593a5d538d82b4efadf0))
* Add return values to aztec fns
(https://github.com/AztecProtocol/aztec-packages/pull/5389)
([2bd006a](https://github.com/noir-lang/noir/commit/2bd006ae07499e8702b0fa9565855f0a5ef1a589))
* Add session id to foreign call RPC requests
([#5205](https://github.com/noir-lang/noir/issues/5205))
([14adafc](https://github.com/noir-lang/noir/commit/14adafc965fa9c833e096ec037e086aae67703ad))
* AES blackbox
(https://github.com/AztecProtocol/aztec-packages/pull/6016)
([73a635e](https://github.com/noir-lang/noir/commit/73a635e5086cf3407f9846ce39807cd15b4e485a))
* **avm:** Integrate AVM with initializers
(https://github.com/AztecProtocol/aztec-packages/pull/5469)
([2bd006a](https://github.com/noir-lang/noir/commit/2bd006ae07499e8702b0fa9565855f0a5ef1a589))
* Avoid heap allocs when going to/from field
(https://github.com/AztecProtocol/aztec-packages/pull/7547)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Bit shift is restricted to u8 right operand
([#4907](https://github.com/noir-lang/noir/issues/4907))
([c4b0369](https://github.com/noir-lang/noir/commit/c4b03691feca17ef268acab523292f3051f672ea))
* Brillig heterogeneous memory cells
(https://github.com/AztecProtocol/aztec-packages/pull/5608)
([305bcdc](https://github.com/noir-lang/noir/commit/305bcdcbd01cb84dbaac900f14cb6cf867f83bda))
* Brillig pointer codegen and execution
(https://github.com/AztecProtocol/aztec-packages/pull/5737)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Brillig typed memory
(https://github.com/AztecProtocol/aztec-packages/pull/5395)
([0bc18c4](https://github.com/noir-lang/noir/commit/0bc18c4f78171590dd58bded959f68f53a44cc8c))
* Change backend width to 4
(https://github.com/AztecProtocol/aztec-packages/pull/5374)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Constant inputs for blackbox
(https://github.com/AztecProtocol/aztec-packages/pull/7222)
([fb97bb9](https://github.com/noir-lang/noir/commit/fb97bb9b795c9d7af395b82fd6f0ea8111d59c11))
* Contract interfaces and better function calls
(https://github.com/AztecProtocol/aztec-packages/pull/5687)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Contract_abi-exports
(https://github.com/AztecProtocol/aztec-packages/pull/5386)
([2bd006a](https://github.com/noir-lang/noir/commit/2bd006ae07499e8702b0fa9565855f0a5ef1a589))
* Dynamic assertion payloads v2
(https://github.com/AztecProtocol/aztec-packages/pull/5949)
([73a635e](https://github.com/noir-lang/noir/commit/73a635e5086cf3407f9846ce39807cd15b4e485a))
* Handle `BrilligCall` opcodes in the debugger
([#4897](https://github.com/noir-lang/noir/issues/4897))
([b380dc4](https://github.com/noir-lang/noir/commit/b380dc44de5c9f8de278ece3d531ebbc2c9238ba))
* Impl of missing functionality in new key store
(https://github.com/AztecProtocol/aztec-packages/pull/5750)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Increase default expression width to 4
([#4995](https://github.com/noir-lang/noir/issues/4995))
([f01d309](https://github.com/noir-lang/noir/commit/f01d3090759a5ff0f1f83c5616d22890c6bd76be))
* Integrate new proving systems in e2e
(https://github.com/AztecProtocol/aztec-packages/pull/6971)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Make ACVM generic across fields
([#5114](https://github.com/noir-lang/noir/issues/5114))
([70f374c](https://github.com/noir-lang/noir/commit/70f374c06642962d8f2b95b80f8c938fcf7761d7))
* Make Brillig do integer arithmetic operations using u128 instead of
Bigint (https://github.com/AztecProtocol/aztec-packages/pull/7518)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Move abi demonomorphizer to noir_codegen and use noir_codegen in
protocol types
(https://github.com/AztecProtocol/aztec-packages/pull/6302)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Move to_radix to a blackbox
(https://github.com/AztecProtocol/aztec-packages/pull/6294)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* **nargo:** Handle call stacks for multiple Acir calls
([#4711](https://github.com/noir-lang/noir/issues/4711))
([5b23171](https://github.com/noir-lang/noir/commit/5b231714740447d82cde7cdbe65d4a8b46a31df4))
* **nargo:** Hidden option to show contract artifact paths written by
`nargo compile`
(https://github.com/AztecProtocol/aztec-packages/pull/6131)
([ff67e14](https://github.com/noir-lang/noir/commit/ff67e145d086bf6fdf58fb5e57927033e52e03d3))
* Parsing non-string assertion payloads in noir js
(https://github.com/AztecProtocol/aztec-packages/pull/6079)
([73a635e](https://github.com/noir-lang/noir/commit/73a635e5086cf3407f9846ce39807cd15b4e485a))
* Private Kernel Recursion
(https://github.com/AztecProtocol/aztec-packages/pull/6278)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Proper padding in ts AES and constrained AES in body and header
computations (https://github.com/AztecProtocol/aztec-packages/pull/6269)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Remove conditional compilation of `bn254_blackbox_solver`
([#5058](https://github.com/noir-lang/noir/issues/5058))
([9420d7c](https://github.com/noir-lang/noir/commit/9420d7c2ba6bbbf5ecb9a066837c505310955b6c))
* Remove external blackbox solver from acir simulator
(https://github.com/AztecProtocol/aztec-packages/pull/6586)
([a40a9a5](https://github.com/noir-lang/noir/commit/a40a9a55571deed386688fb84260bdf2794d4d38))
* Restore hashing args via slice for performance
(https://github.com/AztecProtocol/aztec-packages/pull/5539)
([2bd006a](https://github.com/noir-lang/noir/commit/2bd006ae07499e8702b0fa9565855f0a5ef1a589))
* Restrict noir word size to u32
([#5180](https://github.com/noir-lang/noir/issues/5180))
([bdb2bc6](https://github.com/noir-lang/noir/commit/bdb2bc608ea8fd52d46545a38b68dd2558b28110))
* Separate runtimes of SSA functions before inlining
([#5121](https://github.com/noir-lang/noir/issues/5121))
([69eca9b](https://github.com/noir-lang/noir/commit/69eca9b8671fa54192bef814dd584fdb5387a5f7))
* Set aztec private functions to be recursive
(https://github.com/AztecProtocol/aztec-packages/pull/6192)
([73a635e](https://github.com/noir-lang/noir/commit/73a635e5086cf3407f9846ce39807cd15b4e485a))
* **simulator:** Fetch return values at circuit execution
(https://github.com/AztecProtocol/aztec-packages/pull/5642)
([305bcdc](https://github.com/noir-lang/noir/commit/305bcdcbd01cb84dbaac900f14cb6cf867f83bda))
* Specify databus arrays for BB
(https://github.com/AztecProtocol/aztec-packages/pull/6239)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Storage_layout and `#[aztec(storage)]`
(https://github.com/AztecProtocol/aztec-packages/pull/5387)
([2bd006a](https://github.com/noir-lang/noir/commit/2bd006ae07499e8702b0fa9565855f0a5ef1a589))
* Switch `bb` over to read ACIR from nargo artifacts
(https://github.com/AztecProtocol/aztec-packages/pull/6283)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/5572)
([2bd006a](https://github.com/noir-lang/noir/commit/2bd006ae07499e8702b0fa9565855f0a5ef1a589))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/5619)
([2bd006a](https://github.com/noir-lang/noir/commit/2bd006ae07499e8702b0fa9565855f0a5ef1a589))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/5697)
([305bcdc](https://github.com/noir-lang/noir/commit/305bcdcbd01cb84dbaac900f14cb6cf867f83bda))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/5794)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/5814)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/5935)
([1b867b1](https://github.com/noir-lang/noir/commit/1b867b121fba5db3087ca845b4934e6732b23fd1))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/5955)
([1b867b1](https://github.com/noir-lang/noir/commit/1b867b121fba5db3087ca845b4934e6732b23fd1))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/5999)
([1b867b1](https://github.com/noir-lang/noir/commit/1b867b121fba5db3087ca845b4934e6732b23fd1))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/6280)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/6332)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/6573)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7392)
([fb97bb9](https://github.com/noir-lang/noir/commit/fb97bb9b795c9d7af395b82fd6f0ea8111d59c11))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7400)
([fb97bb9](https://github.com/noir-lang/noir/commit/fb97bb9b795c9d7af395b82fd6f0ea8111d59c11))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7432)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7444)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7454)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7512)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7577)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7583)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* ToRadix BB + avm transpiler support
(https://github.com/AztecProtocol/aztec-packages/pull/6330)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Trap with revert data
(https://github.com/AztecProtocol/aztec-packages/pull/5732)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Typing return values of embedded_curve_ops
(https://github.com/AztecProtocol/aztec-packages/pull/7413)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Use fixed size arrays in black box functions where sizes are known
(https://github.com/AztecProtocol/aztec-packages/pull/5620)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Variable length returns
(https://github.com/AztecProtocol/aztec-packages/pull/5633)
([305bcdc](https://github.com/noir-lang/noir/commit/305bcdcbd01cb84dbaac900f14cb6cf867f83bda))


### Bug Fixes

* **acvm:** Mark outputs of Opcode::Call solvable
([#4708](https://github.com/noir-lang/noir/issues/4708))
([8fea405](https://github.com/noir-lang/noir/commit/8fea40576f262bd5bb588923c0660d8967404e56))
* Add support for nested arrays returned by oracles
([#5132](https://github.com/noir-lang/noir/issues/5132))
([f846879](https://github.com/noir-lang/noir/commit/f846879dd038328bd0a1d39a72b448ef52a1002b))
* Add trailing extra arguments for backend in gates_flamegraph
(https://github.com/AztecProtocol/aztec-packages/pull/7472)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Avoid huge unrolling in hash_args
(https://github.com/AztecProtocol/aztec-packages/pull/5703)
([305bcdc](https://github.com/noir-lang/noir/commit/305bcdcbd01cb84dbaac900f14cb6cf867f83bda))
* Avoid unnecessarily splitting expressions with multiplication terms
with a shared term
([#5291](https://github.com/noir-lang/noir/issues/5291))
([19884f1](https://github.com/noir-lang/noir/commit/19884f161dfc7d7ce75dd2c404b8ef39cdad2240))
* Catch panics from EC point creation (e.g. the point is at infinity)
([#4790](https://github.com/noir-lang/noir/issues/4790))
([645dba1](https://github.com/noir-lang/noir/commit/645dba192f16ef34018828186ffb297422a8dc73))
* Check for public args in aztec functions
(https://github.com/AztecProtocol/aztec-packages/pull/6355)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))
* Don't reuse brillig with slice arguments
(https://github.com/AztecProtocol/aztec-packages/pull/5800)
([0f9ae0a](https://github.com/noir-lang/noir/commit/0f9ae0ac1d68714b56ba4524aedcc67212494f1b))
* Handle struct with nested arrays in oracle return values
([#5244](https://github.com/noir-lang/noir/issues/5244))
([a30814f](https://github.com/noir-lang/noir/commit/a30814f1f767bf874cd7e2969f5061c68f16b9a7))
* Issue 4682 and add solver for unconstrained bigintegers
([#4729](https://github.com/noir-lang/noir/issues/4729))
([e4d33c1](https://github.com/noir-lang/noir/commit/e4d33c126a2795d9aaa6048d4e91b64cb4bbe4f2))
* Move BigInt modulus checks to runtime in brillig
([#5374](https://github.com/noir-lang/noir/issues/5374))
([741d339](https://github.com/noir-lang/noir/commit/741d33991f8e2918bf092c354ca56047e0274533))
* Proper field inversion for bigints
([#4802](https://github.com/noir-lang/noir/issues/4802))
([b46d0e3](https://github.com/noir-lang/noir/commit/b46d0e39f4252f8bbaa987f88d112e4c233b3d61))
* Revert "feat: Sync from noir
(https://github.com/AztecProtocol/aztec-packages/pull/7512)"
(https://github.com/AztecProtocol/aztec-packages/pull/7558)
([daad75c](https://github.com/noir-lang/noir/commit/daad75c26d19ae707b90a7424b77dab9937e8575))
* Runtime brillig bigint id assignment
([#5369](https://github.com/noir-lang/noir/issues/5369))
([a8928dd](https://github.com/noir-lang/noir/commit/a8928ddcffcae15babf7aa5aff0e462e4549552e))
* Temporarily revert to_radix blackbox
(https://github.com/AztecProtocol/aztec-packages/pull/6304)
([436bbda](https://github.com/noir-lang/noir/commit/436bbdaadb2a294b94f93e53d7d3cad3859c7e46))


### Miscellaneous Chores

* Remove `Opcode::Brillig` from ACIR
(https://github.com/AztecProtocol/aztec-packages/pull/5995)
([73a635e](https://github.com/noir-lang/noir/commit/73a635e5086cf3407f9846ce39807cd15b4e485a))
* Remove fixed-length keccak256
(https://github.com/AztecProtocol/aztec-packages/pull/5617)
([305bcdc](https://github.com/noir-lang/noir/commit/305bcdcbd01cb84dbaac900f14cb6cf867f83bda))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: kevaundray <[email protected]>

nightly-2024-07-30: chore(github): Switch to organization-wide Issue templates (#5622)

30 Jul 02:19
5ef9daa
Compare
Choose a tag to compare
# Description

## Summary\*

Following https://github.com/noir-lang/.github/pull/29, we can now pull
directly from the organization-wide Issue templates and simplify
templates to maintain.

This PR deletes the repo-specific Issue templates, so GitHub would then
automatically pull the org-wide templates.

## 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.

Preview the templates:
https://github.com/noir-lang-test/noir/issues/new/choose

nightly-2024-07-29: feat: Remove 'comptime or separate crate' restriction on comptime cod…

29 Jul 02:20
1cddf42
Compare
Choose a tag to compare
…e (#5609)

# Description

## Problem\*

Resolves <none, this is a bonus>

## Summary\*

Removes the restriction that comptime code can only call into other
comptime code or code in a separate crate. This is possible now that
functions can be lazily resolved in the interpreter.

This means we no longer need hacky solutions like "comptime impl" on
trait impls. `comptime` itself also gets simplified from its previous
two meanings of "run this at comptime" and "make this visible to other
comptime code" to just "run this at comptime."

## Additional Context

I've also snuck in a sneaky ordering change where we run annotations on
traits before annotations on structs. Function annotations are still run
last.

## 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-28: feat: Remove 'comptime or separate crate' restriction on comptime cod…

28 Jul 02:21
1cddf42
Compare
Choose a tag to compare
…e (#5609)

# Description

## Problem\*

Resolves <none, this is a bonus>

## Summary\*

Removes the restriction that comptime code can only call into other
comptime code or code in a separate crate. This is possible now that
functions can be lazily resolved in the interpreter.

This means we no longer need hacky solutions like "comptime impl" on
trait impls. `comptime` itself also gets simplified from its previous
two meanings of "run this at comptime" and "make this visible to other
comptime code" to just "run this at comptime."

## Additional Context

I've also snuck in a sneaky ordering change where we run annotations on
traits before annotations on structs. Function annotations are still run
last.

## 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-27: feat: Remove 'comptime or separate crate' restriction on comptime cod…

27 Jul 02:18
1cddf42
Compare
Choose a tag to compare
…e (#5609)

# Description

## Problem\*

Resolves <none, this is a bonus>

## Summary\*

Removes the restriction that comptime code can only call into other
comptime code or code in a separate crate. This is possible now that
functions can be lazily resolved in the interpreter.

This means we no longer need hacky solutions like "comptime impl" on
trait impls. `comptime` itself also gets simplified from its previous
two meanings of "run this at comptime" and "make this visible to other
comptime code" to just "run this at comptime."

## Additional Context

I've also snuck in a sneaky ordering change where we run annotations on
traits before annotations on structs. Function annotations are still run
last.

## 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-26: feat: turbofish operator on path segments (#5603)

26 Jul 02:19
0bb8372
Compare
Choose a tag to compare
# Description

## Problem

Part of #5584

## Summary

This PR adds support for parsing turbofishes in any path segments.
Turbofish is only still checked when elaborating variables, but only for
the last turbofish (like before). For now any other placement of a
turbofish will give a type error, but at least they can be parsed now.
In later PRs we can make them work in the middle of variables, in
constructors, etc.

## Additional Context

Right now turbofishes aren't parsed in named typed (for example in a
struct pattern). The reason is that if I use `path()` instead of
`path_no_turbofish()` then the parser gives a stack overflow and I'm not
sure why. Maybe it's because `parse_type()` is used recursively, I'm not
sure... but these stack overflow errors are kind of hard to diagnose. In
any case we can parse those later on once we decide to support turbofish
in struct patterns.

Also, because a `Path`'s segments changed from `Vec<Ident>` to
`Vec<PathSegment>` some functions, like `Path::last_segment()` made more
sense if they returned `PathSegment` instead of `Ident`. Then I
introduced a bunch of helper functions to reduce some call chains, but
also introduced helpers like `last_name()` which is nice because it
returns a `&str` where in some cases an unnecessary clone was made (so
some refactors/cleanups are included in this PR as part of this
feature).

## 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.