From 2a0edaab6fac8bcfdd5ec186aa93d54d846664af Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Fri, 1 Nov 2024 16:16:06 +0000 Subject: [PATCH 1/6] Run test matrix on test_programs --- tooling/nargo_cli/build.rs | 49 +++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/tooling/nargo_cli/build.rs b/tooling/nargo_cli/build.rs index 94f74a06149..3056b525486 100644 --- a/tooling/nargo_cli/build.rs +++ b/tooling/nargo_cli/build.rs @@ -92,17 +92,22 @@ fn generate_test_case( test_file: &mut File, test_name: &str, test_dir: &std::path::Display, + test_command: &str, test_content: &str, ) { write!( test_file, r#" -#[test] -fn test_{test_name}() {{ +#[test_case::test_matrix( + [i64::MIN, 0, i64::MAX] +)] +fn test_{test_name}(inliner_aggressiveness: i64) {{ let test_program_dir = PathBuf::from("{test_dir}"); let mut nargo = Command::cargo_bin("nargo").unwrap(); nargo.arg("--program-dir").arg(test_program_dir); + nargo.arg("{test_command}").arg("--force"); + nargo.arg("--inliner-aggressiveness").arg(inliner_aggressiveness.to_string()); {test_content} }} "# @@ -128,9 +133,8 @@ fn generate_execution_success_tests(test_file: &mut File, test_data_dir: &Path) test_file, &test_name, &test_dir, + "execute", r#" - nargo.arg("execute").arg("--force"); - nargo.assert().success();"#, ); @@ -139,10 +143,10 @@ fn generate_execution_success_tests(test_file: &mut File, test_data_dir: &Path) test_file, &format!("{test_name}_brillig"), &test_dir, + "execute", r#" - nargo.arg("execute").arg("--force").arg("--force-brillig"); - - nargo.assert().success();"#, + nargo.arg("--force-brillig"); + nargo.assert().success();"#, ); } } @@ -167,9 +171,8 @@ fn generate_execution_failure_tests(test_file: &mut File, test_data_dir: &Path) test_file, &test_name, &test_dir, + "execute", r#" - nargo.arg("execute").arg("--force"); - nargo.assert().failure().stderr(predicate::str::contains("The application panicked (crashed).").not());"#, ); } @@ -194,10 +197,9 @@ fn generate_noir_test_success_tests(test_file: &mut File, test_data_dir: &Path) test_file, &test_name, &test_dir, + "test", r#" - nargo.arg("test"); - - nargo.assert().success();"#, + nargo.assert().success();"#, ); } writeln!(test_file, "}}").unwrap(); @@ -220,10 +222,9 @@ fn generate_noir_test_failure_tests(test_file: &mut File, test_data_dir: &Path) test_file, &test_name, &test_dir, + "test", r#" - nargo.arg("test"); - - nargo.assert().failure();"#, + nargo.assert().failure();"#, ); } writeln!(test_file, "}}").unwrap(); @@ -270,10 +271,10 @@ fn generate_compile_success_empty_tests(test_file: &mut File, test_data_dir: &Pa test_file, &test_name, &test_dir, + "info", &format!( r#" - nargo.arg("info").arg("--json").arg("--force"); - + nargo.arg("--json"); {assert_zero_opcodes}"#, ), ); @@ -299,9 +300,9 @@ fn generate_compile_success_contract_tests(test_file: &mut File, test_data_dir: test_file, &test_name, &test_dir, + "compile", r#" - nargo.arg("compile").arg("--force"); - nargo.assert().success().stderr(predicate::str::contains("warning:").not());"#, + nargo.assert().success().stderr(predicate::str::contains("warning:").not());"#, ); } writeln!(test_file, "}}").unwrap(); @@ -326,9 +327,9 @@ fn generate_compile_success_no_bug_tests(test_file: &mut File, test_data_dir: &P test_file, &test_name, &test_dir, + "compile", r#" - nargo.arg("compile").arg("--force"); - nargo.assert().success().stderr(predicate::str::contains("bug:").not());"#, + nargo.assert().success().stderr(predicate::str::contains("bug:").not());"#, ); } writeln!(test_file, "}}").unwrap(); @@ -352,9 +353,9 @@ fn generate_compile_failure_tests(test_file: &mut File, test_data_dir: &Path) { test_file, &test_name, &test_dir, - r#"nargo.arg("compile").arg("--force"); - - nargo.assert().failure().stderr(predicate::str::contains("The application panicked (crashed).").not());"#, + "compile", + r#" + nargo.assert().failure().stderr(predicate::str::contains("The application panicked (crashed).").not());"#, ); } writeln!(test_file, "}}").unwrap(); From 85a6b2bc8d6f7a5223636eee0e9b2e3e8eb0d274 Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Mon, 4 Nov 2024 12:37:29 +0000 Subject: [PATCH 2/6] Add MatrixConfig to cover brillig --- tooling/nargo_cli/build.rs | 92 +++++++++++++++++++++++++------------- 1 file changed, 61 insertions(+), 31 deletions(-) diff --git a/tooling/nargo_cli/build.rs b/tooling/nargo_cli/build.rs index 3056b525486..9c9e8d5b623 100644 --- a/tooling/nargo_cli/build.rs +++ b/tooling/nargo_cli/build.rs @@ -88,26 +88,49 @@ fn read_test_cases( }) } -fn generate_test_case( +struct MatrixConfig { + vary_brillig: bool, + vary_inliner: bool, +} + +impl Default for MatrixConfig { + fn default() -> Self { + Self { vary_brillig: false, vary_inliner: true } + } +} + +/// Generate all test cases for a given test directory. +/// These will be executed serially, but independently from other test directories. +/// Be careful not to run multiple tests on the same directory concurrently because +/// they can override each others' compilation artifact files. +fn generate_test_cases( test_file: &mut File, test_name: &str, test_dir: &std::path::Display, test_command: &str, test_content: &str, + matrix_config: &MatrixConfig, ) { + let brillig_cases = if matrix_config.vary_brillig { "[false, true]" } else { "[false]" }; + let inliner_cases = if matrix_config.vary_inliner { "[i64::MIN, 0, i64::MAX]" } else { "[0]" }; write!( test_file, r#" #[test_case::test_matrix( - [i64::MIN, 0, i64::MAX] + {brillig_cases}, + {inliner_cases} )] -fn test_{test_name}(inliner_aggressiveness: i64) {{ +fn test_{test_name}(force_brillig: bool, inliner_aggressiveness: i64) {{ let test_program_dir = PathBuf::from("{test_dir}"); let mut nargo = Command::cargo_bin("nargo").unwrap(); nargo.arg("--program-dir").arg(test_program_dir); nargo.arg("{test_command}").arg("--force"); nargo.arg("--inliner-aggressiveness").arg(inliner_aggressiveness.to_string()); + if force_brillig {{ + nargo.arg("--force-brillig"); + }} + {test_content} }} "# @@ -129,26 +152,19 @@ fn generate_execution_success_tests(test_file: &mut File, test_data_dir: &Path) for (test_name, test_dir) in test_cases { let test_dir = test_dir.display(); - generate_test_case( + generate_test_cases( test_file, &test_name, &test_dir, "execute", r#" - nargo.assert().success();"#, + nargo.assert().success(); + "#, + &MatrixConfig { + vary_brillig: !IGNORED_BRILLIG_TESTS.contains(&test_name.as_str()), + vary_inliner: true, + }, ); - - if !IGNORED_BRILLIG_TESTS.contains(&test_name.as_str()) { - generate_test_case( - test_file, - &format!("{test_name}_brillig"), - &test_dir, - "execute", - r#" - nargo.arg("--force-brillig"); - nargo.assert().success();"#, - ); - } } writeln!(test_file, "}}").unwrap(); } @@ -167,13 +183,15 @@ fn generate_execution_failure_tests(test_file: &mut File, test_data_dir: &Path) for (test_name, test_dir) in test_cases { let test_dir = test_dir.display(); - generate_test_case( + generate_test_cases( test_file, &test_name, &test_dir, "execute", r#" - nargo.assert().failure().stderr(predicate::str::contains("The application panicked (crashed).").not());"#, + nargo.assert().failure().stderr(predicate::str::contains("The application panicked (crashed).").not()); + "#, + &MatrixConfig::default(), ); } writeln!(test_file, "}}").unwrap(); @@ -193,13 +211,15 @@ fn generate_noir_test_success_tests(test_file: &mut File, test_data_dir: &Path) for (test_name, test_dir) in test_cases { let test_dir = test_dir.display(); - generate_test_case( + generate_test_cases( test_file, &test_name, &test_dir, "test", r#" - nargo.assert().success();"#, + nargo.assert().success(); + "#, + &MatrixConfig::default(), ); } writeln!(test_file, "}}").unwrap(); @@ -218,13 +238,15 @@ fn generate_noir_test_failure_tests(test_file: &mut File, test_data_dir: &Path) .unwrap(); for (test_name, test_dir) in test_cases { let test_dir = test_dir.display(); - generate_test_case( + generate_test_cases( test_file, &test_name, &test_dir, "test", r#" - nargo.assert().failure();"#, + nargo.assert().failure(); + "#, + &MatrixConfig::default(), ); } writeln!(test_file, "}}").unwrap(); @@ -267,7 +289,7 @@ fn generate_compile_success_empty_tests(test_file: &mut File, test_data_dir: &Pa assert_eq!(num_opcodes.as_u64().expect("number of opcodes should fit in a u64"), 0); "#; - generate_test_case( + generate_test_cases( test_file, &test_name, &test_dir, @@ -275,8 +297,10 @@ fn generate_compile_success_empty_tests(test_file: &mut File, test_data_dir: &Pa &format!( r#" nargo.arg("--json"); - {assert_zero_opcodes}"#, + {assert_zero_opcodes} + "#, ), + &MatrixConfig::default(), ); } writeln!(test_file, "}}").unwrap(); @@ -296,13 +320,15 @@ fn generate_compile_success_contract_tests(test_file: &mut File, test_data_dir: for (test_name, test_dir) in test_cases { let test_dir = test_dir.display(); - generate_test_case( + generate_test_cases( test_file, &test_name, &test_dir, "compile", r#" - nargo.assert().success().stderr(predicate::str::contains("warning:").not());"#, + nargo.assert().success().stderr(predicate::str::contains("warning:").not()); + "#, + &MatrixConfig::default(), ); } writeln!(test_file, "}}").unwrap(); @@ -323,13 +349,15 @@ fn generate_compile_success_no_bug_tests(test_file: &mut File, test_data_dir: &P for (test_name, test_dir) in test_cases { let test_dir = test_dir.display(); - generate_test_case( + generate_test_cases( test_file, &test_name, &test_dir, "compile", r#" - nargo.assert().success().stderr(predicate::str::contains("bug:").not());"#, + nargo.assert().success().stderr(predicate::str::contains("bug:").not()); + "#, + &MatrixConfig::default(), ); } writeln!(test_file, "}}").unwrap(); @@ -349,13 +377,15 @@ fn generate_compile_failure_tests(test_file: &mut File, test_data_dir: &Path) { for (test_name, test_dir) in test_cases { let test_dir = test_dir.display(); - generate_test_case( + generate_test_cases( test_file, &test_name, &test_dir, "compile", r#" - nargo.assert().failure().stderr(predicate::str::contains("The application panicked (crashed).").not());"#, + nargo.assert().failure().stderr(predicate::str::contains("The application panicked (crashed).").not()); + "#, + &MatrixConfig::default(), ); } writeln!(test_file, "}}").unwrap(); From 52d25ac6d355983168ab711b28a0d8047775e647 Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Mon, 4 Nov 2024 13:15:29 +0000 Subject: [PATCH 3/6] Use a Mutex to make sure only one test compiles artifacts in a given directory at any time --- Cargo.lock | 1 + Cargo.toml | 1 + acvm-repo/bn254_blackbox_solver/Cargo.toml | 4 ++-- tooling/nargo_cli/Cargo.toml | 1 + tooling/nargo_cli/build.rs | 16 +++++++++++++++- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3659a264737..aca7f199bb5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2582,6 +2582,7 @@ dependencies = [ "fm", "iai", "iter-extended", + "lazy_static", "light-poseidon", "nargo", "nargo_fmt", diff --git a/Cargo.toml b/Cargo.toml index d819c37daeb..df5cc1f3e4b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -142,6 +142,7 @@ build-data = "0.1.3" bincode = "1.3.3" hex = "0.4.2" const_format = "0.2.30" +lazy_static = "1.4" num-bigint = "0.4" num-traits = "0.2" similar-asserts = "1.5.0" diff --git a/acvm-repo/bn254_blackbox_solver/Cargo.toml b/acvm-repo/bn254_blackbox_solver/Cargo.toml index 97f6b76a9a3..062131bb672 100644 --- a/acvm-repo/bn254_blackbox_solver/Cargo.toml +++ b/acvm-repo/bn254_blackbox_solver/Cargo.toml @@ -19,10 +19,10 @@ workspace = true acir.workspace = true acvm_blackbox_solver.workspace = true hex.workspace = true -lazy_static = "1.4" +lazy_static.workspace = true ark-bn254.workspace = true -grumpkin.workspace = true +grumpkin.workspace = true ark-ec.workspace = true ark-ff.workspace = true num-bigint.workspace = true diff --git a/tooling/nargo_cli/Cargo.toml b/tooling/nargo_cli/Cargo.toml index 4e45749ddaf..317706bb237 100644 --- a/tooling/nargo_cli/Cargo.toml +++ b/tooling/nargo_cli/Cargo.toml @@ -88,6 +88,7 @@ sha3.workspace = true iai = "0.1.1" test-binary = "3.0.2" test-case.workspace = true +lazy_static.workspace = true light-poseidon = "0.2.0" diff --git a/tooling/nargo_cli/build.rs b/tooling/nargo_cli/build.rs index 9c9e8d5b623..678b8aaad60 100644 --- a/tooling/nargo_cli/build.rs +++ b/tooling/nargo_cli/build.rs @@ -95,7 +95,12 @@ struct MatrixConfig { impl Default for MatrixConfig { fn default() -> Self { - Self { vary_brillig: false, vary_inliner: true } + Self { + // Only used with execution, and only on selected tests. + vary_brillig: false, + // Only seems to have an effect on the `execute_success` cases. + vary_inliner: false, + } } } @@ -111,16 +116,25 @@ fn generate_test_cases( test_content: &str, matrix_config: &MatrixConfig, ) { + let mutex_name = format! {"TEST_MUTEX_{}", test_name.to_uppercase()}; let brillig_cases = if matrix_config.vary_brillig { "[false, true]" } else { "[false]" }; let inliner_cases = if matrix_config.vary_inliner { "[i64::MIN, 0, i64::MAX]" } else { "[0]" }; write!( test_file, r#" +lazy_static::lazy_static! {{ + /// Prevent concurrent tests in the matrix from overwriting the compilation artifacts in {test_dir} + static ref {mutex_name}: std::sync::Mutex<()> = std::sync::Mutex::new(()); +}} + #[test_case::test_matrix( {brillig_cases}, {inliner_cases} )] fn test_{test_name}(force_brillig: bool, inliner_aggressiveness: i64) {{ + // Ignore poisoning errors if some of the matrix cases failed. + let _guard = {mutex_name}.lock().unwrap_or_else(|e| e.into_inner()); + let test_program_dir = PathBuf::from("{test_dir}"); let mut nargo = Command::cargo_bin("nargo").unwrap(); From 0229ddf489fc0471bb98d15b3838dbbb4026b638 Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Mon, 4 Nov 2024 13:23:43 +0000 Subject: [PATCH 4/6] Derive Default matrix config --- tooling/nargo_cli/build.rs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/tooling/nargo_cli/build.rs b/tooling/nargo_cli/build.rs index 678b8aaad60..0c612ace888 100644 --- a/tooling/nargo_cli/build.rs +++ b/tooling/nargo_cli/build.rs @@ -88,22 +88,14 @@ fn read_test_cases( }) } +#[derive(Default)] struct MatrixConfig { + // Only used with execution, and only on selected tests. vary_brillig: bool, + // Only seems to have an effect on the `execute_success` cases. vary_inliner: bool, } -impl Default for MatrixConfig { - fn default() -> Self { - Self { - // Only used with execution, and only on selected tests. - vary_brillig: false, - // Only seems to have an effect on the `execute_success` cases. - vary_inliner: false, - } - } -} - /// Generate all test cases for a given test directory. /// These will be executed serially, but independently from other test directories. /// Be careful not to run multiple tests on the same directory concurrently because From 3991100682c839302d3d8ec0b768029364009459 Mon Sep 17 00:00:00 2001 From: Akosh Farkash Date: Fri, 8 Nov 2024 11:57:19 +0000 Subject: [PATCH 5/6] fix: Change PoseidonHasher::write to be inline_always (#6468) --- compiler/noirc_evaluator/src/ssa.rs | 4 +- noir_stdlib/src/hash/poseidon/mod.nr | 1 + .../execution_success/eddsa/src/main.nr | 1 - tooling/nargo_cli/build.rs | 74 +++++++++++++++++-- 4 files changed, 70 insertions(+), 10 deletions(-) diff --git a/compiler/noirc_evaluator/src/ssa.rs b/compiler/noirc_evaluator/src/ssa.rs index 0c4e42f09ef..0e5635f9ebb 100644 --- a/compiler/noirc_evaluator/src/ssa.rs +++ b/compiler/noirc_evaluator/src/ssa.rs @@ -97,7 +97,7 @@ pub(crate) fn optimize_into_acir( .run_pass(Ssa::remove_paired_rc, "After Removing Paired rc_inc & rc_decs:") .run_pass(Ssa::separate_runtime, "After Runtime Separation:") .run_pass(Ssa::resolve_is_unconstrained, "After Resolving IsUnconstrained:") - .run_pass(|ssa| ssa.inline_functions(options.inliner_aggressiveness), "After Inlining:") + .run_pass(|ssa| ssa.inline_functions(options.inliner_aggressiveness), "After Inlining (1st):") // Run mem2reg with the CFG separated into blocks .run_pass(Ssa::mem2reg, "After Mem2Reg (1st):") .run_pass(Ssa::simplify_cfg, "After Simplifying (1st):") @@ -118,7 +118,7 @@ pub(crate) fn optimize_into_acir( // may create an SSA which inlining fails to handle. .run_pass( |ssa| ssa.inline_functions_with_no_predicates(options.inliner_aggressiveness), - "After Inlining:", + "After Inlining (2nd):", ) .run_pass(Ssa::remove_if_else, "After Remove IfElse:") .run_pass(Ssa::fold_constants, "After Constant Folding:") diff --git a/noir_stdlib/src/hash/poseidon/mod.nr b/noir_stdlib/src/hash/poseidon/mod.nr index 6f0e461a610..e2e47959024 100644 --- a/noir_stdlib/src/hash/poseidon/mod.nr +++ b/noir_stdlib/src/hash/poseidon/mod.nr @@ -346,6 +346,7 @@ impl Hasher for PoseidonHasher { result } + #[inline_always] fn write(&mut self, input: Field) { self._state = self._state.push_back(input); } diff --git a/test_programs/execution_success/eddsa/src/main.nr b/test_programs/execution_success/eddsa/src/main.nr index 48e1e4af9fb..d4c3664f0c9 100644 --- a/test_programs/execution_success/eddsa/src/main.nr +++ b/test_programs/execution_success/eddsa/src/main.nr @@ -2,7 +2,6 @@ use std::compat; use std::ec::consts::te::baby_jubjub; use std::ec::tecurve::affine::Point as TEPoint; use std::eddsa::{eddsa_poseidon_verify, eddsa_to_pub, eddsa_verify}; -use std::hash; use std::hash::poseidon2::Poseidon2Hasher; fn main(msg: pub Field, _priv_key_a: Field, _priv_key_b: Field) { diff --git a/tooling/nargo_cli/build.rs b/tooling/nargo_cli/build.rs index 295e1218498..ad89fa58891 100644 --- a/tooling/nargo_cli/build.rs +++ b/tooling/nargo_cli/build.rs @@ -1,7 +1,7 @@ use std::fs::File; use std::io::Write; use std::path::{Path, PathBuf}; -use std::{env, fs}; +use std::{env, fs, i64}; const GIT_COMMIT: &&str = &"GIT_COMMIT"; @@ -59,6 +59,12 @@ const IGNORED_BRILLIG_TESTS: [&str; 11] = [ "is_unconstrained", ]; +/// Tests which aren't expected to work with the default inliner cases. +const INLINER_MIN_OVERRIDES: [(&str, i64); 1] = [ + // 0 works if PoseidonHasher::write is tagged as `inline_always`, otherwise 22. + ("eddsa", 0), +]; + /// Some tests are expected to have warnings /// These should be fixed and removed from this list. const TESTS_WITH_EXPECTED_WARNINGS: [&str; 2] = [ @@ -94,6 +100,35 @@ struct MatrixConfig { vary_brillig: bool, // Only seems to have an effect on the `execute_success` cases. vary_inliner: bool, + // If there is a non-default minimum inliner aggressiveness to use with the brillig tests. + min_inliner: i64, +} + +// Enum to be able to preserve readable test labels and also compare to numbers. +enum Inliner { + Min, + Default, + Max, + Custom(i64), +} + +impl Inliner { + fn value(&self) -> i64 { + match self { + Inliner::Min => i64::MIN, + Inliner::Default => 0, + Inliner::Max => i64::MAX, + Inliner::Custom(i) => *i, + } + } + fn label(&self) -> String { + match self { + Inliner::Min => "i64::MIN".to_string(), + Inliner::Default => "0".to_string(), + Inliner::Max => "i64::MAX".to_string(), + Inliner::Custom(i) => i.to_string(), + } + } } /// Generate all test cases for a given test name (expected to be unique for the test directory), @@ -109,9 +144,32 @@ fn generate_test_cases( test_content: &str, matrix_config: &MatrixConfig, ) { + let brillig_cases = if matrix_config.vary_brillig { vec![false, true] } else { vec![false] }; + let inliner_cases = if matrix_config.vary_inliner { + let mut cases = vec![Inliner::Min, Inliner::Default, Inliner::Max]; + if !cases.iter().any(|c| c.value() == matrix_config.min_inliner) { + cases.push(Inliner::Custom(matrix_config.min_inliner)); + } + cases + } else { + vec![Inliner::Default] + }; + + // We can't use a `#[test_matrix(brillig_cases, inliner_cases)` if we only want to limit the + // aggressiveness range for the brillig tests, and let them go full range on the ACIR case. + let mut test_cases = Vec::new(); + for brillig in &brillig_cases { + for inliner in &inliner_cases { + if *brillig && inliner.value() < matrix_config.min_inliner { + continue; + } + test_cases.push(format!("#[test_case::test_case({brillig}, {})]", inliner.label())); + } + } + let test_cases = test_cases.join("\n"); + + // Use a common mutex for all test cases. let mutex_name = format! {"TEST_MUTEX_{}", test_name.to_uppercase()}; - let brillig_cases = if matrix_config.vary_brillig { "[false, true]" } else { "[false]" }; - let inliner_cases = if matrix_config.vary_inliner { "[i64::MIN, 0, i64::MAX]" } else { "[0]" }; write!( test_file, r#" @@ -120,10 +178,7 @@ lazy_static::lazy_static! {{ static ref {mutex_name}: std::sync::Mutex<()> = std::sync::Mutex::new(()); }} -#[test_case::test_matrix( - {brillig_cases}, - {inliner_cases} -)] +{test_cases} fn test_{test_name}(force_brillig: bool, inliner_aggressiveness: i64) {{ // Ignore poisoning errors if some of the matrix cases failed. let _guard = {mutex_name}.lock().unwrap_or_else(|e| e.into_inner()); @@ -170,6 +225,11 @@ fn generate_execution_success_tests(test_file: &mut File, test_data_dir: &Path) &MatrixConfig { vary_brillig: !IGNORED_BRILLIG_TESTS.contains(&test_name.as_str()), vary_inliner: true, + min_inliner: INLINER_MIN_OVERRIDES + .iter() + .find(|(n, _)| *n == test_name.as_str()) + .map(|(_, i)| *i) + .unwrap_or(i64::MIN), }, ); } From 043bbca177189f56d69acb8637d1f8d4638871bd Mon Sep 17 00:00:00 2001 From: Tom French Date: Fri, 8 Nov 2024 04:06:03 +0000 Subject: [PATCH 6/6] chore: version bumps --- tooling/nargo_cli/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/nargo_cli/build.rs b/tooling/nargo_cli/build.rs index ad89fa58891..984419fe388 100644 --- a/tooling/nargo_cli/build.rs +++ b/tooling/nargo_cli/build.rs @@ -1,7 +1,7 @@ use std::fs::File; use std::io::Write; use std::path::{Path, PathBuf}; -use std::{env, fs, i64}; +use std::{env, fs}; const GIT_COMMIT: &&str = &"GIT_COMMIT";