diff --git a/avm-transpiler/Cargo.lock b/avm-transpiler/Cargo.lock index 77e90dd1fb4a..a1c16ce6a30a 100644 --- a/avm-transpiler/Cargo.lock +++ b/avm-transpiler/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "acir" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acir_field", "base64 0.21.7", @@ -13,6 +13,7 @@ dependencies = [ "color-eyre", "flate2", "noir_protobuf", + "num_enum", "prost", "prost-build", "protoc-prebuilt", @@ -26,7 +27,7 @@ dependencies = [ [[package]] name = "acir_field" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "ark-bn254", "ark-ff", @@ -39,7 +40,7 @@ dependencies = [ [[package]] name = "acvm" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acir", "acvm_blackbox_solver", @@ -53,7 +54,7 @@ dependencies = [ [[package]] name = "acvm_blackbox_solver" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acir", "blake2", @@ -453,7 +454,7 @@ dependencies = [ [[package]] name = "bn254_blackbox_solver" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acir", "acvm_blackbox_solver", @@ -477,7 +478,7 @@ dependencies = [ [[package]] name = "brillig" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acir_field", "serde", @@ -485,7 +486,7 @@ dependencies = [ [[package]] name = "brillig_vm" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acir", "acvm_blackbox_solver", @@ -925,7 +926,7 @@ dependencies = [ [[package]] name = "fm" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "codespan-reporting", "iter-extended", @@ -1265,7 +1266,7 @@ checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "iter-extended" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" [[package]] name = "itertools" @@ -1373,7 +1374,7 @@ checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] name = "noir_protobuf" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "color-eyre", "prost", @@ -1381,7 +1382,7 @@ dependencies = [ [[package]] name = "noirc_abi" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acvm", "iter-extended", @@ -1396,11 +1397,11 @@ dependencies = [ [[package]] name = "noirc_arena" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" [[package]] name = "noirc_errors" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acvm", "base64 0.21.7", @@ -1417,7 +1418,7 @@ dependencies = [ [[package]] name = "noirc_evaluator" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acvm", "bn254_blackbox_solver", @@ -1445,7 +1446,7 @@ dependencies = [ [[package]] name = "noirc_frontend" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acvm", "bn254_blackbox_solver", @@ -1474,7 +1475,7 @@ dependencies = [ [[package]] name = "noirc_printable_type" -version = "1.0.0-beta.5" +version = "1.0.0-beta.6" dependencies = [ "acvm", "iter-extended", @@ -1516,6 +1517,27 @@ dependencies = [ "autocfg", ] +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "object" version = "0.32.2" @@ -1637,6 +1659,15 @@ dependencies = [ "elliptic-curve", ] +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit 0.22.24", +] + [[package]] name = "proc-macro2" version = "1.0.86" @@ -2280,7 +2311,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.19.15", ] [[package]] @@ -2302,7 +2333,18 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +dependencies = [ + "indexmap 2.8.0", + "toml_datetime", + "winnow 0.7.10", ] [[package]] @@ -2631,6 +2673,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +dependencies = [ + "memchr", +] + [[package]] name = "write16" version = "1.0.0" diff --git a/avm-transpiler/Cargo.toml b/avm-transpiler/Cargo.toml index 574779924c43..fc5f8477117b 100644 --- a/avm-transpiler/Cargo.toml +++ b/avm-transpiler/Cargo.toml @@ -12,7 +12,7 @@ license = "MIT OR Apache-2.0" acvm = { path = "../noir/noir-repo/acvm-repo/acvm", features = ["bn254"] } noirc_errors = { path = "../noir/noir-repo/compiler/noirc_errors" } noirc_abi = { path = "../noir/noir-repo/tooling/noirc_abi" } -noirc_evaluator = { path = "../noir/noir-repo/compiler/noirc_evaluator" } +noirc_evaluator = { path = "../noir/noir-repo/compiler/noirc_evaluator", features = ["bn254"] } # external base64 = "0.21" diff --git a/noir-projects/aztec-nr/aztec/src/macros/notes.nr b/noir-projects/aztec-nr/aztec/src/macros/notes.nr index 8d1e97e0a34b..686414b80195 100644 --- a/noir-projects/aztec-nr/aztec/src/macros/notes.nr +++ b/noir-projects/aztec-nr/aztec/src/macros/notes.nr @@ -156,13 +156,13 @@ comptime fn generate_note_properties(s: TypeDefinition) -> Quoted { let note_fields = s.fields_as_written(); let properties_types = note_fields - .map(|(name, _): (Quoted, Type)| quote { pub $name: $property_selector_type }) + .map(|(name, _, _)| quote { pub $name: $property_selector_type }) .join(quote {,}); // TODO #8694: Properly handle non-field types https://github.com/AztecProtocol/aztec-packages/issues/8694 let mut properties_list = &[]; for i in 0..note_fields.len() { - let (name, _) = note_fields[i]; + let (name, _, _) = note_fields[i]; properties_list = properties_list.push_back( quote { $name: aztec::note::note_getter_options::PropertySelector { index: $i, offset: 0, length: 32 } }, ); @@ -276,7 +276,7 @@ comptime fn index_note_fields( let mut indexed_nullable_fields = &[]; let mut counter: u32 = 0; for field in s.fields_as_written() { - let (name, typ) = field; + let (name, typ, _) = field; if nullable_fields.all(|field| field != name) { indexed_fixed_fields = indexed_fixed_fields.push_back((name, typ, counter)); } else { @@ -393,7 +393,7 @@ comptime fn assert_has_owner(note: TypeDefinition) { let fields = note.fields_as_written(); let mut has_owner = false; for i in 0..fields.len() { - let (field_name, _) = fields[i]; + let (field_name, _, _) = fields[i]; if field_name == quote { owner } { has_owner = true; break; diff --git a/noir-projects/aztec-nr/aztec/src/macros/storage.nr b/noir-projects/aztec-nr/aztec/src/macros/storage.nr index a621e9c52e16..c48cff5dccd4 100644 --- a/noir-projects/aztec-nr/aztec/src/macros/storage.nr +++ b/noir-projects/aztec-nr/aztec/src/macros/storage.nr @@ -45,7 +45,7 @@ pub comptime fn storage(s: TypeDefinition) -> Quoted { //let context_generic = s.add_generic("Context"); for field in s.fields_as_written() { // FIXME: This doesn't handle field types with generics - let (name, typ) = field; + let (name, typ, _) = field; let (storage_field_constructor, storage_size) = generate_storage_field_constructor(typ, quote { $slot }); storage_vars_constructors = diff --git a/noir-projects/aztec-nr/aztec/src/macros/utils.nr b/noir-projects/aztec-nr/aztec/src/macros/utils.nr index 9ea763d34ae6..93da81582443 100644 --- a/noir-projects/aztec-nr/aztec/src/macros/utils.nr +++ b/noir-projects/aztec-nr/aztec/src/macros/utils.nr @@ -145,10 +145,8 @@ comptime fn signature_of_type(typ: Type) -> Quoted { f"[{element_typ_quote};{array_len}]".quoted_contents() } else if typ.as_data_type().is_some() { let (s, generics) = typ.as_data_type().unwrap(); - let field_signatures = s - .fields(generics) - .map(|(_, typ): (Quoted, Type)| signature_of_type(typ)) - .join(quote {,}); + let field_signatures = + s.fields(generics).map(|(_, typ, _)| signature_of_type(typ)).join(quote {,}); f"({field_signatures})".quoted_contents() } else if typ.as_tuple().is_some() { // Note that tuples are handled the same way as structs @@ -196,8 +194,7 @@ pub(crate) comptime fn compute_fn_selector(f: FunctionDefinition) -> Field { // // The signature will be "foo(Field,AztecAddress)". let fn_name = f.name(); - let args_signatures = - f.parameters().map(|(_, typ): (Quoted, Type)| signature_of_type(typ)).join(quote {,}); + let args_signatures = f.parameters().map(|(_, typ)| signature_of_type(typ)).join(quote {,}); let signature_quote = quote { $fn_name($args_signatures) }; let (signature_str_quote, _) = signature_quote.as_str_quote(); @@ -220,7 +217,7 @@ pub(crate) comptime fn compute_event_selector(s: TypeDefinition) -> Field { let event_name = s.name(); let args_signatures = s .fields_as_written() - .map(|(_, typ): (Quoted, Type)| { + .map(|(_, typ, _)| { // signature_of_type can handle structs, so this supports nested structs // FIXME: Field generics are not handled here! signature_of_type(typ) diff --git a/noir-projects/noir-protocol-circuits/bootstrap.sh b/noir-projects/noir-protocol-circuits/bootstrap.sh index b780581d5f04..9cdd8a855b05 100755 --- a/noir-projects/noir-protocol-circuits/bootstrap.sh +++ b/noir-projects/noir-protocol-circuits/bootstrap.sh @@ -43,7 +43,7 @@ function compile { local program_hash hash bytecode_hash vk vk_fields # We get the monomorphized program hash from nargo. If this changes, we have to recompile. - local program_hash_cmd="$NARGO check --package $name --silence-warnings --show-program-hash | cut -d' ' -f2" + local program_hash_cmd="ALLOW_EMPTY_INPUT=1 $NARGO check --package $name --silence-warnings --show-program-hash | cut -d' ' -f2" # echo_stderr $program_hash_cmd program_hash=$(dump_fail "$program_hash_cmd") echo_stderr "Hash preimage: $NOIR_HASH-$program_hash" @@ -53,7 +53,7 @@ function compile { SECONDS=0 rm -f $json_path # TODO(#10754): Remove --skip-brillig-constraints-check - local compile_cmd="$NARGO compile --package $name --skip-brillig-constraints-check" + local compile_cmd="ALLOW_EMPTY_INPUT=1 $NARGO compile --package $name --skip-brillig-constraints-check" echo_stderr "$compile_cmd" dump_fail "$compile_cmd" echo_stderr "Compilation complete for: $name (${SECONDS}s)" @@ -153,7 +153,7 @@ function build { } function test_cmds { - $NARGO test --list-tests --silence-warnings | sort | while read -r package test; do + ALLOW_EMPTY_INPUT=1 $NARGO test --list-tests --silence-warnings | sort | while read -r package test; do echo "$circuits_hash noir-projects/scripts/run_test.sh noir-protocol-circuits $package $test" done # We don't blindly execute all circuits as some will have no `Prover.toml`. @@ -171,7 +171,7 @@ function test_cmds { " nargo_root_rel=$(realpath --relative-to=$root $NARGO) for circuit in $circuits_to_execute; do - echo "$circuits_hash $nargo_root_rel execute --program-dir noir-projects/noir-protocol-circuits/crates/$circuit --silence-warnings --pedantic-solving --skip-brillig-constraints-check" + echo "$circuits_hash ALLOW_EMPTY_INPUT=1 $nargo_root_rel execute --program-dir noir-projects/noir-protocol-circuits/crates/$circuit --silence-warnings --pedantic-solving --skip-brillig-constraints-check" done } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 8ff6111fab4a..64d77461dc49 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -934,4 +934,16 @@ mod test { unconstrained fn test_constants() { assert(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL <= MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX); } + + #[test] + unconstrained fn test_grumpkin_point() { + assert_eq( + super::GRUMPKIN_ONE_X, + std::embedded_curve_ops::EmbeddedCurvePoint::generator().x, + ); + assert_eq( + super::GRUMPKIN_ONE_Y, + std::embedded_curve_ops::EmbeddedCurvePoint::generator().y, + ); + } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr b/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr index 40dbb5779381..b56df8609d00 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr @@ -124,7 +124,7 @@ pub comptime fn generate_deserialize_from_fields( // Iterate over each field in the struct for field in nested_def.fields(generics) { - let (field_name, field_type) = field; + let (field_name, field_type, _) = field; // Recursively call `generate_deserialize_from_fields` for each field in the struct let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields( field_name, @@ -344,7 +344,7 @@ pub comptime fn generate_serialize_to_fields( // For struct we pref let nested_struct = typ.as_data_type().unwrap(); let params = nested_struct.0.fields(nested_struct.1); - let struct_flattened = params.map(|(param_name, param_type): (Quoted, Type)| { + let struct_flattened = params.map(|(param_name, param_type, _)| { let maybe_prefixed_name = if name == quote {} { // Triggered when the param name is of a value available in the current scope (e.g. a function // argument) --> then we don't prefix the name with anything. diff --git a/noir/noir-repo-ref b/noir/noir-repo-ref index 05dbcc645672..d526576e3fc1 100644 --- a/noir/noir-repo-ref +++ b/noir/noir-repo-ref @@ -1 +1 @@ -nightly-2025-05-14 +79fb4823b47d3ec06d8d26b1bbf03c52fedcd2fa diff --git a/noir/noir-repo.patch b/noir/noir-repo.patch index 3334d22548d1..59ec81079098 100644 --- a/noir/noir-repo.patch +++ b/noir/noir-repo.patch @@ -1,7 +1,7 @@ From 133d79dfc55b53f12f98ff04d5e6e570a880ea94 Mon Sep 17 00:00:00 2001 From: TomAFrench Date: Sat, 15 Mar 2025 15:36:12 +0000 -Subject: [PATCH 1/4] chore: turn on `skipLibCheck` +Subject: [PATCH 1/1] chore: turn on `skipLibCheck` --- tooling/noir_codegen/tsconfig.json | 1 + @@ -21,26 +21,3 @@ index 30dd2a7..a2712fd 100644 "src/**/*.ts" -- 2.43.0 - -From ee8c3e8be962996922078637aaea70fccbadeb5c Mon Sep 17 00:00:00 2001 -From: aakoshh -Date: Mon, 17 Mar 2025 12:10:58 +0000 -Subject: [PATCH 2/4] Ignore package.tgz - ---- - .gitignore | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/.gitignore b/.gitignore -index 3349018..c93fe8e 100644 ---- a/.gitignore -+++ b/.gitignore -@@ -59,3 +59,6 @@ codegen - - mutants.out - mutants.out.old -+ -+# Artifacts created by `noir/bootstrap.sh build_packages` -+**/package.tgz --- -2.43.0 diff --git a/yarn-project/txe/src/txe_service/txe_service.ts b/yarn-project/txe/src/txe_service/txe_service.ts index 6175e9c04de6..87960019c846 100644 --- a/yarn-project/txe/src/txe_service/txe_service.ts +++ b/yarn-project/txe/src/txe_service/txe_service.ts @@ -36,7 +36,10 @@ import { ExpectedFailureError } from '../util/expected_failure_error.js'; export class TXEService { public oraclesEnabled = true; - constructor(private logger: Logger, private typedOracle: TypedOracle) {} + constructor( + private logger: Logger, + private typedOracle: TypedOracle, + ) {} static async init(logger: Logger, protocolContracts: ProtocolContract[]) { logger.debug(`TXE service initialized`); diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index 21c609c414b3..5423bd05cf95 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -978,7 +978,7 @@ __metadata: version: 0.0.0-use.local resolution: "@aztec/noir-noir_codegen@portal:../noir/packages/noir_codegen::locator=%40aztec%2Faztec3-packages%40workspace%3A." dependencies: - "@aztec/noir-types": "npm:1.0.0-beta.5" + "@aztec/noir-types": "npm:1.0.0-beta.6" glob: "npm:^11.0.1" ts-command-line-args: "npm:^2.5.1" bin: @@ -987,14 +987,14 @@ __metadata: linkType: soft "@aztec/noir-noir_js@file:../noir/packages/noir_js::locator=%40aztec%2Faztec3-packages%40workspace%3A.": - version: 1.0.0-beta.5 - resolution: "@aztec/noir-noir_js@file:../noir/packages/noir_js#../noir/packages/noir_js::hash=13b403&locator=%40aztec%2Faztec3-packages%40workspace%3A." + version: 1.0.0-beta.6 + resolution: "@aztec/noir-noir_js@file:../noir/packages/noir_js#../noir/packages/noir_js::hash=354553&locator=%40aztec%2Faztec3-packages%40workspace%3A." dependencies: - "@aztec/noir-acvm_js": "npm:1.0.0-beta.5" - "@aztec/noir-noirc_abi": "npm:1.0.0-beta.5" - "@aztec/noir-types": "npm:1.0.0-beta.5" + "@aztec/noir-acvm_js": "npm:1.0.0-beta.6" + "@aztec/noir-noirc_abi": "npm:1.0.0-beta.6" + "@aztec/noir-types": "npm:1.0.0-beta.6" pako: "npm:^2.1.0" - checksum: 10/997624479f7219e9fe3589fc2efa43469feb8c004857e6f19b688e89d30e46b51208c05b02cabc23fe5b1ed4126a6fedb970086277063d3d214ac073265477d6 + checksum: 10/7ed4c3721b60d1a88775e9f0892103164ab6de1828dca033225a48f4f1fde2e39a1b33aad66320fb9182b8aa3df146a416214443dfc657039266f1030cbc7af6 languageName: node linkType: hard @@ -1002,7 +1002,7 @@ __metadata: version: 0.0.0-use.local resolution: "@aztec/noir-noirc_abi@portal:../noir/packages/noirc_abi::locator=%40aztec%2Faztec3-packages%40workspace%3A." dependencies: - "@aztec/noir-types": "npm:1.0.0-beta.5" + "@aztec/noir-types": "npm:1.0.0-beta.6" languageName: node linkType: soft