feat: add a warning when using unsafe blocks without safety comments#6860
feat: add a warning when using unsafe blocks without safety comments#6860
Conversation
Peak Memory Sample
|
Compilation Sample
|
Execution Sample
|
|
🚀 Deployed on https://6764601f16d2690dfcb11c81--noir-docs.netlify.app |
michaeljklein
left a comment
There was a problem hiding this comment.
LGTM besides some docs/nits
|
Have you considered alternatives to a new comment type? One alternative is using doc comments, either on top of /// This is a safety comment
unsafe { ... }or inside it: unsafe {
/// This is a safety comment
}Mainly because those doc comments already reach the parser and go into the AST (in some cases). |
Yes I did:
So basically, I don't have strong opinion on this, I'm happy to change if you think it would be better. |
|
FYI @noir-lang/developerrelations on Noir doc changes. |
…oir-lang/noir#6898) chore: clean up gates reports script (noir-lang/noir#6896) chore: move empty programs to `compile_success_empty` (noir-lang/noir#6891) feat: add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) chore: quick docs fix for #6839 (noir-lang/noir#6840) chore: Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) chore: Use smallvec for instruction results (noir-lang/noir#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang/noir#6874) fix: don't deduplicate binary math of unsigned types (noir-lang/noir#6848) feat: warn on unnecessary unsafe blocks (noir-lang/noir#6867) chore: remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) chore: fix warnings (noir-lang/noir#6863) fix: detect cycles in globals (noir-lang/noir#6859) chore(ci): Execution time report (noir-lang/noir#6827) chore(ci): Add non determinism check and fixes (noir-lang/noir#6847) chore(docs): updating the solidity contract how-to guide (noir-lang/noir#6804) fix: double alias in path (noir-lang/noir#6855) feat: configurable external check failures (noir-lang/noir#6810) chore: move constant creation out of loop (noir-lang/noir#6836) fix: implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) chore: Use Vec for callstacks (noir-lang/noir#6821) feat: replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) chore: refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) chore(docs): updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) feat: Sync from aztec-packages (noir-lang/noir#6824) chore: Have rust-analyzer use the stable toolchain (noir-lang/noir#6825)
…r#6898) chore: clean up gates reports script (noir-lang/noir#6896) chore: move empty programs to `compile_success_empty` (noir-lang/noir#6891) feat: add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) chore: quick docs fix for #6839 (noir-lang/noir#6840) chore: Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) chore: Use smallvec for instruction results (noir-lang/noir#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang/noir#6874) fix: don't deduplicate binary math of unsigned types (noir-lang/noir#6848) feat: warn on unnecessary unsafe blocks (noir-lang/noir#6867) chore: remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) chore: fix warnings (noir-lang/noir#6863) fix: detect cycles in globals (noir-lang/noir#6859) chore(ci): Execution time report (noir-lang/noir#6827) chore(ci): Add non determinism check and fixes (noir-lang/noir#6847) chore(docs): updating the solidity contract how-to guide (noir-lang/noir#6804) fix: double alias in path (noir-lang/noir#6855) feat: configurable external check failures (noir-lang/noir#6810) chore: move constant creation out of loop (noir-lang/noir#6836) fix: implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) chore: Use Vec for callstacks (noir-lang/noir#6821) feat: replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) chore: refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) chore(docs): updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) feat: Sync from aztec-packages (noir-lang/noir#6824) chore: Have rust-analyzer use the stable toolchain (noir-lang/noir#6825)
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: remove malformed functions from brillig reports (noir-lang/noir#6898) chore: clean up gates reports script (noir-lang/noir#6896) chore: move empty programs to `compile_success_empty` (noir-lang/noir#6891) feat: add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) chore: quick docs fix for #6839 (noir-lang/noir#6840) chore: Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) chore: Use smallvec for instruction results (noir-lang/noir#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang/noir#6874) fix: don't deduplicate binary math of unsigned types (noir-lang/noir#6848) feat: warn on unnecessary unsafe blocks (noir-lang/noir#6867) chore: remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) chore: fix warnings (noir-lang/noir#6863) fix: detect cycles in globals (noir-lang/noir#6859) chore(ci): Execution time report (noir-lang/noir#6827) chore(ci): Add non determinism check and fixes (noir-lang/noir#6847) chore(docs): updating the solidity contract how-to guide (noir-lang/noir#6804) fix: double alias in path (noir-lang/noir#6855) feat: configurable external check failures (noir-lang/noir#6810) chore: move constant creation out of loop (noir-lang/noir#6836) fix: implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) chore: Use Vec for callstacks (noir-lang/noir#6821) feat: replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) chore: refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) chore(docs): updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) feat: Sync from aztec-packages (noir-lang/noir#6824) chore: Have rust-analyzer use the stable toolchain (noir-lang/noir#6825) END_COMMIT_OVERRIDE --------- Co-authored-by: ludamad <adam.domurad@gmail.com> Co-authored-by: Tom French <tom@tomfren.ch> Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.68.1</summary> ## [0.68.1](aztec-package-v0.68.0...aztec-package-v0.68.1) (2024-12-23) ### Miscellaneous * Configurable parallelism in bootstrap ([#10909](#10909)) ([5260f1e](5260f1e)) </details> <details><summary>barretenberg.js: 0.68.1</summary> ## [0.68.1](barretenberg.js-v0.68.0...barretenberg.js-v0.68.1) (2024-12-23) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.68.1</summary> ## [0.68.1](aztec-packages-v0.68.0...aztec-packages-v0.68.1) (2024-12-23) ### Features * Add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) ([84a4005](84a4005)) * Add limit to unique contract call ([#10640](#10640)) ([d340f0b](d340f0b)) * Configurable external check failures (noir-lang/noir#6810) ([84a4005](84a4005)) * **docs:** Add aztec-wallet proving ([#10847](#10847)) ([3efae86](3efae86)) * Flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) ([84a4005](84a4005)) * **p2p:** Timeout peers, disconnect from badly scored peers ([#10907](#10907)) ([76a23eb](76a23eb)) * Replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) ([84a4005](84a4005)) * Revamped sequencer timetable and tx processing timeout ([#10870](#10870)) ([145122b](145122b)) * Sync from aztec-packages (noir-lang/noir#6824) ([84a4005](84a4005)) * Warn on unnecessary unsafe blocks (noir-lang/noir#6867) ([84a4005](84a4005)) ### Bug Fixes * Add devcoin to faucet after deployment ([#10903](#10903)) ([6aa5369](6aa5369)) * CI kind test fix ([#10932](#10932)) ([bda1ac7](bda1ac7)) * **ci:** Tester/builder start race conditions ([#10893](#10893)) ([4250782](4250782)) * Conditionally deploy deterministic deployment proxy ([#10936](#10936)) ([48624b7](48624b7)) * Degrade libp2p crypto package ([#10876](#10876)) ([9293f38](9293f38)) * Detect cycles in globals (noir-lang/noir#6859) ([84a4005](84a4005)) * Don't deduplicate binary math of unsigned types (noir-lang/noir#6848) ([84a4005](84a4005)) * Double alias in path (noir-lang/noir#6855) ([84a4005](84a4005)) * Implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) ([84a4005](84a4005)) * Install Yarn 4.5.2 to build WASM ([#10940](#10940)) ([2a76380](2a76380)) * Removed Sepolia stuff from devnet deploy action ([#10916](#10916)) ([fbf120b](fbf120b)) ### Miscellaneous * **avm:** Check that slice read/write are not out of memory range ([#10879](#10879)) ([ab3f318](ab3f318)), closes [#7385](#7385) * Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) ([84a4005](84a4005)) * **ci:** Add non determinism check and fixes (noir-lang/noir#6847) ([84a4005](84a4005)) * **ci:** Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) ([84a4005](84a4005)) * **ci:** Execution time report (noir-lang/noir#6827) ([84a4005](84a4005)) * **ci:** Take averages for compilation and execution report of small programs (noir-lang/noir#6874) ([84a4005](84a4005)) * Clean up gates reports script (noir-lang/noir#6896) ([84a4005](84a4005)) * Configurable parallelism in bootstrap ([#10909](#10909)) ([5260f1e](5260f1e)) * **docs:** Updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) ([84a4005](84a4005)) * **docs:** Updating the solidity contract how-to guide (noir-lang/noir#6804) ([84a4005](84a4005)) * Fix warnings (noir-lang/noir#6863) ([84a4005](84a4005)) * Have rust-analyzer use the stable toolchain (noir-lang/noir#6825) ([84a4005](84a4005)) * Move constant creation out of loop (noir-lang/noir#6836) ([84a4005](84a4005)) * Move empty programs to `compile_success_empty` (noir-lang/noir#6891) ([84a4005](84a4005)) * New default resource values for GKE ([#10928](#10928)) ([18e38d3](18e38d3)) * Quick docs fix for [#6839](#6839) (noir-lang/noir#6840) ([84a4005](84a4005)) * Refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) ([84a4005](84a4005)) * Remove get registered account from pxe ([#10479](#10479)) ([ee568ff](ee568ff)) * Remove malformed functions from brillig reports (noir-lang/noir#6898) ([84a4005](84a4005)) * Remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) ([84a4005](84a4005)) * Reorganise translator proving key construction ([#10853](#10853)) ([5da4d1b](5da4d1b)) * Replace relative paths to noir-protocol-circuits ([b9f9875](b9f9875)) * Update gates diff action ([#10917](#10917)) ([57439a7](57439a7)) * Use smallvec for instruction results (noir-lang/noir#6877) ([84a4005](84a4005)) * Use Vec for callstacks (noir-lang/noir#6821) ([84a4005](84a4005)) </details> <details><summary>barretenberg: 0.68.1</summary> ## [0.68.1](barretenberg-v0.68.0...barretenberg-v0.68.1) (2024-12-23) ### Features * Add limit to unique contract call ([#10640](#10640)) ([d340f0b](d340f0b)) ### Miscellaneous * **avm:** Check that slice read/write are not out of memory range ([#10879](#10879)) ([ab3f318](ab3f318)), closes [#7385](#7385) * Reorganise translator proving key construction ([#10853](#10853)) ([5da4d1b](5da4d1b)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.68.1</summary> ## [0.68.1](AztecProtocol/aztec-packages@aztec-package-v0.68.0...aztec-package-v0.68.1) (2024-12-23) ### Miscellaneous * Configurable parallelism in bootstrap ([#10909](AztecProtocol/aztec-packages#10909)) ([5260f1e](AztecProtocol/aztec-packages@5260f1e)) </details> <details><summary>barretenberg.js: 0.68.1</summary> ## [0.68.1](AztecProtocol/aztec-packages@barretenberg.js-v0.68.0...barretenberg.js-v0.68.1) (2024-12-23) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.68.1</summary> ## [0.68.1](AztecProtocol/aztec-packages@aztec-packages-v0.68.0...aztec-packages-v0.68.1) (2024-12-23) ### Features * Add a warning when using unsafe blocks without safety comments (noir-lang/noir#6860) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Add limit to unique contract call ([#10640](AztecProtocol/aztec-packages#10640)) ([d340f0b](AztecProtocol/aztec-packages@d340f0b)) * Configurable external check failures (noir-lang/noir#6810) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **docs:** Add aztec-wallet proving ([#10847](AztecProtocol/aztec-packages#10847)) ([3efae86](AztecProtocol/aztec-packages@3efae86)) * Flatten nested if-else statements with equivalent conditions (noir-lang/noir#6875) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **p2p:** Timeout peers, disconnect from badly scored peers ([#10907](AztecProtocol/aztec-packages#10907)) ([76a23eb](AztecProtocol/aztec-packages@76a23eb)) * Replace `eval_global_as_array_length` with type/interpreter evaluation (noir-lang/noir#6469) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Revamped sequencer timetable and tx processing timeout ([#10870](AztecProtocol/aztec-packages#10870)) ([145122b](AztecProtocol/aztec-packages@145122b)) * Sync from aztec-packages (noir-lang/noir#6824) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Warn on unnecessary unsafe blocks (noir-lang/noir#6867) ([84a4005](AztecProtocol/aztec-packages@84a4005)) ### Bug Fixes * Add devcoin to faucet after deployment ([#10903](AztecProtocol/aztec-packages#10903)) ([6aa5369](AztecProtocol/aztec-packages@6aa5369)) * CI kind test fix ([#10932](AztecProtocol/aztec-packages#10932)) ([bda1ac7](AztecProtocol/aztec-packages@bda1ac7)) * **ci:** Tester/builder start race conditions ([#10893](AztecProtocol/aztec-packages#10893)) ([4250782](AztecProtocol/aztec-packages@4250782)) * Conditionally deploy deterministic deployment proxy ([#10936](AztecProtocol/aztec-packages#10936)) ([48624b7](AztecProtocol/aztec-packages@48624b7)) * Degrade libp2p crypto package ([#10876](AztecProtocol/aztec-packages#10876)) ([9293f38](AztecProtocol/aztec-packages@9293f38)) * Detect cycles in globals (noir-lang/noir#6859) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Don't deduplicate binary math of unsigned types (noir-lang/noir#6848) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Double alias in path (noir-lang/noir#6855) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Implement `as_field` and `from_field` in the interpreter (noir-lang/noir#6829) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Install Yarn 4.5.2 to build WASM ([#10940](AztecProtocol/aztec-packages#10940)) ([2a76380](AztecProtocol/aztec-packages@2a76380)) * Removed Sepolia stuff from devnet deploy action ([#10916](AztecProtocol/aztec-packages#10916)) ([fbf120b](AztecProtocol/aztec-packages@fbf120b)) ### Miscellaneous * **avm:** Check that slice read/write are not out of memory range ([#10879](AztecProtocol/aztec-packages#10879)) ([ab3f318](AztecProtocol/aztec-packages@ab3f318)), closes [#7385](AztecProtocol/aztec-packages#7385) * Avoid duplicate Not instructions during flattening (noir-lang/noir#6886) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **ci:** Add non determinism check and fixes (noir-lang/noir#6847) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **ci:** Display times in compilation and execution reports only with seconds (noir-lang/noir#6880) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **ci:** Execution time report (noir-lang/noir#6827) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **ci:** Take averages for compilation and execution report of small programs (noir-lang/noir#6874) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Clean up gates reports script (noir-lang/noir#6896) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Configurable parallelism in bootstrap ([#10909](AztecProtocol/aztec-packages#10909)) ([5260f1e](AztecProtocol/aztec-packages@5260f1e)) * **docs:** Updating noirjs tutorial for 1.0.0 (noir-lang/noir#6792) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * **docs:** Updating the solidity contract how-to guide (noir-lang/noir#6804) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Fix warnings (noir-lang/noir#6863) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Have rust-analyzer use the stable toolchain (noir-lang/noir#6825) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Move constant creation out of loop (noir-lang/noir#6836) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Move empty programs to `compile_success_empty` (noir-lang/noir#6891) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * New default resource values for GKE ([#10928](AztecProtocol/aztec-packages#10928)) ([18e38d3](AztecProtocol/aztec-packages@18e38d3)) * Quick docs fix for [#6839](AztecProtocol/aztec-packages#6839) (noir-lang/noir#6840) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Refactor `DataFlowGraph.insert_instruction_and_results` (noir-lang/noir#6823) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Remove get registered account from pxe ([#10479](AztecProtocol/aztec-packages#10479)) ([ee568ff](AztecProtocol/aztec-packages@ee568ff)) * Remove malformed functions from brillig reports (noir-lang/noir#6898) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Remove the `as_field` and `from_field` built-ins (noir-lang/noir#6845) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Reorganise translator proving key construction ([#10853](AztecProtocol/aztec-packages#10853)) ([5da4d1b](AztecProtocol/aztec-packages@5da4d1b)) * Replace relative paths to noir-protocol-circuits ([b9f9875](AztecProtocol/aztec-packages@b9f9875)) * Update gates diff action ([#10917](AztecProtocol/aztec-packages#10917)) ([57439a7](AztecProtocol/aztec-packages@57439a7)) * Use smallvec for instruction results (noir-lang/noir#6877) ([84a4005](AztecProtocol/aztec-packages@84a4005)) * Use Vec for callstacks (noir-lang/noir#6821) ([84a4005](AztecProtocol/aztec-packages@84a4005)) </details> <details><summary>barretenberg: 0.68.1</summary> ## [0.68.1](AztecProtocol/aztec-packages@barretenberg-v0.68.0...barretenberg-v0.68.1) (2024-12-23) ### Features * Add limit to unique contract call ([#10640](AztecProtocol/aztec-packages#10640)) ([d340f0b](AztecProtocol/aztec-packages@d340f0b)) ### Miscellaneous * **avm:** Check that slice read/write are not out of memory range ([#10879](AztecProtocol/aztec-packages#10879)) ([ab3f318](AztecProtocol/aztec-packages@ab3f318)), closes [#7385](AztecProtocol/aztec-packages#7385) * Reorganise translator proving key construction ([#10853](AztecProtocol/aztec-packages#10853)) ([5da4d1b](AztecProtocol/aztec-packages@5da4d1b)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
* master: chore: add if/loop tip (separate from no-predicate noir-lang#5657) (noir-lang#6806) chore: move implementation of print foreign call into `nargo` (noir-lang#6865) chore: document format strings (noir-lang#6920) chore: add `rollup_root` and `rollup_block_merge` to tracked protocol circuits (noir-lang#6903) fix: consistent file_id across installation paths (noir-lang#6912) fix: bigint builtins are foreigns (noir-lang#6892) fix: remove unnecessary cast in bit-shift (noir-lang#6890) chore: Release Noir(1.0.0-beta.1) (noir-lang#6622) chore: Add `Instruction::Noop` (noir-lang#6899) chore: remove malformed functions from brillig reports (noir-lang#6898) chore: clean up gates reports script (noir-lang#6896) chore: move empty programs to `compile_success_empty` (noir-lang#6891) feat: add a warning when using unsafe blocks without safety comments (noir-lang#6860) chore: quick docs fix for noir-lang#6839 (noir-lang#6840) chore: Avoid duplicate Not instructions during flattening (noir-lang#6886) chore: Use smallvec for instruction results (noir-lang#6877) chore(ci): Display times in compilation and execution reports only with seconds (noir-lang#6880) feat: flatten nested if-else statements with equivalent conditions (noir-lang#6875) chore(ci): Take averages for compilation and execution report of small programs (noir-lang#6874) fix: don't deduplicate binary math of unsigned types (noir-lang#6848)
Description
Problem*
Resolves #6478
Summary*
Warn when an unsafe block does not start with a '//@safety' comment.
Additional Context
Documentation*
Check one:
PR Checklist*
cargo fmton default settings.