Skip to content

feat: Add compiler_unstable_features to Nargo.toml#9219

Merged
aakoshh merged 13 commits intomasterfrom
af/9164-nargo-toml-unstable-feats
Jul 17, 2025
Merged

feat: Add compiler_unstable_features to Nargo.toml#9219
aakoshh merged 13 commits intomasterfrom
af/9164-nargo-toml-unstable-feats

Conversation

@aakoshh
Copy link
Contributor

@aakoshh aakoshh commented Jul 16, 2025

Description

Problem*

Resolves #9164

Summary*

Adds a new compiler_unstable_features field to Nargo.toml under [package], which can be used by the current package or its dependencies to require an unstable feature to be enabled during compilation for files in that crate.

This allows the LSP to pick up whether the currently edited package does or doesn't need a feature, without having to edit the plugin settings where CLI arguments can be passed.

The requirement is on a crate-by-crate basis, so if dependency foo requires enums, but another dependency bar does not state that it does, then it would be an error in bar to use a match, unless the feature is enabled globally via CLI with -Zenums.

Required unstable features are ignored if features are explicitly enabled on the CLI, e.g. if foo requires enums, but we pass -Zownership, then enums are still disabled, because we interpret -Z as the developer taking control of what exactly is acceptable globally.

The PR also adds a --no-unstable-features CLI argument to ignore all requirements in manifests, in case someone finds it important to make sure no unstable features sneaked in from dependencies.

Additional Context

Example:

[package]
name = "fuzz_testing"
type = "bin"
authors = [""]
compiler_unstable_features = ["enums"]

[dependencies]

Documentation*

Check one:

  • No documentation needed.
  • Documentation included in this PR.
  • [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist*

  • I have tested the changes locally.
  • I have formatted the changes with Prettier and/or cargo fmt on default settings.

@github-actions github-actions bot added the documentation Improvements or additions to documentation label Jul 16, 2025
@aakoshh aakoshh requested review from a team and rkarabut July 16, 2025 12:30
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Execution Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 9e6e073 Previous: 39a504c Ratio
rollup-root 0.005 s 0.004 s 1.25

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Compilation Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 32dd1a6 Previous: e5c6d5d Ratio
rollup-block-root-single-tx 255 s 196 s 1.30

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

@github-actions
Copy link
Contributor

github-actions bot commented Jul 16, 2025

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Test Suite Duration'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 2ddd080 Previous: 69827d1 Ratio
test_report_zkpassport_noir_rsa_ 2 s 1 s 2

This comment was automatically generated by workflow using github-action-benchmark.

CC: @TomAFrench

@aakoshh aakoshh enabled auto-merge July 17, 2025 12:04
@github-actions
Copy link
Contributor

FYI @noir-lang/developerrelations on Noir doc changes.

@aakoshh aakoshh added this pull request to the merge queue Jul 17, 2025
Merged via the queue into master with commit 87aeccf Jul 17, 2025
120 of 122 checks passed
@aakoshh aakoshh deleted the af/9164-nargo-toml-unstable-feats branch July 17, 2025 12:53
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Jul 22, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(SSA): validate MakeArray instruction
(noir-lang/noir#9183)
chore(docs): Add links to ACIR and source reference docs
(noir-lang/noir#9260)
fix: comptime code not mutating shared ref to struct field
(noir-lang/noir#9250)
fix(acir_gen): Bail out of `handle_constant_index` when it encounters
`DynamicArray` (noir-lang/noir#9259)
feat: allow paths in l-values
(noir-lang/noir#9254)
fix: parse AsTraitPath in type expressions
(noir-lang/noir#9258)
chore: add acir-gen unit tests per ssa instruction (2)
(noir-lang/noir#9185)
fix(licm): Ensure that all nested loops the current block is part of are
guaranteed to execute (noir-lang/noir#9249)
chore: bump external pinned commits
(noir-lang/noir#9256)
chore: enforce clippy in `ssa_fuzzer`
(noir-lang/noir#9247)
chore: clippy (noir-lang/noir#9246)
chore: skip `ram_blowup_regression` on PRs
(noir-lang/noir#9231)
chore: mark bignum as expected to pass
(noir-lang/noir#9244)
fix: suggest traits via visible reexports if they are not directly
visible (noir-lang/noir#9242)
fix: bind self when type-checking AsTraitPath
(noir-lang/noir#9236)
chore(docs): Include list to hashing libraries at the top of the
relevant docs page (noir-lang/noir#9239)
fix(fuzz): Use scoping for variable dynamism
(noir-lang/noir#9233)
fix(ssa): Change constraint message to "multiply"
(noir-lang/noir#9230)
feat: Add `compiler_unstable_features` to `Nargo.toml`
(noir-lang/noir#9219)
chore(fuzz): Increase loop frequency in Brillig
(noir-lang/noir#9228)
chore: bump noir-edwards dep
(noir-lang/noir#9229)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Co-authored-by: Jan Beneš <janbenes1234@gmail.com>
github-merge-queue bot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Jul 22, 2025
Automated pull of nightly from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
fix(SSA): validate MakeArray instruction
(noir-lang/noir#9183)
chore(docs): Add links to ACIR and source reference docs
(noir-lang/noir#9260)
fix: comptime code not mutating shared ref to struct field
(noir-lang/noir#9250)
fix(acir_gen): Bail out of `handle_constant_index` when it encounters
`DynamicArray` (noir-lang/noir#9259)
feat: allow paths in l-values
(noir-lang/noir#9254)
fix: parse AsTraitPath in type expressions
(noir-lang/noir#9258)
chore: add acir-gen unit tests per ssa instruction (2)
(noir-lang/noir#9185)
fix(licm): Ensure that all nested loops the current block is part of are
guaranteed to execute (noir-lang/noir#9249)
chore: bump external pinned commits
(noir-lang/noir#9256)
chore: enforce clippy in `ssa_fuzzer`
(noir-lang/noir#9247)
chore: clippy (noir-lang/noir#9246)
chore: skip `ram_blowup_regression` on PRs
(noir-lang/noir#9231)
chore: mark bignum as expected to pass
(noir-lang/noir#9244)
fix: suggest traits via visible reexports if they are not directly
visible (noir-lang/noir#9242)
fix: bind self when type-checking AsTraitPath
(noir-lang/noir#9236)
chore(docs): Include list to hashing libraries at the top of the
relevant docs page (noir-lang/noir#9239)
fix(fuzz): Use scoping for variable dynamism
(noir-lang/noir#9233)
fix(ssa): Change constraint message to "multiply"
(noir-lang/noir#9230)
feat: Add `compiler_unstable_features` to `Nargo.toml`
(noir-lang/noir#9219)
chore(fuzz): Increase loop frequency in Brillig
(noir-lang/noir#9228)
chore: bump noir-edwards dep
(noir-lang/noir#9229)
END_COMMIT_OVERRIDE

---------

Co-authored-by: AztecBot <tech@aztecprotocol.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Co-authored-by: Jan Beneš <janbenes1234@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable experimental features in Nargo.toml

2 participants