From 6e2dbae7e665ca28a32e510d61c70511fe09ab4c Mon Sep 17 00:00:00 2001 From: Paul Schoenfelder Date: Thu, 16 Jul 2026 20:09:01 -0400 Subject: [PATCH 01/23] wip: v0.25 migration --- Cargo.lock | 1643 +++++++++++------ Cargo.toml | 49 +- codegen/masm/Cargo.toml | 8 + codegen/masm/build.rs | 51 + codegen/masm/intrinsics/miden-project.toml | 13 + codegen/masm/intrinsics/mod.masm | 4 + codegen/masm/src/artifact.rs | 97 +- codegen/masm/src/artifact/project_support.rs | 32 +- codegen/masm/src/emit/mod.rs | 11 +- codegen/masm/src/emit/primop.rs | 32 +- codegen/masm/src/events.rs | 63 +- codegen/masm/src/intrinsics.rs | 80 +- codegen/masm/src/lib.rs | 5 +- codegen/masm/src/lower/component.rs | 167 +- codegen/masm/src/lower/lowering.rs | 29 +- examples/auth-component-no-auth/Cargo.lock | 1091 ++++++----- .../auth-component-no-auth/miden-project.toml | 1 + .../auth-component-rpo-falcon512/Cargo.lock | 1091 ++++++----- .../miden-project.toml | 1 + .../basic-wallet-tx-script/miden-project.toml | 1 + examples/basic-wallet/Cargo.lock | 1091 ++++++----- examples/basic-wallet/miden-project.toml | 1 + examples/counter-contract/Cargo.lock | 1091 ++++++----- examples/counter-contract/miden-project.toml | 1 + examples/counter-note/Cargo.lock | 1111 ++++++----- examples/counter-note/miden-project.toml | 1 + examples/p2id-note/miden-project.toml | 1 + examples/p2ide-note/miden-project.toml | 1 + examples/storage-example/Cargo.lock | 1091 ++++++----- examples/storage-example/miden-project.toml | 1 + frontend/masm/src/infer.rs | 156 +- frontend/masm/src/lib.rs | 119 +- frontend/masm/src/lift.rs | 897 +++------ frontend/masm/src/project.rs | 197 +- frontend/masm/src/semantics.rs | 6 +- frontend/masm/src/signatures.rs | 5 +- frontend/masm/src/tests.rs | 70 +- frontend/masm/tests/e2e.rs | 78 +- hir/Cargo.toml | 2 +- hir/src/ir/context.rs | 2 +- midenc-compile/Cargo.toml | 2 + midenc-compile/src/cargo.rs | 42 +- midenc-compile/src/stages/analyze.rs | 23 +- midenc-compile/src/stages/assemble.rs | 537 +++++- midenc-compile/src/stages/cargo.rs | 16 +- midenc-compile/src/stages/codegen.rs | 75 +- midenc-compile/src/stages/mod.rs | 49 +- midenc-compile/src/stages/parse.rs | 52 +- midenc-compile/src/stages/parse/masm.rs | 91 +- midenc-compile/src/stages/parse/wasm.rs | 46 +- midenc-compile/tests/codegen_legalization.rs | 10 +- midenc-session/src/diagnostics.rs | 9 +- midenc-session/src/lib.rs | 187 +- midenc-session/src/libs.rs | 87 +- midenc-session/src/registry.rs | 5 +- sdk/base-macros/src/fpi.rs | 3 +- sdk/base-macros/src/wit_world.rs | 19 +- sdk/field-repr/tests/src/lib.rs | 2 +- sdk/field-repr/tests/src/onchain.rs | 58 +- .../components/assert-debug-test/Cargo.lock | 1091 ++++++----- .../component-macros-account/Cargo.lock | 1091 ++++++----- .../miden-project.toml | 1 + .../component-macros-note/miden-project.toml | 1 + .../cross-ctx-account-word-arg/Cargo.lock | 1091 ++++++----- .../miden-project.toml | 1 + .../cross-ctx-account-word/Cargo.lock | 1091 ++++++----- .../cross-ctx-account-word/miden-project.toml | 1 + .../components/cross-ctx-account/Cargo.lock | 1091 ++++++----- .../cross-ctx-account/miden-project.toml | 1 + .../cross-ctx-note-word-arg/Cargo.lock | 1091 ++++++----- .../miden-project.toml | 1 + .../components/cross-ctx-note-word/Cargo.lock | 1091 ++++++----- .../cross-ctx-note-word/miden-project.toml | 1 + .../components/cross-ctx-note/Cargo.lock | 1091 ++++++----- .../cross-ctx-note/miden-project.toml | 1 + .../miden-project.toml | 1 + tests/integration-network/Cargo.toml | 8 +- .../src/mockchain/counter/rpo_auth.rs | 4 +- .../src/mockchain/fpi/common.rs | 1 + .../mockchain/fpi/note/four_words_struct.rs | 3 +- .../src/mockchain/fpi/note/multi_call.rs | 3 +- .../mockchain/fpi/note/three_words_struct.rs | 3 +- .../mockchain/fpi/note/two_words_struct.rs | 3 +- .../src/mockchain/fpi/note/word_word.rs | 3 +- .../src/mockchain/fpi/raw/raw_call.rs | 1 + .../src/mockchain/notes/basic_wallet.rs | 36 +- .../src/mockchain/sibling/common.rs | 1 + .../src/mockchain/support/helpers.rs | 88 +- .../src/mockchain/support/projects.rs | 2 + tests/integration/src/assert_helpers.rs | 2 +- .../src/codegen/control_flow/select.rs | 2 +- .../src/codegen/control_flow/switch.rs | 4 +- .../src/codegen/memory/load_bool.rs | 2 +- .../integration/src/codegen/memory/load_dw.rs | 2 +- .../integration/src/codegen/memory/load_qw.rs | 4 +- .../integration/src/codegen/memory/load_sw.rs | 2 +- .../src/codegen/memory/load_u16.rs | 4 +- .../src/codegen/memory/load_u64_unaligned.rs | 2 +- .../integration/src/codegen/memory/load_u8.rs | 2 +- .../src/codegen/memory/store_qw.rs | 2 +- .../src/codegen/memory/store_u16.rs | 4 +- .../src/codegen/memory/store_u32_unaligned.rs | 2 +- .../src/codegen/memory/store_u64_unaligned.rs | 2 +- .../src/codegen/memory/store_u8.rs | 2 +- .../src/codegen/wasm/i32_extend16_s.rs | 2 +- .../src/codegen/wasm/i32_extend8_s.rs | 2 +- .../src/codegen/wasm/i32_load16_s.rs | 2 +- .../src/codegen/wasm/i32_load8_s.rs | 2 +- .../src/codegen/wasm/i64_extend16_s.rs | 2 +- .../src/codegen/wasm/i64_extend32_s.rs | 2 +- .../src/codegen/wasm/i64_extend8_s.rs | 2 +- .../src/codegen/wasm/i64_load16_s.rs | 2 +- .../src/codegen/wasm/i64_load32_s.rs | 2 +- .../src/codegen/wasm/i64_load8_s.rs | 2 +- .../end_to_end/abi/transforms/advice_map.rs | 21 +- .../abi/transforms/stdlib/hash_elements.rs | 2 +- .../abi/transforms/stdlib/hash_words.rs | 16 +- .../stdlib/pipe_double_words_to_memory.rs | 2 +- .../transforms/stdlib/pipe_words_to_memory.rs | 2 +- .../abi/transforms/stdlib/vec_alloc_vec.rs | 2 +- .../abi/transforms/tx_kernel/get_inputs.rs | 21 +- .../abi/transforms/tx_kernel/get_metadata.rs | 8 +- .../tx_kernel/note_build_recipient.rs | 13 +- .../integration/src/end_to_end/arithmetic.rs | 14 +- tests/integration/src/end_to_end/crypto.rs | 2 +- .../end_to_end/debuginfo/source_locations.rs | 13 +- .../src/end_to_end/differential/harness.rs | 9 +- .../examples/auth_component_no_auth.rs | 4 +- .../examples/auth_component_rpo_falcon512.rs | 4 +- .../examples/basic_wallet_package_sizes.rs | 8 +- .../src/end_to_end/examples/collatz.rs | 4 +- .../src/end_to_end/examples/fibonacci.rs | 4 +- .../src/end_to_end/examples/is_prime.rs | 4 +- .../end_to_end/intrinsics/i32_arithmetic.rs | 3 +- .../end_to_end/intrinsics/i64_arithmetic.rs | 3 +- .../src/end_to_end/intrinsics/operators.rs | 4 +- .../src/end_to_end/memory/support.rs | 2 +- .../end_to_end/regressions/func_arg_order.rs | 2 +- .../end_to_end/regressions/func_arg_same.rs | 4 +- .../invalid_stack_index_16_issue_872.rs | 2 +- .../invalid_stack_index_4_word_1_felt_args.rs | 2 +- .../src/end_to_end/regressions/issue1243.rs | 8 +- .../vec_realloc_copies_data_issue_811.rs | 2 +- tests/integration/src/end_to_end/support.rs | 79 +- tests/integration/src/sdk/base/account.rs | 1 + tests/integration/src/sdk/base/active_note.rs | 1 + tests/integration/src/sdk/base/asset.rs | 1 + tests/integration/src/sdk/base/faucet.rs | 1 + tests/integration/src/sdk/base/input_note.rs | 1 + tests/integration/src/sdk/base/note.rs | 1 + tests/integration/src/sdk/base/output_note.rs | 1 + tests/integration/src/sdk/base/tx.rs | 1 + tests/integration/src/sdk/canonabi.rs | 23 +- tests/integration/src/sdk/macros.rs | 7 + tests/integration/src/sdk/mod.rs | 108 +- .../integration/src/sdk/stdlib/collections.rs | 32 +- tests/integration/src/sdk/stdlib/hashes.rs | 4 +- tests/integration/tests/println_expr.rs | 2 +- tests/integration/tests/println_literal.rs | 2 +- tests/support/src/compiler_test.rs | 18 +- tests/support/src/testing/eval.rs | 72 +- tests/support/src/testing/mod.rs | 50 +- tests/support/src/testing/setup.rs | 12 +- tools/cargo-miden/src/template.rs | 5 +- tools/cargo-miden/tests/workspace.rs | 3 +- tools/objtool/src/decorators.rs | 231 --- tools/objtool/src/dump.rs | 3 + tools/objtool/src/dump/debuginfo.rs | 594 +++--- tools/objtool/src/lib.rs | 1 - tools/objtool/src/main.rs | 5 +- 170 files changed, 12062 insertions(+), 10037 deletions(-) create mode 100644 codegen/masm/build.rs create mode 100644 codegen/masm/intrinsics/miden-project.toml create mode 100644 codegen/masm/intrinsics/mod.masm delete mode 100644 tools/objtool/src/decorators.rs diff --git a/Cargo.lock b/Cargo.lock index bdf4e41c0..da67fdd99 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,12 +45,12 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ - "crypto-common 0.1.7", - "generic-array", + "crypto-common 0.2.2", + "inout", ] [[package]] @@ -98,9 +98,9 @@ checksum = "c880a97d28a3681c0267bd29cff89621202715b065127cd445fa0f0fe0aa2880" [[package]] name = "alloy-primitives" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4885c1409b6936c4898e646ef58baf6ec54edaf6d8179f79df805a7b85b7cf3e" +checksum = "f007e257069855bdf21d27762fd3f3705a613f805c9a08309bf353503f081d71" dependencies = [ "bytes", "cfg-if", @@ -109,47 +109,46 @@ dependencies = [ "itoa", "paste", "ruint", - "rustc-hash", "sha3 0.11.0", ] [[package]] name = "alloy-sol-macro" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840128ed2b2971d6d4668a553fe403a82683d3acc646c73e75887e7157408033" +checksum = "b5655c38d5f84955bf727b2eeb62fddd91ebb98fd1d7ae6eb77f73ea88f9b9cf" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", - "proc-macro-error2", + "proc-macro-error3", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63ec265e5d65d725175f6ca7711c970824c90ef9c0d1f1973711d4150ee612dd" +checksum = "6277c780e07b76951e09a59788dde230d1582612324177d11a43a61e21a6bb83" dependencies = [ "alloy-sol-macro-input", "const-hex", "heck", "indexmap", - "proc-macro-error2", + "proc-macro-error3", "proc-macro2", "quote", "sha3 0.11.0", - "syn 2.0.118", + "syn 2.0.119", "syn-solidity", ] [[package]] name = "alloy-sol-macro-input" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89bf01077f18650876cfa682eb1f949967b5cde03f1a51c955c469d2c9b4aa67" +checksum = "9762b2ad3e5a0c09886de54fe549ab0056681df843cb082e2df7e1c0eb270d30" dependencies = [ "const-hex", "dunce", @@ -157,15 +156,15 @@ dependencies = [ "macro-string", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", "syn-solidity", ] [[package]] name = "alloy-sol-types" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384cf252de0db2dec52821eac037a7f57e2aa33fe5b900ce6fe39973402341f1" +checksum = "d96e74d6213180f78dbdccddce8af02a639c160c94b0a543fa35c77c58b8a7fc" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -280,13 +279,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 3.0.2", ] [[package]] @@ -336,9 +335,9 @@ dependencies = [ [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64" @@ -411,9 +410,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "bitmaps" @@ -499,14 +498,14 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "bstr" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79" +checksum = "1f7dc094d718f2e1c1559ad110e27eeaae14a5465d3d56dd6dbd793079fbd530" dependencies = [ "memchr", "serde_core", @@ -514,9 +513,9 @@ dependencies = [ [[package]] name = "build-rs" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe808acca98fccf920154ee7833e791bfb683299be4aae7ec222ddffad8cd4f8" +checksum = "87a490fb7ec2896b97a4c721c03a2b2dc5c2b9b75b2a57ca396db4470dea0381" dependencies = [ "unicode-ident", ] @@ -535,9 +534,9 @@ checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" [[package]] name = "bytemuck" -version = "1.25.0" +version = "1.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +checksum = "d6aedf8ae72766347502cf3cb4f41cf5e9cc37d28bee90f1fdaaae15f9cf9424" [[package]] name = "byteorder" @@ -547,9 +546,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "camino" @@ -669,9 +668,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.66" +version = "1.2.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" +checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38" dependencies = [ "find-msvc-tools", "jobserver", @@ -687,32 +686,32 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures 0.3.0", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] @@ -757,20 +756,20 @@ dependencies = [ [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ - "crypto-common 0.1.7", + "block-buffer 0.12.1", + "crypto-common 0.2.2", "inout", - "zeroize", ] [[package]] name = "clap" -version = "4.6.1" +version = "4.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "dd059f9da4f5c36b3787f65d38ccaab1cc315f07b01f89abc8359ee6a8205011" dependencies = [ "clap_builder", "clap_derive", @@ -778,9 +777,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "f09628afdcc538b57f3c6341e9c8e9970f18e4a481690a64974d7023bd33548b" dependencies = [ "anstream", "anstyle", @@ -798,7 +797,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -807,6 +806,21 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +[[package]] +name = "clipboard-win" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" +dependencies = [ + "error-code", +] + +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "codegen" version = "0.3.0" @@ -843,7 +857,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d" dependencies = [ "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -858,12 +872,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - [[package]] name = "const-oid" version = "0.10.2" @@ -910,6 +918,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "cpubits" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" + [[package]] name = "cpufeatures" version = "0.2.17" @@ -1009,9 +1023,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.19" +version = "0.9.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4279b0f31df31b4add8aeae57d40f3b5e53aad2b531e89b982bd75ed1898851d" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" dependencies = [ "crossbeam-utils", ] @@ -1028,7 +1042,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "crossterm_winapi", "derive_more", "document-features", @@ -1058,12 +1072,15 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] @@ -1075,7 +1092,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", - "rand_core 0.6.4", "typenum", ] @@ -1086,6 +1102,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ "hybrid-array", + "rand_core 0.10.1", ] [[package]] @@ -1098,16 +1115,26 @@ dependencies = [ "phf", ] +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", +] + [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures 0.3.0", "curve25519-dalek-derive", - "digest 0.10.7", + "digest 0.11.3", "fiat-crypto", "rustc_version 0.4.1", "subtle", @@ -1122,7 +1149,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -1145,7 +1172,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -1156,7 +1183,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -1178,7 +1205,7 @@ dependencies = [ "defmt-parser", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -1198,11 +1225,11 @@ checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4" [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ - "const-oid 0.9.6", + "const-oid", "zeroize", ] @@ -1231,7 +1258,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.118", + "syn 2.0.119", "unicode-xid", ] @@ -1248,9 +1275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", - "const-oid 0.9.6", "crypto-common 0.1.7", - "subtle", ] [[package]] @@ -1260,8 +1285,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer 0.12.1", - "const-oid 0.10.2", + "const-oid", "crypto-common 0.2.2", + "ctutils", ] [[package]] @@ -1287,23 +1313,24 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", - "digest 0.10.7", + "digest 0.11.3", "elliptic-curve", "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -1311,14 +1338,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", - "sha2 0.10.9", + "sha2 0.11.0", + "signature", "subtle", "zeroize", ] @@ -1331,19 +1359,20 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", - "digest 0.10.7", + "crypto-common 0.2.2", + "digest 0.11.3", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", @@ -1358,6 +1387,12 @@ dependencies = [ "log", ] +[[package]] +name = "endian-type" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "869b0adbda23651a9c5c0c3d270aac9fcb52e8622a8f2b17e57802d7791962f2" + [[package]] name = "env_filter" version = "2.0.0" @@ -1408,6 +1443,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + [[package]] name = "euclid" version = "0.22.14" @@ -1447,19 +1488,19 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "filedescriptor" @@ -1527,14 +1568,11 @@ dependencies = [ [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "spin 0.9.8", + "spin 0.9.9", ] [[package]] @@ -1626,7 +1664,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -1681,7 +1719,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -1691,10 +1728,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi", - "wasm-bindgen", ] [[package]] @@ -1721,6 +1756,7 @@ dependencies = [ "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", "wasm-bindgen", ] @@ -1747,9 +1783,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" -version = "0.4.18" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" +checksum = "e47d37d2ae4464254884b60ab7071be2b876a9c35b696bd018ddcc76847309cd" dependencies = [ "aho-corasick", "bstr", @@ -1772,12 +1808,12 @@ dependencies = [ [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -1858,20 +1894,29 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ - "digest 0.10.7", + "digest 0.11.3", +] + +[[package]] +name = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.2", ] [[package]] @@ -1886,9 +1931,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" dependencies = [ "bytes", "http", @@ -1896,9 +1941,9 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" dependencies = [ "bytes", "futures-core", @@ -1931,7 +1976,7 @@ dependencies = [ "serde", "serde_derive", "sysinfo", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", "uuid", ] @@ -1941,14 +1986,16 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" dependencies = [ + "subtle", "typenum", + "zeroize", ] [[package]] name = "hyper" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" +checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" dependencies = [ "atomic-waker", "bytes", @@ -2037,9 +2084,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "ignore" -version = "0.4.27" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe112b004901c62c2faa11f4f75e9864e0cc5af8da71c9115d184a3aa888749f" +checksum = "7b009b6744c1445efd7244084e25e498636412effb6760b55067553baa925cc7" dependencies = [ "crossbeam-deque", "globset", @@ -2110,11 +2157,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -2127,7 +2174,7 @@ dependencies = [ "indoc", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2186,9 +2233,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccfe6121cbe750cf81efa362d85c0bde7ea298ec43092d3a193baca59cdbd634" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ "defmt", "jiff-static", @@ -2200,13 +2247,13 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e165e897f662d428f3cd3828a919dbe067c2d42bb1031eede74ef9d27ecdedd2" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2232,16 +2279,16 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", - "sha2 0.10.9", - "signature", + "primeorder", + "sha2 0.11.0", + "wnaf", ] [[package]] @@ -2276,9 +2323,9 @@ dependencies = [ [[package]] name = "kstring" -version = "2.0.2" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1" +checksum = "b609e7ca5ea38f093c20a4a102335b247221c9643b7a6bc3510f196f99499a9e" dependencies = [ "serde", "static_assertions", @@ -2361,7 +2408,7 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] @@ -2413,7 +2460,7 @@ checksum = "de66c928222984aea59fcaed8ba627f388aaac3c1f57dcb05cc25495ef8faefe" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2463,7 +2510,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad42e4aec09192b0dd71faaddce1a674e4ea26c248ae6c2a2eb643b7af1b6775" dependencies = [ "aho-corasick", - "bitflags 2.13.0", + "bitflags 2.13.1", "bstr", "clap", "either", @@ -2534,7 +2581,7 @@ dependencies = [ "quote", "regex-syntax", "rustc_version 0.4.1", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2548,7 +2595,7 @@ dependencies = [ "quote", "regex-automata", "regex-syntax", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2584,9 +2631,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a860605968fce16869fd239cf4237a82f3ac470723415db603b0e8b6c8d4fb9" +checksum = "0b6180140927ee907000b0aa540091f6ea512ead4447c92b8fc35bc72788a5a6" dependencies = [ "hashbrown 0.17.1", ] @@ -2597,7 +2644,7 @@ version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303" dependencies = [ - "nix", + "nix 0.29.0", "winapi", ] @@ -2609,7 +2656,7 @@ checksum = "59a9dbbfc75d2688ed057456ce8a3ee3f48d12eec09229f560f3643b9f275653" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2623,9 +2670,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memmap2" @@ -2658,7 +2705,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -2667,9 +2714,18 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "65d430b942dfcf970d0b8e2a8f9cd37a2c0357beef3f7a3084c05403794723d8" +dependencies = [ + "miden-core", + "miden-crypto", + "thiserror 2.0.18", +] + +[[package]] +name = "miden-ace-codegen" +version = "0.25.8" dependencies = [ "miden-core", "miden-crypto", @@ -2678,13 +2734,14 @@ dependencies = [ [[package]] name = "miden-agglayer" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ead17cc16651de0fea5fc3ea67109ad449c7bb274ca8ff91c5b25e2be4a0c9f8" +checksum = "aa4fbcb0a920295f20284c9ccfc51984e2df5bbab54cf95e538ed804b0dcada5" dependencies = [ "alloy-sol-types", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", "miden-protocol", @@ -2700,15 +2757,27 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "eeed4936eb47404f46f094253912e696a7eb9568585e32308e217c7412510928" dependencies = [ - "miden-ace-codegen", + "miden-ace-codegen 0.25.5", "miden-core", "miden-crypto", - "miden-lifted-stark", - "miden-utils-indexing", + "miden-utils-indexing 0.25.5", + "proptest", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "miden-air" +version = "0.25.8" +dependencies = [ + "miden-ace-codegen 0.25.8", + "miden-core", + "miden-crypto", + "miden-utils-indexing 0.25.8", "proptest", "thiserror 2.0.18", "tracing", @@ -2716,9 +2785,7 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +version = "0.25.8" dependencies = [ "env_logger", "log", @@ -2734,15 +2801,11 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +version = "0.25.8" dependencies = [ - "aho-corasick", "env_logger", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -2757,6 +2820,16 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.8" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror 2.0.18", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -2772,7 +2845,7 @@ dependencies = [ "heck", "miden-assembly-syntax", "miden-debug-types", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-formatting", "miden-mast-package", @@ -2782,8 +2855,8 @@ dependencies = [ "proc-macro2", "quote", "semver 1.0.28", - "syn 2.0.118", - "toml 1.1.2+spec-1.1.0", + "syn 2.0.119", + "toml 1.1.3+spec-1.1.0", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -2798,9 +2871,9 @@ dependencies = [ [[package]] name = "miden-block-prover" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "292ded918a0ddd056dc34db471f0bef6ac7991467d513ba505a4fcc0b1ecfac4" +checksum = "5e503f64c41090fa581ac9dbd21b2fc18b393c05051235b56fde7ce8a6b68a5e" dependencies = [ "miden-protocol", "thiserror 2.0.18", @@ -2808,9 +2881,9 @@ dependencies = [ [[package]] name = "miden-client" -version = "0.15.3" +version = "0.16.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf89b6ba10e98ffb11d5b644e4c2656f7a220bf367cf0c3b970c2028c1b6a47f" +checksum = "7ecfd62f7d71b6cdda10ac53030c5f47ee50beecfa04ab6b855bbf495413446b" dependencies = [ "anyhow", "async-trait", @@ -2823,15 +2896,14 @@ dependencies = [ "miden-node-proto-build", "miden-note-transport-proto-build", "miden-protocol", - "miden-remote-prover-client", "miden-standards", "miden-testing", "miden-tx", - "miden-tx-batch-prover", + "miden-tx-batch", "miette", "prost", "prost-types", - "rand 0.9.4", + "rand 0.10.2", "serde", "serde_json", "tempfile", @@ -2848,9 +2920,7 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +version = "0.25.8" dependencies = [ "derive_more", "log", @@ -2858,27 +2928,24 @@ dependencies = [ "miden-debug-types", "miden-formatting", "miden-utils-core-derive", - "miden-utils-indexing", + "miden-utils-indexing 0.25.8", "miden-utils-sync", - "num-derive", - "num-traits", "proptest", - "proptest-derive", "serde", "thiserror 2.0.18", ] [[package]] name = "miden-core-lib" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +version = "0.25.8" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -2887,9 +2954,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -2901,29 +2968,27 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "rayon", "serde", - "sha2 0.10.9", - "sha3 0.10.9", + "sha2 0.11.0", + "sha3 0.12.0", "subtle", "thiserror 2.0.18", "x25519-dalek", @@ -2931,19 +2996,17 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "miden-debug" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c581bad965d49515f04ca370b4a20e8987f8c6051e39ac290a3128844e602ac" +version = "0.9.0" dependencies = [ "clap", "compact_str", @@ -2958,8 +3021,12 @@ dependencies = [ "miden-debug-engine", "miden-debug-types", "miden-mast-package", + "miden-package-registry", "miden-processor", + "miden-project", + "pyo3-build-config", "ratatui", + "rustyline", "signal-hook 0.4.4", "syntect", "thiserror 2.0.18", @@ -2970,9 +3037,7 @@ dependencies = [ [[package]] name = "miden-debug-dap" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15af4ae2bc3fa05c24447260849ed4a314ec314f4009202d086e4df22076b9e8" +version = "0.9.0" dependencies = [ "serde", "serde_json", @@ -2981,12 +3046,11 @@ dependencies = [ [[package]] name = "miden-debug-engine" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dd805d5456e0c00c8d89bd9ce16105f55a55ca3bee8b67459e554588d0dbb2" +version = "0.9.0" dependencies = [ "clap", "glob", + "inventory", "log", "miden-assembly", "miden-assembly-syntax", @@ -2994,29 +3058,30 @@ dependencies = [ "miden-debug-dap", "miden-debug-types", "miden-mast-package", + "miden-package-registry", "miden-processor", + "miden-project", "num-traits", "proptest", "rustc-demangle", + "rustc-hash", "serde", "serde_json", "smallvec", "socket2", "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", ] [[package]] name = "miden-debug-types" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +version = "0.25.8" dependencies = [ "memchr", "miden-crypto", "miden-formatting", "miden-miette", - "miden-utils-indexing", + "miden-utils-indexing 0.25.8", "miden-utils-sync", "paste", "proptest", @@ -3031,12 +3096,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror 2.0.18", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -3048,7 +3132,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -3058,7 +3142,7 @@ version = "0.13.1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -3067,7 +3151,7 @@ version = "0.13.1" dependencies = [ "miden-core", "miden-debug", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "midenc-frontend-wasm", "midenc-integration-test-support", @@ -3084,34 +3168,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror 2.0.18", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror 2.0.18", @@ -3120,13 +3205,15 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +version = "0.25.8" dependencies = [ + "hashbrown 0.17.1", + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", + "miden-utils-indexing 0.25.8", + "rustc-hash", "serde", "thiserror 2.0.18", ] @@ -3147,9 +3234,9 @@ dependencies = [ "rustc_version 0.2.3", "rustversion", "serde_json", - "spin 0.9.8", + "spin 0.9.9", "strip-ansi-escapes", - "syn 2.0.118", + "syn 2.0.119", "textwrap", "thiserror 2.0.18", "trybuild", @@ -3164,14 +3251,14 @@ checksum = "86a905f3ea65634dd4d1041a4f0fd0a3e77aa4118341d265af1a94339182222f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "miden-node-proto-build" -version = "0.15.1" +version = "0.16.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "682ea08edd5da59447e24acd6c0ce4e5d06c759ea6e58a3db553f3de3d5aa6b2" +checksum = "0f1027cbad81e3f7a59b50be02cd27c22766573388fce96a807615f2bec0d5fc" dependencies = [ "build-rs", "codegen", @@ -3183,9 +3270,9 @@ dependencies = [ [[package]] name = "miden-note-transport-proto-build" -version = "0.4.1" +version = "0.5.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7399c2999453c781601f16d82f328ecc695f9375e2415a05147449990f32f71f" +checksum = "68e600f9d0bcb8c7e052a0dff573bde5fb953cf29c26b8c5aa36d71166a17957" dependencies = [ "fs-err", "miette", @@ -3207,9 +3294,7 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +version = "0.25.8" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -3223,16 +3308,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +version = "0.25.8" dependencies = [ "itertools 0.14.0", - "miden-air", + "miden-air 0.25.8", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", - "miden-utils-indexing", + "miden-utils-indexing 0.25.8", "paste", "rayon", "thiserror 2.0.18", @@ -3241,9 +3325,7 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +version = "0.25.8" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -3253,18 +3335,18 @@ dependencies = [ "serde", "serde-untagged", "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", ] [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -3272,55 +3354,44 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", - "rand_chacha", - "rand_xoshiro 0.7.0", + "rand 0.10.2", + "rand_chacha 0.10.0", + "rand_xoshiro 0.8.1", "regex", "semver 1.0.28", "serde", "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", "walkdir", ] [[package]] name = "miden-prover" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1d7c6760b33c256ae38ef704e729b27404523d9bdc797a56ad1b157e0e39cff" +checksum = "7f353ca15ea3cb2012ed2ea0e0a01958872edb2143c994330add0811e11c5775" dependencies = [ - "bincode", - "miden-air", + "miden-air 0.25.5", "miden-core", "miden-crypto", "miden-processor", "serde", + "serde-wincode", "tracing", ] [[package]] -name = "miden-remote-prover-client" -version = "0.15.1" +name = "miden-rowan" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88ca0767fe4e39669e2da9fd0975265a32cd53d90ec8661cfc694bedbde9d88" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" dependencies = [ - "build-rs", - "fs-err", - "getrandom 0.4.3", - "miden-node-proto-build", - "miden-protocol", - "miden-tx", - "miette", - "prost", - "thiserror 2.0.18", - "tokio", - "tonic", - "tonic-prost", - "tonic-prost-build", - "tonic-web-wasm-client", + "hashbrown 0.17.1", + "rustc-hash", ] [[package]] @@ -3333,22 +3404,35 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-standards" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c7146b028e637f4079b5bdefeefc54d7d6e47a805451fa0a18859d19efa2ff" +checksum = "6556a340bf1bec696fd376a5a567d1d4056df5f2d80cecc4f67b56d07defd050" dependencies = [ "bon", "fs-err", "miden-assembly", "miden-core-lib", + "miden-mast-package", + "miden-package-registry", + "miden-project", "miden-protocol", - "rand 0.9.4", + "rand 0.10.2", "regex", "thiserror 2.0.18", "walkdir", @@ -3356,38 +3440,38 @@ dependencies = [ [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror 2.0.18", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-testing" -version = "0.15.3" +version = "0.16.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4096fc44a4c88f37405be284e25efdce194d6051e9472ae136ab9249659433c" +checksum = "610ba28ab9d73da0fcde6aa2389b2029e096df0c7248fde558d7d44be67ec8f7" dependencies = [ "anyhow", "itertools 0.14.0", @@ -3398,9 +3482,9 @@ dependencies = [ "miden-protocol", "miden-standards", "miden-tx", - "miden-tx-batch-prover", - "rand 0.9.4", - "rand_chacha", + "miden-tx-batch", + "rand 0.10.2", + "rand_chacha 0.10.0", "thiserror 2.0.18", ] @@ -3421,38 +3505,38 @@ checksum = "0ee4176a0f2e7d29d2a8ee7e60b6deb14ce67a20e94c3e2c7275cdb8804e1862" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "miden-tx" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94092b45bc0abc656af25473c9807d1e6cee8e682c58d3b1186f0bd0fb6471fb" +checksum = "548c667b479e16a8f6415181cd1f84bbae68999182c1b1f5a5b9aa4488ab500a" dependencies = [ "miden-processor", "miden-protocol", "miden-prover", "miden-standards", - "miden-verifier", "thiserror 2.0.18", ] [[package]] -name = "miden-tx-batch-prover" -version = "0.15.3" +name = "miden-tx-batch" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60add2b40559352661bc86970541f88ffcf98c528f301295f9dc3bf15481b46" +checksum = "93e6652dd5f40a5c1cc62122385c7125a22a6490c9ac47793998a0cf8a5c6347" dependencies = [ + "miden-processor", "miden-protocol", - "miden-tx", + "miden-prover", + "miden-verifier", + "thiserror 2.0.18", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +version = "0.25.8" dependencies = [ "proc-macro2", "quote", @@ -3461,11 +3545,8 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +version = "0.25.8" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -3473,11 +3554,19 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "430f251dbfc54edae772240744cf0d9b09b1b62362bd7712f3d72b3884c94027" dependencies = [ "miden-crypto", + "thiserror 2.0.18", +] + +[[package]] +name = "miden-utils-indexing" +version = "0.25.8" +dependencies = [ + "miden-serde-utils 0.28.0", "proptest", "serde", "thiserror 2.0.18", @@ -3485,9 +3574,7 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +version = "0.25.8" dependencies = [ "lock_api", "loom", @@ -3497,17 +3584,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "218d6b64541e1fcb7d14e7e6b1c2ce2a44458910c252fab95a2a7e2dd012f5c8" dependencies = [ - "bincode", - "miden-air", + "miden-air 0.25.5", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror 2.0.18", "tracing", + "wincode", ] [[package]] @@ -3539,10 +3627,12 @@ dependencies = [ "miden-assembly", "miden-assembly-syntax", "miden-core", + "miden-core-lib", "miden-mast-package", "miden-processor", "miden-protocol", "miden-thiserror", + "miden-utils-sync", "midenc-dialect-arith", "midenc-dialect-cf", "midenc-dialect-hir", @@ -3552,6 +3642,7 @@ dependencies = [ "midenc-expect-test", "midenc-hir", "midenc-hir-analysis", + "midenc-log", "midenc-session", "petgraph 0.8.3", "proptest", @@ -3567,6 +3658,7 @@ dependencies = [ "clap", "log", "miden-assembly", + "miden-assembly-syntax", "miden-mast-package", "miden-package-registry", "miden-thiserror", @@ -3730,7 +3822,7 @@ version = "0.9.2" dependencies = [ "anyhow", "base64", - "bitflags 2.13.0", + "bitflags 2.13.1", "blink-alloc", "compact_str", "hashbrown 0.17.1", @@ -3794,7 +3886,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -3829,7 +3921,7 @@ dependencies = [ "parking_lot", "rustc-hash", "serde", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", ] [[package]] @@ -3848,12 +3940,10 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +version = "0.9.0" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", @@ -3873,7 +3963,7 @@ dependencies = [ "midenc-expect-test", "midenc-frontend-wasm", "midenc-integration-test-support", - "rand 0.9.4", + "rand 0.10.2", "tokio", ] @@ -3936,7 +4026,7 @@ dependencies = [ "proptest", "quote", "sha2 0.11.0", - "syn 2.0.118", + "syn 2.0.119", "wasmi", "wat", ] @@ -4007,7 +4097,7 @@ checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -4028,9 +4118,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", "log", @@ -4053,34 +4143,46 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - [[package]] name = "new_debug_unreachable" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + [[package]] name = "nix" version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "libc", "memoffset", ] +[[package]] +name = "nix" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" +dependencies = [ + "bitflags 2.13.1", + "cfg-if", + "cfg_aliases", + "libc", +] + [[package]] name = "nom" version = "7.1.3" @@ -4162,7 +4264,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -4186,11 +4288,10 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -4231,7 +4332,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] @@ -4286,7 +4387,7 @@ version = "6.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc3cbf698f9438986c11a880c90a6d04b9de27575afd28bbf45b154b6c709e2" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "libc", "once_cell", "onig_sys", @@ -4308,12 +4409,6 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "openssl-probe" version = "0.2.1" @@ -4337,24 +4432,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -4363,11 +4458,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -4378,11 +4487,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools 0.14.0", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "spin 0.10.0", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "spin 0.10.1", + "tracing", +] + +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", "tracing", ] @@ -4394,8 +4518,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools 0.14.0", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -4409,14 +4549,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -4424,12 +4584,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -4437,12 +4597,27 @@ dependencies = [ name = "p3-matrix" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" +checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" dependencies = [ "itertools 0.14.0", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -4453,6 +4628,12 @@ name = "p3-maybe-rayon" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" + +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" dependencies = [ "rayon", ] @@ -4463,10 +4644,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -4478,19 +4672,43 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools 0.14.0", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "spin 0.10.1", + "tracing", +] + +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools 0.14.0", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", - "spin 0.10.0", + "spin 0.12.2", "tracing", ] @@ -4500,8 +4718,20 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -4511,10 +4741,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -4525,8 +4768,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools 0.14.0", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools 0.14.0", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -4535,6 +4790,16 @@ name = "p3-util" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d08a58162a4c264269ef454f0b28dcda89939490eecacb2b2cf5b00f719b80f6" +dependencies = [ + "serde", + "transpose", +] + +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" dependencies = [ "rayon", "serde", @@ -4572,7 +4837,7 @@ dependencies = [ "by_address", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -4604,6 +4869,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" + [[package]] name = "path-absolutize" version = "3.1.1" @@ -4658,7 +4929,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -4718,7 +4989,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", - "rand 0.8.6", + "rand 0.8.7", ] [[package]] @@ -4731,7 +5002,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -4760,7 +5031,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -4771,9 +5042,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -4815,20 +5086,19 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures 0.3.0", "universal-hash", ] [[package]] name = "portable-atomic" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3" [[package]] name = "portable-atomic-util" @@ -4877,7 +5147,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.118", + "syn 2.0.119", +] + +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common 0.2.2", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", ] [[package]] @@ -4902,25 +5198,25 @@ dependencies = [ ] [[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" +name = "proc-macro-error-attr3" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +checksum = "82366fd7d8b7a440d66d13418820c69df9b3908bcb1a0476d7f5ce5d12f5a04d" dependencies = [ "proc-macro2", "quote", ] [[package]] -name = "proc-macro-error2" -version = "2.0.1" +name = "proc-macro-error3" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +checksum = "b511283ea8a74b4b39447b128c5d00f03a356b7424554b13e298a5550100d9ac" dependencies = [ - "proc-macro-error-attr2", + "proc-macro-error-attr3", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -4940,10 +5236,10 @@ checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.13.0", + "bitflags 2.13.1", "num-traits", - "rand 0.9.4", - "rand_chacha", + "rand 0.9.5", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -4959,14 +5255,14 @@ checksum = "fb6dc647500e84a25a85b100e76c85b8ace114c209432dc174f20aac11d4ed6c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "prost" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" +checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" dependencies = [ "bytes", "prost-derive", @@ -4974,9 +5270,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" +checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" dependencies = [ "heck", "itertools 0.14.0", @@ -4989,7 +5285,7 @@ dependencies = [ "pulldown-cmark", "pulldown-cmark-to-cmark", "regex", - "syn 2.0.118", + "syn 2.0.119", "tempfile", ] @@ -5003,14 +5299,14 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "prost-reflect" -version = "0.16.4" +version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590aa145fee8f7a26b5a6055365e7c5e89a5c1caae9869de76ec0ee73181a2f9" +checksum = "01b80ea363c31af2de2b92e3c07ed1156628f7838c4afb4df75ee78a37fedbd1" dependencies = [ "logos 0.16.1", "miette", @@ -5020,9 +5316,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" +checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" dependencies = [ "prost", ] @@ -5074,7 +5370,7 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "memchr", "unicase", ] @@ -5088,6 +5384,15 @@ dependencies = [ "pulldown-cmark", ] +[[package]] +name = "pyo3-build-config" +version = "0.28.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e368e7ddfdeb98c9bca7f8383be1648fd84ab466bf2bc015e94008db6d35611e" +dependencies = [ + "target-lexicon", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -5130,22 +5435,32 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "radix_trie" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b4431027dcd37fc2a73ef740b5f233aa805897935b8bce0195e41bbf9a3289a" +dependencies = [ + "endian-type", + "nibble_vec", +] + [[package]] name = "rand" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "rand_core 0.6.4", ] [[package]] name = "rand" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -5155,6 +5470,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -5168,14 +5485,21 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand_chacha" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" +dependencies = [ + "ppv-lite86", + "rand_core 0.10.1", +] + [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", -] [[package]] name = "rand_core" @@ -5192,15 +5516,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -5221,11 +5536,11 @@ dependencies = [ [[package]] name = "rand_xoshiro" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" +checksum = "662effc7698e08ea324d3acccf8d9d7f7bf79b9785e270a174ea36e56900c91d" dependencies = [ - "rand_core 0.9.5", + "rand_core 0.10.1", ] [[package]] @@ -5250,7 +5565,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbb175c433c8e28a809d1f5773a2ae96e68c0ce40db865cbab1020bf33ae479c" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "compact_str", "critical-section", "hashbrown 0.17.1", @@ -5315,7 +5630,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66e3d19bcc9130ca376277d93b60767ff121ace3be06f5f95f81dd68956407d1" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "hashbrown 0.17.1", "indoc", "instability", @@ -5355,14 +5670,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] name = "regex" -version = "1.12.4" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -5372,9 +5687,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" dependencies = [ "aho-corasick", "memchr", @@ -5389,12 +5704,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -5427,8 +5742,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45caf26f647c19115bf9c453c70ffe4a4a3a6390dceebd942610584f99b8ddce" dependencies = [ "proptest", - "rand 0.8.6", - "rand 0.9.4", + "rand 0.8.7", + "rand 0.9.5", "ruint-macro", "serde_core", "valuable", @@ -5443,9 +5758,9 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rustc-demangle" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" [[package]] name = "rustc-hash" @@ -5477,7 +5792,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys", @@ -5486,9 +5801,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.41" +version = "0.23.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" +checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138" dependencies = [ "log", "once_cell", @@ -5533,9 +5848,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "rusty-fork" @@ -5549,6 +5864,27 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "rustyline" +version = "18.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53f6a737db68eb1a8ccff86b584b2fc13eca6a7bb6f78ebc7c529547e3ab9684" +dependencies = [ + "bitflags 2.13.1", + "cfg-if", + "clipboard-win", + "home", + "libc", + "log", + "memchr", + "nix 0.31.3", + "radix_trie", + "unicode-segmentation", + "unicode-width 0.2.2", + "utf8parse", + "windows-sys 0.61.2", +] + [[package]] name = "ruzstd" version = "0.8.3" @@ -5596,14 +5932,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -5614,7 +5950,7 @@ version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "core-foundation", "core-foundation-sys", "libc", @@ -5678,6 +6014,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror 2.0.18", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -5695,7 +6042,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -5719,7 +6066,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -5731,6 +6078,16 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" version = "0.10.9" @@ -5773,6 +6130,17 @@ dependencies = [ "keccak 0.2.0", ] +[[package]] +name = "sha3" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" +dependencies = [ + "digest 0.11.3", + "keccak 0.2.0", + "sponge-cursor", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -5837,19 +6205,19 @@ dependencies = [ [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", + "digest 0.11.3", + "rand_core 0.10.1", ] [[package]] name = "simd-adler32" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "similar" @@ -5921,9 +6289,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", "windows-sys 0.61.2", @@ -5931,32 +6299,47 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" dependencies = [ "lock_api", ] [[package]] name = "spin" -version = "0.10.0" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spin" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" dependencies = [ "lock_api", ] [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] +[[package]] +name = "sponge-cursor" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" + [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -6036,7 +6419,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -6079,9 +6462,20 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.118" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" +checksum = "a207d6d6a2b7fc470b80443726053f18a2481b7e1eee970597051596567987a3" dependencies = [ "proc-macro2", "quote", @@ -6090,14 +6484,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec005042c7d952febc1a3ef5b0f6674e9054aa836877a31c90b20e25b3d31744" +checksum = "083be3061e64d362cbe6ef12cfe1307ba3884326d8856448fe8a120fa2c44ebf" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -6145,6 +6539,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "target-lexicon" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" + [[package]] name = "target-triple" version = "1.0.0" @@ -6188,7 +6588,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9048a889effe34a5cddee0af7f53285198b16dca3be510858d38dfdb3e62a04e" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "parking_lot", "rustix", "signal-hook 0.3.18", @@ -6234,7 +6634,7 @@ checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7" dependencies = [ "anyhow", "base64", - "bitflags 2.13.0", + "bitflags 2.13.1", "fancy-regex", "filedescriptor", "finl_unicode", @@ -6244,7 +6644,7 @@ dependencies = [ "libc", "log", "memmem", - "nix", + "nix 0.29.0", "num-derive", "num-traits", "ordered-float", @@ -6305,7 +6705,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -6316,14 +6716,14 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] @@ -6381,9 +6781,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.52.3" +version = "1.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +checksum = "d988bcd52dbe076d3d46903332f58c912b87a2c49b1428419a5845154762ffee" dependencies = [ "bytes", "libc", @@ -6396,13 +6796,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -6457,9 +6857,9 @@ dependencies = [ [[package]] name = "toml" -version = "1.1.2+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +checksum = "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c" dependencies = [ "indexmap", "serde_core", @@ -6467,7 +6867,7 @@ dependencies = [ "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", "toml_writer", - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] @@ -6490,9 +6890,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.12+spec-1.1.0" +version = "0.25.13+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" dependencies = [ "indexmap", "serde_core", @@ -6500,7 +6900,7 @@ dependencies = [ "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", "toml_writer", - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] @@ -6509,14 +6909,14 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] name = "toml_writer" -version = "1.1.1+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" [[package]] name = "tonic" @@ -6557,7 +6957,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -6595,7 +6995,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.118", + "syn 2.0.119", "tempfile", "tonic-build", ] @@ -6675,7 +7075,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -6735,9 +7135,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "trybuild" -version = "1.0.117" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0710d4dfbeae4f9c390baa784c49858a7468fa433f3fe5d0ec5ebef651cf59f9" +checksum = "06649c6f63d86604ba0c8950d5a1829fc9a17afd70fc6629f481d75b6a624c78" dependencies = [ "dissimilar", "glob", @@ -6746,7 +7146,7 @@ dependencies = [ "serde_json", "target-triple", "termcolor", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.3+spec-1.1.0", ] [[package]] @@ -6863,12 +7263,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ - "crypto-common 0.1.7", - "subtle", + "crypto-common 0.2.2", + "ctutils", ] [[package]] @@ -6885,9 +7285,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.4" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" +checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" dependencies = [ "atomic", "getrandom 0.4.3", @@ -7020,7 +7420,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", "wasm-bindgen-shared", ] @@ -7045,12 +7445,12 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.252.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8185ae345fa5687c054626ff9a50e7089797a343d9904d1dc9820eb4c4d3196f" +checksum = "59972d6cd272259de647b7c1f1912e45e289c75ffd4be04e10695507cd7e1b59" dependencies = [ "leb128fmt", - "wasmparser 0.252.0", + "wasmparser 0.253.0", ] [[package]] @@ -7084,7 +7484,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2300d0f78cba12f14e29e8dd157ea64050c0a688179aefdb2050105805594a0c" dependencies = [ - "spin 0.9.8", + "spin 0.9.9", "wasmi_collections", "wasmi_core", "wasmi_ir", @@ -7125,7 +7525,7 @@ version = "0.239.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c9d90bb93e764f6beabf1d02028c70a2156a6583e63ac4218dd07ef733368b0" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "indexmap", ] @@ -7135,7 +7535,7 @@ version = "0.247.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6fb4c2bee46c5ea4d40f8cdb5c131725cd976718ec56f1c8e82fbde5fa2a80" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "hashbrown 0.17.1", "indexmap", "semver 1.0.28", @@ -7147,18 +7547,18 @@ version = "0.248.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4439c5eee9df71ee0c6efb37f63b1fcb1fec38f85f5142c54e7ed05d33091a" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "indexmap", "semver 1.0.28", ] [[package]] name = "wasmparser" -version = "0.252.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3eb099dcadcde5be9eef55e3a337128efd4e44b4c93122487e4d2e4e1c6627c" +checksum = "19db11f87d2486580e1e8b6f494c54df7e0566b87d0b599db843c24019667339" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "indexmap", "semver 1.0.28", ] @@ -7186,22 +7586,22 @@ dependencies = [ [[package]] name = "wast" -version = "252.0.0" +version = "253.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942a3449d6a593fccc111a6241c8df52bda168af30e40bf9580d4394d7374c65" +checksum = "d3264542f8965c5d84fb1085d924bfba9a6314bb228eff13a2de14d7627664d0" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width 0.2.2", - "wasm-encoder 0.252.0", + "wasm-encoder 0.253.0", ] [[package]] name = "wat" -version = "1.252.0" +version = "1.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c72a4ba7088f7bac94cf516e49882bdf97068904a563768cf249efc839ec42cb" +checksum = "4bfc5ce906144200c972ec617470aa35bd847472e170b26dde3e80541c674055" dependencies = [ "wast", ] @@ -7319,6 +7719,18 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror 2.0.18", +] + [[package]] name = "windows" version = "0.62.2" @@ -7372,7 +7784,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -7383,7 +7795,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -7519,9 +7931,9 @@ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" [[package]] name = "winnow" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" dependencies = [ "memchr", ] @@ -7556,7 +7968,7 @@ dependencies = [ "heck", "indexmap", "prettyplease", - "syn 2.0.118", + "syn 2.0.119", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -7572,7 +7984,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -7584,7 +7996,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d567162a6b9843080e5e0053f696623ff694bae8ae017c9ec536d1873bbe3d8" dependencies = [ "anyhow", - "bitflags 2.13.0", + "bitflags 2.13.1", "indexmap", "log", "serde", @@ -7615,6 +8027,17 @@ dependencies = [ "wasmparser 0.247.0", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "wyz" version = "0.5.1" @@ -7626,12 +8049,12 @@ dependencies = [ [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] @@ -7651,22 +8074,22 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "zerocopy" -version = "0.8.53" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75726053136156d419e285b9b7eddaaea9e3fea6ce32eed44a89901f0bd98de1" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.53" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4714fd92cf900833d49538023a9b3915155210801d1c1169eba513b2addefd71" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -7677,6 +8100,6 @@ checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/Cargo.toml b/Cargo.toml index bc76803b3..3227e2d99 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -79,20 +79,22 @@ litcheck-filecheck = "0.4" log = { version = "0.4", features = ["kv"] } # Miden Dependencies -miden-assembly = { version = "0.23", default-features = false } -miden-core = { version = "0.23", default-features = false } -miden-debug = { version = "0.8" } -miden-debug-types = { version = "0.23", default-features = false } -miden-assembly-syntax = { version = "0.23", default-features = false } +miden-assembly = { version = "0.25", default-features = false } +miden-core = { version = "0.25", default-features = false } +miden-debug = { version = "0.9" } +miden-debug-types = { version = "0.25", default-features = false } +miden-assembly-syntax = { version = "0.25", default-features = false } miden-formatting = { version = "0.1", default-features = false } -miden-protocol = { version = "0.15", default-features = false } -miden-standards = { version = "0.15", default-features = false } +miden-protocol = { version = "=0.16.0-alpha.4", default-features = false } +miden-standards = { version = "=0.16.0-alpha.4", default-features = false } +miden-processor = { version = "0.25", default-features = false } +miden-core-lib = { version = "0.25", default-features = false } +miden-mast-package = { version = "0.25", default-features = false } +miden-package-registry = { version = "0.25", default-features = false } +miden-project = { version = "0.25", default-features = false } +miden-utils-sync = { version = "0.25", default-features = false } +midenc-hir-type = "0.9" -miden-processor = { version = "0.23", default-features = false } -miden-core-lib = { version = "0.23", default-features = false } -miden-mast-package = { version = "0.23", default-features = false } -miden-package-registry = { version = "0.23", default-features = false } -miden-project = { version = "0.23", default-features = false } paste = "1.0" parking_lot = "0.12" petgraph = { version = "0.8", default-features = false, features = [ @@ -167,17 +169,18 @@ miden-field-repr = { version = "0.13.1", path = "sdk/field-repr/repr" } miden-stdlib-sys = { version = "0.13.1", path = "sdk/stdlib-sys" } [patch.crates-io] -#miden-assembly = { git = "https://github.com/0xMiden/miden-vm", rev = "614cd7f9b52f45238b0ab59c71ebb49325051e5d" } -#miden-assembly = { path = "../miden-vm/assembly" } -#miden-assembly-syntax = { path = "../miden-vm/assembly-syntax" } -#miden-core = { git = "https://github.com/0xMiden/miden-vm", rev = "614cd7f9b52f45238b0ab59c71ebb49325051e5d" } -#miden-core = { path = "../miden-vm/core" } -# miden-debug = { git = "https://github.com/0xMiden/miden-debug", branch = "main" } -#miden-debug-types = { path = "../miden-vm/crates/debug/types" } -#miden-processor = { git = "https://github.com/0xMiden/miden-vm", rev = "614cd7f9b52f45238b0ab59c71ebb49325051e5d" } -#miden-processor = { path = "../miden-vm/processor" } -#miden-mast-package = { git = "https://github.com/0xMiden/miden-vm", rev = "614cd7f9b52f45238b0ab59c71ebb49325051e5d" } -#miden-mast-package = { path = "../miden-vm/package" } +midenc-hir-type = { path = "../miden-vm/crates/midenc-hir-type"} +miden-assembly = { path = "../miden-vm/crates/assembly" } +miden-assembly-syntax = { path = "../miden-vm/crates/assembly-syntax" } +miden-core = { path = "../miden-vm/core" } +miden-core-lib = { path = "../miden-vm/crates/lib/core" } +miden-debug = { path = "../miden-debug" } +miden-debug-types = { path = "../miden-vm/crates/debug-types" } +miden-processor = { path = "../miden-vm/processor" } +miden-mast-package = { path = "../miden-vm/crates/mast-package" } +miden-package-registry = { path = "../miden-vm/crates/package-registry" } +miden-project = { path = "../miden-vm/crates/project" } +miden-utils-sync = { path = "../miden-vm/crates/utils-sync" } #miden-protocol = { git = "https://github.com/0xMiden/protocol", rev = "a53bbe2209f506df87876c8b9c9a1730214f456b" } #miden-standards = { git = "https://github.com/0xMiden/protocol", rev = "a53bbe2209f506df87876c8b9c9a1730214f456b" } #miden-tx = { tag = "v0.14.0-beta.4", git = "https://github.com/0xMiden/miden-base" } diff --git a/codegen/masm/Cargo.toml b/codegen/masm/Cargo.toml index 0b053fb26..c63cd6737 100644 --- a/codegen/masm/Cargo.toml +++ b/codegen/masm/Cargo.toml @@ -18,6 +18,7 @@ doctest = false default = ["std"] std = [ "miden-assembly/std", + "miden-utils-sync/std", "midenc-hir/std", "midenc-dialect-hir/std", "petgraph/std", @@ -33,6 +34,7 @@ miden-core.workspace = true miden-mast-package.workspace = true miden-processor.workspace = true miden-protocol.workspace = true +miden-utils-sync.workspace = true midenc-hir.workspace = true midenc-hir-analysis.workspace = true midenc-dialect-arith.workspace = true @@ -53,3 +55,9 @@ itertools = "0.14.0" midenc-expect-test = { path = "../../tools/expect-test" } midenc-hir = { path = "../../hir", features = ["logging"] } proptest.workspace = true + +[build-dependencies] +miden-assembly = { workspace = true, features = ["std"] } +miden-core-lib.workspace = true +midenc-log.workspace = true +midenc-session = { workspace = true, features = ["std"] } diff --git a/codegen/masm/build.rs b/codegen/masm/build.rs new file mode 100644 index 000000000..add75a129 --- /dev/null +++ b/codegen/masm/build.rs @@ -0,0 +1,51 @@ +use std::{ + env, + path::{Path, PathBuf}, +}; + +use miden_assembly::{Assembler, Report, diagnostics::IntoDiagnostic}; +use miden_core_lib::CoreLibrary; +use midenc_session::miden_package_registry::PackageCache; + +fn main() -> Result<(), Report> { + use miden_assembly::diagnostics::reporting::ReportHandlerOpts; + + // Rebuild the package if the content of the `intrinsics` directory changes + println!("cargo:rerun-if-changed=intrinsics"); + + miden_assembly::diagnostics::reporting::set_hook(Box::new(|_| { + Box::new(ReportHandlerOpts::new().build()) + })) + .unwrap(); + miden_assembly::diagnostics::reporting::set_panic_hook(); + + // Enable debug tracing to stderr via the MIDEN_LOG environment variable, if present + midenc_log::Builder::from_env("MIDENC_TRACE").format_timestamp(None).init(); + + // Build compiler-intrinsics library + let intrinsics_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("intrinsics"); + let toolchain_dir = std::env::var_os("MIDEN_SYSROOT").map(PathBuf::from); + let cwd = env::current_dir().into_diagnostic()?; + let target_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap()); + let options = + midenc_session::Options::new(None, None, cwd, target_dir.clone(), None, toolchain_dir); + + let mut registry = midenc_session::registry::HybridPackageRegistry::new(&options)?; + // Extend the registry with the built-in core library, in case the midenup toolchain is not + // available + registry.cache_package(CoreLibrary::default().package())?; + + let assembler = Assembler::default(); + let mut project_assembler = + assembler.for_project_at_path(intrinsics_dir.join("miden-project.toml"), &mut registry)?; + + let package = + project_assembler.assemble(miden_assembly::ProjectTargetSelector::Library, "release")?; + + let build_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); + + // write the masp output + package.write_masp_file(&build_dir).into_diagnostic()?; + + Ok(()) +} diff --git a/codegen/masm/intrinsics/miden-project.toml b/codegen/masm/intrinsics/miden-project.toml new file mode 100644 index 000000000..0b59b3f22 --- /dev/null +++ b/codegen/masm/intrinsics/miden-project.toml @@ -0,0 +1,13 @@ +[package] +name = "compiler-intrinsics" +version = "0.9.0" + +[lib] +namespace = "intrinsics" +path = "mod.masm" + +[dependencies] +miden-core = "*" + +[profile.release] +debug = true diff --git a/codegen/masm/intrinsics/mod.masm b/codegen/masm/intrinsics/mod.masm new file mode 100644 index 000000000..81fca9cfb --- /dev/null +++ b/codegen/masm/intrinsics/mod.masm @@ -0,0 +1,4 @@ +pub mod advice +pub mod i32 +pub mod i64 +pub mod mem diff --git a/codegen/masm/src/artifact.rs b/codegen/masm/src/artifact.rs index dc2540a0e..dd07c3871 100644 --- a/codegen/masm/src/artifact.rs +++ b/codegen/masm/src/artifact.rs @@ -1,18 +1,17 @@ use alloc::sync::Arc; use core::fmt; -use miden_assembly::{Path, ast::InvocationTarget}; +use miden_assembly::{Path, ProjectSourceInputs, ast::InvocationTarget}; use miden_core::Word; -use miden_mast_package::Package; use midenc_hir::{constants::ConstantData, dialects::builtin, interner::Symbol}; use midenc_session::{ Emit, OutputMode, OutputType, Session, Writer, diagnostics::{IntoDiagnostic, Report, SourceSpan, Span, WrapErr}, }; -use crate::{TraceEvent, lower::NativePtr, masm}; +use crate::{Event, lower::NativePtr, masm}; -mod project_support; +//mod project_support; pub struct MasmComponent { pub id: Option, @@ -29,8 +28,6 @@ pub struct MasmComponent { /// /// If unset, it indicates that the component is a library, even if it could be made executable. pub entrypoint: Option, - /// The kernel library to link against - pub kernel: Option, /// The rodata segments of this component keyed by the offset of the segment pub rodata: Vec, /// The address of the start of the global heap @@ -150,55 +147,43 @@ inventory::submit! { impl fmt::Display for MasmComponent { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - use crate::intrinsics::INTRINSICS_MODULE_NAMES; - for module in self.modules.iter() { - // Skip printing the standard library modules and intrinsics modules to focus on the - // user-defined modules and avoid the - // stack overflow error when printing large programs - // https://github.com/0xMiden/miden-formatting/issues/4 - let module_name = module.path().as_str(); - let module_name_trimmed = module_name.trim_start_matches("::"); - if INTRINSICS_MODULE_NAMES.contains(&module_name) { - continue; - } - if module.is_in_namespace(Path::new("std")) - || module_name_trimmed.starts_with("miden::core") - || module_name_trimmed.starts_with("miden::protocol") - { - continue; - } else { - writeln!(f, "# mod {}\n", &module_name)?; - writeln!(f, "{module}")?; - } + writeln!(f, "# mod {}\n", module.path())?; + writeln!(f, "{module}")?; } Ok(()) } } impl MasmComponent { - /// Assemble this component into a Miden package. - pub fn assemble( + pub fn source_inputs( &self, - account_component_metadata_bytes: Option<&[u8]>, + target: &midenc_session::miden_project::Target, session: &Session, - ) -> Result, Report> { - project_support::assemble(self, account_component_metadata_bytes, session) - } + ) -> Result { + let is_executable_target = target.is_executable(); + let emit_test_harness = session.get_flag("test_harness"); + let mut support = Vec::with_capacity(self.modules.len()); + let mut root = None; + for module in self.modules.iter() { + if module.path() == self.root.as_ref() { + root = Some(Box::new(Arc::unwrap_or_clone(module.clone()))); + continue; + } - /// Assemble this component into a Miden package using a pre-populated package registry. - pub fn assemble_with_registry( - &self, - account_component_metadata_bytes: Option<&[u8]>, - session: &Session, - registry: &mut midenc_session::registry::HybridPackageRegistry, - ) -> Result, Report> { - project_support::assemble_with_registry( - self, - account_component_metadata_bytes, - session, - registry, - ) + support.push(Box::new(Arc::unwrap_or_clone(module.clone()))); + } + + if is_executable_target && let Some(entrypoint) = self.entrypoint.as_ref() { + // Our generated main module takes precedence here, so move the root module into support + support.extend(root); + let root = + self.generate_main(entrypoint, emit_test_harness, session.source_manager.clone())?; + return Ok(ProjectSourceInputs { root, support }); + } + + let root = root.expect("components must always have a root module"); + Ok(ProjectSourceInputs { root, support }) } /// Generate an executable module which when run expects the raw data segment data to be @@ -208,7 +193,7 @@ impl MasmComponent { &self, entrypoint: &InvocationTarget, emit_test_harness: bool, - source_manager: Arc, + source_manager: Arc, ) -> Result, Report> { use masm::{Instruction as Inst, Op}; @@ -231,12 +216,14 @@ impl MasmComponent { // Invoke the program entrypoint block.push(Op::Inst(Span::new( span, - Inst::Trace(TraceEvent::FrameStart.as_u32().into()), + Inst::EmitImm(Event::FrameStart.as_event_id().as_felt().into()), ))); invoked.push(masm::Invoke::new(masm::InvokeKind::Exec, entrypoint.clone())); block.push(Op::Inst(Span::new(span, Inst::Exec(entrypoint.clone())))); - block - .push(Op::Inst(Span::new(span, Inst::Trace(TraceEvent::FrameEnd.as_u32().into())))); + block.push(Op::Inst(Span::new( + span, + Inst::EmitImm(Event::FrameEnd.as_event_id().as_felt().into()), + ))); // Truncate the stack to 16 elements on exit let truncate_stack = { @@ -302,11 +289,15 @@ impl MasmComponent { loop_body.push(Op::Inst(Span::new(span, Inst::AdvPush))); loop_body.push(Op::Inst(Span::new(span, Inst::AdvPush))); // => [C, B, A, dest_ptr, inits'] on operand stack - loop_body - .push(Op::Inst(Span::new(span, Inst::Trace(TraceEvent::FrameStart.as_u32().into())))); + loop_body.push(Op::Inst(Span::new( + span, + Inst::EmitImm(Event::FrameStart.as_event_id().as_felt().into()), + ))); loop_body.push(Op::Inst(Span::new(span, Inst::Exec(pipe_words_to_memory)))); - loop_body - .push(Op::Inst(Span::new(span, Inst::Trace(TraceEvent::FrameEnd.as_u32().into())))); + loop_body.push(Op::Inst(Span::new( + span, + Inst::EmitImm(Event::FrameEnd.as_event_id().as_felt().into()), + ))); // Drop C, B, A loop_body.push(Op::Inst(Span::new(span, Inst::DropW))); loop_body.push(Op::Inst(Span::new(span, Inst::DropW))); diff --git a/codegen/masm/src/artifact/project_support.rs b/codegen/masm/src/artifact/project_support.rs index f45603a5c..7c38ccc68 100644 --- a/codegen/masm/src/artifact/project_support.rs +++ b/codegen/masm/src/artifact/project_support.rs @@ -1,10 +1,10 @@ //! Project-assembler support for compiler-generated MASM components. +#![allow(unused)] use alloc::{collections::BTreeMap, string::ToString, sync::Arc, vec::Vec}; use miden_assembly::{ - Assembler, Library, Path, ProjectSourceInputs, ProjectTargetSelector, - library::{LibraryExport, ProcedureExport}, + Assembler, Path, ProjectSourceInputs, ProjectSourceProvider, ProjectTargetSelector, }; use miden_mast_package::{PackageManifest, Section, SectionId}; use midenc_session::{ @@ -13,23 +13,25 @@ use midenc_session::{ }; use super::{MasmComponent, Package, Rodata}; -use crate::{intrinsics::INTRINSICS_MODULE_NAMES, masm}; +use crate::masm; /// Assemble a MASM component through the VM project assembler. +#[cfg(false)] pub(super) fn assemble( component: &MasmComponent, - account_component_metadata_bytes: Option<&[u8]>, session: &Session, + source_providers: Vec>, ) -> Result, Report> { let mut registry = session.package_registry()?; - assemble_with_registry(component, account_component_metadata_bytes, session, &mut registry) + assemble_with_registry(component, session, &mut registry, source_providers) } +#[cfg(false)] pub(super) fn assemble_with_registry( component: &MasmComponent, - account_component_metadata_bytes: Option<&[u8]>, session: &Session, registry: &mut midenc_session::registry::HybridPackageRegistry, + source_providers: Vec>, ) -> Result, Report> { let mut assembler = Assembler::new(session.source_manager.clone()) .with_warnings_as_errors(session.options.diagnostics.warnings.warnings_as_errors()); @@ -42,9 +44,10 @@ pub(super) fn assemble_with_registry( path.as_str().into(), content.clone(), ); - let module = - miden_assembly_syntax::ModuleParser::new(miden_assembly::ast::ModuleKind::Library) - .parse(path, source, session.source_manager.clone())?; + let module = miden_assembly_syntax::ModuleParser::new(Some( + miden_assembly::ast::ModuleKind::Library, + )) + .parse(Some(path.as_path()), source, session.source_manager.clone())?; link_modules.push(module); } assembler.compile_and_statically_link_all(link_modules)?; @@ -75,6 +78,9 @@ pub(super) fn assemble_with_registry( is_executable_target, )?; let mut project_assembler = assembler.for_project(project_package.clone(), registry)?; + for source_provider in source_providers { + project_assembler.with_source_provider(PassthroughSourceProvider::from(source_provider)); + } let selector = if is_executable_target { ProjectTargetSelector::Executable(selected_executable_target_name( @@ -112,7 +118,7 @@ fn selected_executable_target_name<'a>( } /// Prepare the synthetic project target and source inputs used to assemble compiler-generated MASM. -fn prepare_sources( +pub(crate) fn prepare_sources( component: &MasmComponent, assembler: &mut Assembler, emit_test_harness: bool, @@ -158,6 +164,7 @@ fn prepare_sources( } /// Attach serialized account component metadata to the assembled package. +#[cfg(false)] fn attach_account_component_metadata( package: &mut Package, account_component_metadata_bytes: Option<&[u8]>, @@ -170,6 +177,7 @@ fn attach_account_component_metadata( } /// Rewrite library exports to preserve Wasm component-model interface names. +#[cfg(false)] fn normalize_library_exports(package: &mut Package) -> Result<(), Report> { if !package.kind.is_library() { return Ok(()); @@ -185,6 +193,7 @@ fn normalize_library_exports(package: &mut Package) -> Result<(), Report> { } /// Extend the package advice map with the component's rodata segments. +#[cfg(false)] fn extend_rodata_advice_map(package: &mut Package, rodata: &[Rodata]) { if rodata.is_empty() { return; @@ -204,6 +213,7 @@ fn extend_rodata_advice_map(package: &mut Package, rodata: &[Rodata]) { /// /// 2. Assembler using the current module name to generate exports. /// +#[cfg(false)] fn recover_wasm_cm_interfaces(lib: &Library) -> BTreeMap, LibraryExport> { let mut exports = BTreeMap::new(); for export in lib.exports() { @@ -263,6 +273,6 @@ fn recover_wasm_cm_interfaces(lib: &Library) -> BTreeMap, LibraryExpor } /// Return true when the module belongs to the compiler's intrinsics namespace. -fn is_intrinsics_module(module: &miden_assembly::ast::Module) -> bool { +pub(crate) fn is_intrinsics_module(module: &miden_assembly::ast::Module) -> bool { module.path().as_str().trim_start_matches("::").starts_with("intrinsics") } diff --git a/codegen/masm/src/emit/mod.rs b/codegen/masm/src/emit/mod.rs index c918ea113..752a5bdc0 100644 --- a/codegen/masm/src/emit/mod.rs +++ b/codegen/masm/src/emit/mod.rs @@ -102,7 +102,7 @@ use midenc_hir::{Context, Immediate, Operation, SourceSpan, Type, ValueRef}; use super::{Operand, OperandStack}; use crate::{ - TraceEvent, + Event, masm::{self as masm, Op}, }; @@ -279,11 +279,12 @@ impl<'a> OpEmitter<'a> { let module = masm::LibraryPath::new(module_name).unwrap(); let qualified = masm::QualifiedProcedureName::new(module.as_path(), name); let target = masm::InvocationTarget::Path(Span::new(span, qualified.into_inner())); - self.emit(masm::Instruction::Trace(TraceEvent::FrameStart.as_u32().into()), span); - self.emit(masm::Instruction::Nop, span); + self.emit( + masm::Instruction::EmitImm(Event::FrameStart.as_event_id().as_felt().into()), + span, + ); self.emit(masm::Instruction::Exec(target), span); - self.emit(masm::Instruction::Trace(TraceEvent::FrameEnd.as_u32().into()), span); - self.emit(masm::Instruction::Nop, span); + self.emit(masm::Instruction::EmitImm(Event::FrameEnd.as_event_id().as_felt().into()), span); } /// Emit `op` to the current block diff --git a/codegen/masm/src/emit/primop.rs b/codegen/masm/src/emit/primop.rs index 7b53f1b19..ae2029540 100644 --- a/codegen/masm/src/emit/primop.rs +++ b/codegen/masm/src/emit/primop.rs @@ -6,7 +6,7 @@ use midenc_hir::{ }; use super::{OpEmitter, int64, masm}; -use crate::TraceEvent; +use crate::Event; impl OpEmitter<'_> { /// Push the caller procedure hash as a word. @@ -301,8 +301,7 @@ impl OpEmitter<'_> { ); assert_eq!(len.ty(), Type::U32, "expected println length operand to be a u32"); - self.emit(masm::Instruction::Trace(TraceEvent::PrintLn.as_u32().into()), span); - self.emit(masm::Instruction::Nop, span); + self.emit(masm::Instruction::EmitImm(Event::PrintLn.as_event_id().as_felt().into()), span); // Clean up the stack after the debug executor handled printing. self.dropn(2, span); @@ -319,11 +318,12 @@ impl OpEmitter<'_> { ) { self.process_call_signature(&callee, signature, span); - self.emit(masm::Instruction::Trace(TraceEvent::FrameStart.as_u32().into()), span); - self.emit(masm::Instruction::Nop, span); + self.emit( + masm::Instruction::EmitImm(Event::FrameStart.as_event_id().as_felt().into()), + span, + ); self.emit(masm::Instruction::Exec(callee), span); - self.emit(masm::Instruction::Trace(TraceEvent::FrameEnd.as_u32().into()), span); - self.emit(masm::Instruction::Nop, span); + self.emit(masm::Instruction::EmitImm(Event::FrameEnd.as_event_id().as_felt().into()), span); } /// Execute the given procedure in a new context. @@ -337,11 +337,12 @@ impl OpEmitter<'_> { ) { self.process_call_signature(&callee, signature, span); - self.emit(masm::Instruction::Trace(TraceEvent::FrameStart.as_u32().into()), span); - self.emit(masm::Instruction::Nop, span); + self.emit( + masm::Instruction::EmitImm(Event::FrameStart.as_event_id().as_felt().into()), + span, + ); self.emit(masm::Instruction::Call(callee), span); - self.emit(masm::Instruction::Trace(TraceEvent::FrameEnd.as_u32().into()), span); - self.emit(masm::Instruction::Nop, span); + self.emit(masm::Instruction::EmitImm(Event::FrameEnd.as_event_id().as_felt().into()), span); } /// Execute the given kernel procedure as a syscall. @@ -353,11 +354,12 @@ impl OpEmitter<'_> { ) { self.process_call_signature(&callee, signature, span); - self.emit(masm::Instruction::Trace(TraceEvent::FrameStart.as_u32().into()), span); - self.emit(masm::Instruction::Nop, span); + self.emit( + masm::Instruction::EmitImm(Event::FrameStart.as_event_id().as_felt().into()), + span, + ); self.emit(masm::Instruction::SysCall(callee), span); - self.emit(masm::Instruction::Trace(TraceEvent::FrameEnd.as_u32().into()), span); - self.emit(masm::Instruction::Nop, span); + self.emit(masm::Instruction::EmitImm(Event::FrameEnd.as_event_id().as_felt().into()), span); } fn process_call_signature( diff --git a/codegen/masm/src/events.rs b/codegen/masm/src/events.rs index 5a3b58d49..eb726ce04 100644 --- a/codegen/masm/src/events.rs +++ b/codegen/masm/src/events.rs @@ -1,35 +1,28 @@ //! This module contains the set of compiler-emitted event codes, and their explanations -use core::num::NonZeroU32; +use miden_core::events::{EventId, EventName}; -/// This event is emitted via `trace`, and indicates that a procedure call frame is entered -/// -/// The mnemonic here is F = frame, 0 = open -pub const TRACE_FRAME_START: u32 = 0xf0; +/// This event indicates that a procedure call frame is entered +pub const FRAME_START_EVENT: EventName = EventName::new("readonly::miden_debug::frame_start"); -/// This event is emitted via `trace`, and indicates that a procedure call frame is exited -/// -/// The mnemonic here is F = frame, C = close -pub const TRACE_FRAME_END: u32 = 0xfc; +/// This event indicates that a procedure call frame is exited +pub const FRAME_END_EVENT: EventName = EventName::new("readonly::miden_debug::frame_end"); -/// This event is emitted via `trace`, and indicates that a line should be printed. +/// This event indicates that a line should be printed. /// /// The bytes representing the string are expected in memory. The executor reads the start address /// and length from the operand stack. -/// -/// The mnemonic here is ASCII `PRNT`. -pub const TRACE_PRINT_LN: u32 = 0x50_52_4e_54; +pub const PRINT_LN_EVENT: EventName = EventName::new("readonly::miden_debug::println"); -/// A typed wrapper around the raw trace events known to the compiler +/// A typed wrapper around the raw events known to the compiler #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] #[repr(u32)] -pub enum TraceEvent { +pub enum Event { FrameStart, FrameEnd, PrintLn, - AssertionFailed(Option), - Unknown(u32), + Unknown(EventId), } -impl TraceEvent { +impl Event { #[inline(always)] pub fn is_frame_start(&self) -> bool { matches!(self, Self::FrameStart) @@ -40,36 +33,18 @@ impl TraceEvent { matches!(self, Self::FrameEnd) } - pub fn as_u32(self) -> u32 { + pub fn as_event_id(self) -> EventId { match self { - Self::FrameStart => TRACE_FRAME_START, - Self::FrameEnd => TRACE_FRAME_END, - Self::PrintLn => TRACE_PRINT_LN, - Self::AssertionFailed(None) => 0, - Self::AssertionFailed(Some(code)) => code.get(), + Self::FrameStart => FRAME_START_EVENT.to_event_id(), + Self::FrameEnd => FRAME_END_EVENT.to_event_id(), + Self::PrintLn => PRINT_LN_EVENT.to_event_id(), Self::Unknown(event) => event, } } } -impl From for TraceEvent { - fn from(raw: u32) -> Self { - match raw { - TRACE_FRAME_START => Self::FrameStart, - TRACE_FRAME_END => Self::FrameEnd, - TRACE_PRINT_LN => Self::PrintLn, - _ => Self::Unknown(raw), - } - } -} -impl From for u32 { - fn from(event: TraceEvent) -> Self { - match event { - TraceEvent::FrameStart => TRACE_FRAME_START, - TraceEvent::FrameEnd => TRACE_FRAME_END, - TraceEvent::PrintLn => TRACE_PRINT_LN, - TraceEvent::AssertionFailed(None) => 0, - TraceEvent::AssertionFailed(Some(code)) => code.get(), - TraceEvent::Unknown(code) => code, - } + +impl From for EventId { + fn from(event: Event) -> Self { + event.as_event_id() } } diff --git a/codegen/masm/src/intrinsics.rs b/codegen/masm/src/intrinsics.rs index e1c44a535..7d012385e 100644 --- a/codegen/masm/src/intrinsics.rs +++ b/codegen/masm/src/intrinsics.rs @@ -1,74 +1,18 @@ use alloc::sync::Arc; -use miden_assembly::{ - PathBuf as LibraryPath, - ast::{Module, ModuleKind}, -}; -use midenc_session::diagnostics::{PrintDiagnostic, SourceLanguage, SourceManager, Uri}; +use miden_mast_package::Package; +use miden_utils_sync::LazyLock; -pub const I32_INTRINSICS_MODULE_NAME: &str = "::intrinsics::i32"; -pub const I64_INTRINSICS_MODULE_NAME: &str = "::intrinsics::i64"; -pub const I128_INTRINSICS_MODULE_NAME: &str = "::intrinsics::i128"; -pub const MEM_INTRINSICS_MODULE_NAME: &str = "::intrinsics::mem"; -pub const CRYPTO_INTRINSICS_MODULE_NAME: &str = "::intrinsics::crypto"; -pub const ADVICE_INTRINSICS_MODULE_NAME: &str = "::intrinsics::advice"; +const INTRINSICS_PACKAGE_BYTES: &[u8] = + include_bytes!(concat!(env!("OUT_DIR"), "/compiler-intrinsics.masp")); -pub const INTRINSICS_MODULE_NAMES: [&str; 6] = [ - I32_INTRINSICS_MODULE_NAME, - I64_INTRINSICS_MODULE_NAME, - I128_INTRINSICS_MODULE_NAME, - MEM_INTRINSICS_MODULE_NAME, - CRYPTO_INTRINSICS_MODULE_NAME, - ADVICE_INTRINSICS_MODULE_NAME, -]; +static INTRINSICS: LazyLock> = LazyLock::new(|| { + Package::read_from_bytes_trusted(INTRINSICS_PACKAGE_BYTES) + .map(Arc::new) + .expect("failed to read compiler-intrinsics!") +}); -const I32_INTRINSICS: &str = - include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/intrinsics/i32.masm")); -const I64_INTRINSICS: &str = - include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/intrinsics/i64.masm")); -const MEM_INTRINSICS: &str = - include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/intrinsics/mem.masm")); -const ADVICE_INTRINSICS: &str = - include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/intrinsics/advice.masm")); - -/// This is a mapping of intrinsics module name to the raw MASM source for that module -const INTRINSICS: [(&str, &str, &str); 4] = [ - ( - I32_INTRINSICS_MODULE_NAME, - I32_INTRINSICS, - concat!(env!("CARGO_MANIFEST_DIR"), "/intrinsics/i32.masm"), - ), - ( - I64_INTRINSICS_MODULE_NAME, - I64_INTRINSICS, - concat!(env!("CARGO_MANIFEST_DIR"), "/intrinsics/i64.masm"), - ), - ( - MEM_INTRINSICS_MODULE_NAME, - MEM_INTRINSICS, - concat!(env!("CARGO_MANIFEST_DIR"), "/intrinsics/mem.masm"), - ), - ( - ADVICE_INTRINSICS_MODULE_NAME, - ADVICE_INTRINSICS, - concat!(env!("CARGO_MANIFEST_DIR"), "/intrinsics/advice.masm"), - ), -]; - -/// This helper loads the named module from the set of intrinsics modules defined in this crate. -/// -/// Expects the fully-qualified name to be given, e.g. `::intrinsics::mem` -pub fn load>(name: N, source_manager: Arc) -> Option> { - let name = name.as_ref(); - let (name, source, filename) = INTRINSICS.iter().copied().find(|(n, ..)| *n == name)?; - let filename = Uri::new(filename); - let source_file = source_manager.load(SourceLanguage::Masm, filename, source.to_string()); - let path = LibraryPath::new(name).expect("invalid module name"); - match Module::parse(path, ModuleKind::Library, source_file.clone(), source_manager) { - Ok(module) => Some(module), - Err(err) => { - let err = PrintDiagnostic::new(err); - panic!("failed to parse intrinsic module: {err}"); - } - } +/// Load the compiler-intrinsics package for use in assembly +pub fn load() -> Arc { + INTRINSICS.clone() } diff --git a/codegen/masm/src/lib.rs b/codegen/masm/src/lib.rs index 8eea69c4d..ec0a20d1b 100644 --- a/codegen/masm/src/lib.rs +++ b/codegen/masm/src/lib.rs @@ -18,8 +18,7 @@ mod stack; pub mod masm { pub use miden_assembly_syntax::{ - KernelLibrary, Library, Path as LibraryPathRef, PathBuf as LibraryPath, - PathComponent as LibraryPathComponent, + Path as LibraryPathRef, PathBuf as LibraryPath, PathComponent as LibraryPathComponent, ast::*, debuginfo::{SourceSpan, Span, Spanned}, parser::{IntValue, PushValue}, @@ -40,7 +39,7 @@ use midenc_hir::{ pub(crate) use self::lower::HirLowering; pub use self::{ artifact::{MasmComponent, Rodata}, - events::{TRACE_FRAME_END, TRACE_FRAME_START, TRACE_PRINT_LN, TraceEvent}, + events::{Event, FRAME_END_EVENT, FRAME_START_EVENT, PRINT_LN_EVENT}, legalization::{LegalizeForMasm, masm_legalization_target, populate_masm_legalization_target}, lower::{NativePtr, ToMasmComponent}, stack::{Constraint, Operand, OperandStack}, diff --git a/codegen/masm/src/lower/component.rs b/codegen/masm/src/lower/component.rs index b49badb12..50e693461 100644 --- a/codegen/masm/src/lower/component.rs +++ b/codegen/masm/src/lower/component.rs @@ -20,7 +20,7 @@ use midenc_session::diagnostics::{Report, Spanned, WrapErr}; use smallvec::SmallVec; use crate::{ - OperandStack, TraceEvent, + Event, OperandStack, artifact::MasmComponent, emitter::BlockEmitter, linker::{LinkInfo, Linker}, @@ -92,12 +92,6 @@ impl ToMasmComponent for builtin::World { let rodata = data_segments_to_rodata(&link_info)?; - let kernel = if context.session().options.target_requires_protocol() { - Some(miden_protocol::transaction::TransactionKernel::kernel()) - } else { - None - }; - // Compute the first page boundary after the end of the globals table (or reserved memory // if no globals) to use as the start of the dynamic heap when the program is executed let heap_base = core::cmp::max( @@ -112,7 +106,6 @@ impl ToMasmComponent for builtin::World { root, init, entrypoint, - kernel, rodata, heap_base, stack_pointer, @@ -149,7 +142,13 @@ impl ToMasmComponent for builtin::Component { .map_err(Report::msg)?; // Get the library path of the component - let component_path = id.to_library_path(); + let component_path = id + .to_library_path() + .to_absolute() + .map_err(|err| { + Report::msg(format!("unable to canonicalize '{}': {err}", &id.to_library_path())) + })? + .into_owned(); // Get the entrypoint, if specified let entrypoint = match context.session().options.entrypoint.as_deref() { @@ -171,9 +170,7 @@ impl ToMasmComponent for builtin::Component { // 'cargo miden build' to detect the target env, and we default it to 'rollup' let is_wrapper = id.is_synthetic_wrapper(); let path = if is_wrapper { - let mut path = component_path.clone(); - path.push(entry_id.module.as_str()); - path + component_path.join(entry_id.module.as_str()) } else { // We're compiling a Wasm component and the component id is included // in the entrypoint. @@ -193,8 +190,7 @@ impl ToMasmComponent for builtin::Component { let requires_init = link_info.has_globals() || link_info.has_data_segments(); let init = if requires_init { let name = masm::ProcedureName::new("init").unwrap(); - let qualified = - masm::QualifiedProcedureName::new(component_path.as_path().to_absolute(), name); + let qualified = masm::QualifiedProcedureName::new(&component_path, name); Some(masm::InvocationTarget::Path(Span::new( SourceSpan::default(), qualified.into_inner(), @@ -206,18 +202,12 @@ impl ToMasmComponent for builtin::Component { // Define the initial component modules set // // The top-level component module is always defined, but may be empty - let root: Arc = - id.to_library_path().to_absolute().into_owned().into(); - let modules = vec![Arc::new(masm::Module::new(masm::ModuleKind::Library, &root))]; + let root: Arc = component_path.into_boxed_path().into(); + let root_module = Arc::new(masm::Module::new(masm::ModuleKind::Library, &root)); + let modules = vec![root_module]; let rodata = data_segments_to_rodata(&link_info)?; - let kernel = if context.session().options.target_requires_protocol() { - Some(miden_protocol::transaction::TransactionKernel::kernel()) - } else { - None - }; - // Compute the first page boundary after the end of the globals table (or reserved memory // if no globals) to use as the start of the dynamic heap when the program is executed let heap_base = core::cmp::max( @@ -232,7 +222,6 @@ impl ToMasmComponent for builtin::Component { root, init, entrypoint, - kernel, rodata, heap_base, stack_pointer, @@ -290,7 +279,7 @@ struct MasmComponentBuilder<'a> { component: &'a mut MasmComponent, analysis_manager: AnalysisManager, link_info: &'a LinkInfo, - source_manager: Arc, + source_manager: Arc, init_body: Vec, invoked_from_init: BTreeSet, } @@ -319,11 +308,13 @@ impl MasmComponentBuilder<'_> { }; self.init_body.push(Op::Inst(Span::new( span, - Inst::Trace(TraceEvent::FrameStart.as_u32().into()), + Inst::EmitImm(Event::FrameStart.as_event_id().as_felt().into()), ))); self.init_body.push(Op::Inst(Span::new(span, Inst::Exec(heap_init)))); - self.init_body - .push(Op::Inst(Span::new(span, Inst::Trace(TraceEvent::FrameEnd.as_u32().into())))); + self.init_body.push(Op::Inst(Span::new( + span, + Inst::EmitImm(Event::FrameEnd.as_event_id().as_felt().into()), + ))); // Data segment initialization self.emit_data_segment_initialization(); @@ -409,16 +400,29 @@ impl MasmComponentBuilder<'_> { } fn define_module(&mut self, module: &builtin::Module) -> Result<(), Report> { - let module_path = if let Some(id) = self.component.id.as_ref() { - let mut path = id.to_library_path(); - path.push(module.name().as_str()); - path + let module_path = module.path().to_library_path(); + let module_path = module_path.to_absolute().unwrap(); + let trace_target = TraceTarget::category("codegen"); + log::debug!(target: &trace_target, "defining module '{module_path}'"); + /* + let visibility = match *module.get_visibility() { + midenc_hir::Visibility::Public => masm::Visibility::Public, + midenc_hir::Visibility::Internal | midenc_hir::Visibility::Private => { + masm::Visibility::Private + } + }; + */ + let visibility = masm::Visibility::Public; + let module_index = if let Some(rest) = module_path.strip_prefix(&self.component.root) { + self.define_module_tree(rest, Some(0), visibility)? } else { - module.path().to_library_path() + self.define_module_tree(&module_path, None, visibility)? }; - let mut masm_module = Box::new(masm::Module::new(masm::ModuleKind::Library, module_path)); + + let masm_module = Arc::get_mut(&mut self.component.modules[module_index]) + .expect("expected unique reference"); let builder = MasmModuleBuilder { - module: &mut masm_module, + module: masm_module, analysis_manager: self.analysis_manager.nest(module.as_operation_ref()), link_info: self.link_info, source_manager: self.source_manager.clone(), @@ -427,11 +431,74 @@ impl MasmComponentBuilder<'_> { }; builder.build(module)?; - self.component.modules.push(Arc::from(masm_module)); - Ok(()) } + fn define_module_tree( + &mut self, + module_path: &masm::Path, + mut parent: Option, + visibility: masm::Visibility, + ) -> Result { + let trace_target = TraceTarget::category("codegen"); + let mut path = masm::PathBuf::with_capacity(256); + if let Some(parent) = parent { + path = self.component.modules[parent].path().to_path_buf(); + } + let mut components = module_path.components().peekable(); + while let Some(component) = components.next() { + let name = component.unwrap().as_str(); + // Ignore the root component + if name == "::" { + continue; + } + path.push_component(name); + if !path.is_absolute() { + path = path.to_absolute().unwrap().into_owned(); + } + // Use the input visibility for the last module we crate, for parent modules, we must + // specify public visibility so that references to this module are valid. + let visibility = if components.peek().is_none() { + visibility + } else { + masm::Visibility::Public + }; + let module_path = &path; + if let Some(parent_index) = parent { + let parent_module = Arc::get_mut(&mut self.component.modules[parent_index]) + .expect("expected unique reference"); + if parent_module.submodules().iter().any(|sm| sm.name.as_str() == name) { + // Already defined, look up the submodule as the new `parent` + parent = Some( + self.component + .modules + .iter() + .position(|m| m.path() == module_path.as_path()) + .expect( + "submodule was already defined, but not registered with component", + ), + ); + } else { + // Create the submodule + let submodule = + Box::new(masm::Module::new(masm::ModuleKind::Library, module_path)); + let name = masm::Ident::new(submodule.name()).unwrap(); + log::debug!(target: &trace_target, "declaring submodule '{name}' of '{}'", parent_module.path()); + parent_module.declare_submodule(name, visibility)?; + parent = Some(self.component.modules.len()); + self.component.modules.push(Arc::from(submodule)); + } + } else { + log::debug!(target: &trace_target, "declaring module '{module_path}'"); + let module = Box::new(masm::Module::new(masm::ModuleKind::Library, module_path)); + parent = Some(self.component.modules.len()); + self.component.modules.push(Arc::from(module)); + } + } + + Ok(parent.unwrap()) + } + fn define_function(&mut self, function: &builtin::Function) -> Result<(), Report> { let builder = MasmFunctionBuilder::new(function)?; let procedure = builder.build( @@ -506,12 +573,14 @@ impl MasmComponentBuilder<'_> { // [num_words, write_ptr, COM, ..] -> [write_ptr'] self.init_body.push(Op::Inst(Span::new( span, - Inst::Trace(TraceEvent::FrameStart.as_u32().into()), + Inst::EmitImm(Event::FrameStart.as_event_id().as_felt().into()), ))); self.init_body .push(Op::Inst(Span::new(span, Inst::Exec(pipe_preimage_to_memory.clone())))); - self.init_body - .push(Op::Inst(Span::new(span, Inst::Trace(TraceEvent::FrameEnd.as_u32().into())))); + self.init_body.push(Op::Inst(Span::new( + span, + Inst::EmitImm(Event::FrameEnd.as_event_id().as_felt().into()), + ))); // drop write_ptr' self.init_body.push(Op::Inst(Span::new(span, Inst::Drop))); } @@ -522,7 +591,7 @@ struct MasmModuleBuilder<'a> { module: &'a mut masm::Module, analysis_manager: AnalysisManager, link_info: &'a LinkInfo, - source_manager: Arc, + source_manager: Arc, init_body: &'a mut Vec, invoked_from_init: &'a mut BTreeSet, } @@ -898,16 +967,14 @@ fn component_abi_type_expr_from_hir(ty: &Type) -> masm::TypeExpr { /// body contains only DebugVar ops, the assembler will reject it. fn block_has_real_instructions(block: &masm::Block) -> bool { block.iter().any(|op| match op { - masm::Op::Inst(inst) => !matches!( - inst.inner(), - masm::Instruction::Debug(_) - | masm::Instruction::DebugVar(_) - | masm::Instruction::Trace(_) - ), + masm::Op::Inst(inst) => !matches!(inst.inner(), masm::Instruction::DebugVar(_)), masm::Op::If { then_blk, else_blk, .. } => block_has_real_instructions(then_blk) || block_has_real_instructions(else_blk), masm::Op::While { body, .. } => block_has_real_instructions(body), + masm::Op::DoWhile { + body, condition, .. + } => block_has_real_instructions(body) || block_has_real_instructions(condition), masm::Op::Repeat { body, .. } => block_has_real_instructions(body), }) } @@ -972,6 +1039,12 @@ fn patch_debug_var_locals_in_block( } => { patch_debug_var_locals_in_block(while_body, aligned_num_locals, stack_pointer_addr); } + masm::Op::DoWhile { + body, condition, .. + } => { + patch_debug_var_locals_in_block(body, aligned_num_locals, stack_pointer_addr); + patch_debug_var_locals_in_block(condition, aligned_num_locals, stack_pointer_addr); + } masm::Op::Repeat { body: repeat_body, .. } => { diff --git a/codegen/masm/src/lower/lowering.rs b/codegen/masm/src/lower/lowering.rs index 2c4fa851d..69f80277e 100644 --- a/codegen/masm/src/lower/lowering.rs +++ b/codegen/masm/src/lower/lowering.rs @@ -1598,6 +1598,7 @@ const DEBUG_VAR_KILL_SENTINEL: &[u8] = b"\0miden.debug.kill"; fn apply_debug_var_metadata( debug_var: &mut miden_core::operations::DebugVarInfo, var: &midenc_hir::dialects::debuginfo::attributes::Variable, + session: &midenc_session::Session, ) { // Set arg_index if this is a parameter if let Some(arg_index) = var.arg_index { @@ -1606,14 +1607,17 @@ fn apply_debug_var_metadata( // Set source location if let Some(line) = core::num::NonZeroU32::new(var.line) { - use miden_assembly::debuginfo::{ColumnNumber, FileLineCol, LineNumber, Uri}; + use miden_assembly::debuginfo::{ColumnNumber, FileLineCol, LineNumber, Location, Uri}; let uri = Uri::new(var.file.as_str()); let file_line_col = FileLineCol::new( - uri, + uri.clone(), LineNumber::new(line.get()).unwrap_or_default(), var.column.and_then(ColumnNumber::new).unwrap_or_default(), ); - debug_var.set_location(file_line_col); + if let Some(span) = session.source_manager.file_line_col_to_span(file_line_col) { + let loc = Location::new(uri, span.start(), span.end()); + debug_var.set_location(loc); + } } } @@ -1667,11 +1671,14 @@ impl HirLowering for debuginfo::DebugValue { }; let mut debug_var = DebugVarInfo::new(var.name.to_string(), value_location); - apply_debug_var_metadata(&mut debug_var, var.as_value()); + let session = self.as_operation().context().session(); + apply_debug_var_metadata(&mut debug_var, var.as_value(), session); - // Emit the instruction + // Emit the instruction followed by a `nop` so that the debug var instruction is never the + // last instruction in a MASM block let inst = masm::Instruction::DebugVar(debug_var); emitter.emit_op(masm::Op::Inst(Span::new(self.span(), inst))); + emitter.emit_op(masm::Op::Inst(Span::new(self.span(), masm::Instruction::Nop))); Ok(()) } @@ -1699,10 +1706,14 @@ impl HirLowering for debuginfo::DebugDeclare { }; let mut debug_var = DebugVarInfo::new(var.name.to_string(), value_location); - apply_debug_var_metadata(&mut debug_var, var.as_value()); + let session = self.as_operation().context().session(); + apply_debug_var_metadata(&mut debug_var, var.as_value(), session); + // Emit the instruction followed by a `nop` so that the debug var instruction is never the + // last instruction in a MASM block let inst = masm::Instruction::DebugVar(debug_var); emitter.emit_op(masm::Op::Inst(Span::new(self.span(), inst))); + emitter.emit_op(masm::Op::Inst(Span::new(self.span(), masm::Instruction::Nop))); Ok(()) } @@ -1729,10 +1740,14 @@ impl HirLowering for debuginfo::DebugKill { var.name.to_string(), DebugVarLocation::Expression(DEBUG_VAR_KILL_SENTINEL.to_vec()), ); - apply_debug_var_metadata(&mut debug_var, var.as_value()); + let session = self.as_operation().context().session(); + apply_debug_var_metadata(&mut debug_var, var.as_value(), session); + // Emit the instruction followed by a `nop` so that the debug var instruction is never the + // last instruction in a MASM block let inst = masm::Instruction::DebugVar(debug_var); emitter.emit_op(masm::Op::Inst(Span::new(self.span(), inst))); + emitter.emit_op(masm::Op::Inst(Span::new(self.span(), masm::Instruction::Nop))); Ok(()) } diff --git a/examples/auth-component-no-auth/Cargo.lock b/examples/auth-component-no-auth/Cargo.lock index ba168c71f..e6a5018d3 100644 --- a/examples/auth-component-no-auth/Cargo.lock +++ b/examples/auth-component-no-auth/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "auth-component-no-auth" version = "0.1.0" @@ -113,9 +104,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -129,30 +120,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -176,16 +143,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -214,39 +181,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -255,9 +228,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -266,13 +239,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/examples/auth-component-no-auth/miden-project.toml b/examples/auth-component-no-auth/miden-project.toml index 7846258c2..fa4d20685 100644 --- a/examples/auth-component-no-auth/miden-project.toml +++ b/examples/auth-component-no-auth/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:auth-component-no-auth/auth-component@0.1.0" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/examples/auth-component-rpo-falcon512/Cargo.lock b/examples/auth-component-rpo-falcon512/Cargo.lock index 50a8871bb..e4bcfcbd3 100644 --- a/examples/auth-component-rpo-falcon512/Cargo.lock +++ b/examples/auth-component-rpo-falcon512/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "auth-component-rpo-falcon512" version = "0.1.0" @@ -113,9 +104,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -129,30 +120,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -176,16 +143,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -214,39 +181,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -255,9 +228,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -266,13 +239,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/examples/auth-component-rpo-falcon512/miden-project.toml b/examples/auth-component-rpo-falcon512/miden-project.toml index f06549665..3d44b5b6f 100644 --- a/examples/auth-component-rpo-falcon512/miden-project.toml +++ b/examples/auth-component-rpo-falcon512/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:auth-component-rpo-falcon512/auth-component@0.1.0" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/examples/basic-wallet-tx-script/miden-project.toml b/examples/basic-wallet-tx-script/miden-project.toml index 786526c6f..851fcf5a8 100644 --- a/examples/basic-wallet-tx-script/miden-project.toml +++ b/examples/basic-wallet-tx-script/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "tx-script" namespace = "miden:base/transaction-script@1.0.0" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/examples/basic-wallet/Cargo.lock b/examples/basic-wallet/Cargo.lock index 4916c49d0..e5101eea1 100644 --- a/examples/basic-wallet/Cargo.lock +++ b/examples/basic-wallet/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -129,30 +120,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -176,16 +143,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -214,39 +181,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -255,9 +228,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -266,13 +239,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/examples/basic-wallet/miden-project.toml b/examples/basic-wallet/miden-project.toml index 37efac581..69fadcf5f 100644 --- a/examples/basic-wallet/miden-project.toml +++ b/examples/basic-wallet/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:basic-wallet/basic-wallet@0.1.0" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/examples/counter-contract/Cargo.lock b/examples/counter-contract/Cargo.lock index 2852fda71..583b97048 100644 --- a/examples/counter-contract/Cargo.lock +++ b/examples/counter-contract/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -266,13 +239,10 @@ dependencies = [ ] [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/examples/counter-contract/miden-project.toml b/examples/counter-contract/miden-project.toml index af48ef772..0d6405e98 100644 --- a/examples/counter-contract/miden-project.toml +++ b/examples/counter-contract/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:counter-contract/counter-contract@0.1.0" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/examples/counter-note/Cargo.lock b/examples/counter-note/Cargo.lock index 989522f12..dc2afbf58 100644 --- a/examples/counter-note/Cargo.lock +++ b/examples/counter-note/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -266,13 +239,10 @@ dependencies = [ ] [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -841,6 +795,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.18" @@ -889,61 +852,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +953,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +962,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "96eb86fc5b2954ccc81074698ab704626dc814c0e15c3f0252f1df0e2799bc6f" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +973,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "f63c24153870bb329d2dd25f43b731d65ebc0c4cb62be77c344145cf45fb7d7a" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +987,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "6dac28a3d1b0a39e90ef7dbdbe59cabfc9ff287ad29567f7180ccc6c52cfe541" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +1004,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "6f2aade47c6c4ddd97f3186b65b62086fc57a642e3a755cf6733e2135cf9c483" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1023,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49d1941d835598aad650297259566b87340bd9f3d02fb2cea5c17a8228412538" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1074,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "b20fb1d59681091b56748e27125910fdc487ea11767364fb4ecc2430fbd99dea" dependencies = [ "derive_more", "log", @@ -1144,23 +1086,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "54d39f7d3365f9ce4215fcebd4b3d2534c47de35dc6f3ba5e74ad4c031c782d0" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1111,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1125,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-goldilocks 0.6.2", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1152,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1162,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "09153b2db5b0e0e2d1dc18dc72dafd4993568ff39cf9d385222cc48e57487613" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1185,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.2", + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", + "p3-util 0.6.2", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1221,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1245,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.2", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-util 0.6.2", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1282,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "f6f409600cc51231eb3ef74518c0e1001af04ee35739ff3ffccd6b4de8d5d337" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1332,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "1130162ca3551546a9f537d4087dac6bebc918eb72e3d21c6f5155cf6527b09b" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1348,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "6d2b83d82a5d0af50b1b87948164f8d65998a33ba461335ed4fb7faceffab000" dependencies = [ - "itertools", + "itertools 0.14.0", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1367,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "52cd061e3a707aa485c191f8430adc4a3936a31fb423aaee6d800c89b9e08c04" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1384,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1398,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1429,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.2", + "p3-field 0.6.2", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.2", + "p3-symmetric 0.6.2", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "d171f3a6a5c84b2334e16bf47c162cab9ba05ac59cadc362ae219fb3cff09ca9" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1485,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "3fb1931be8e09d55e8a3a0549771470ce88e2c2371b1d2420ec856c552d21d68" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1496,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "8dd9b306656509718fd1f4b01e717889e6960f5cb4ffdef958ff40eb641592ab" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1508,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "7a239c1d857f762475c972dea60482d439e93778de6cced258e2620158276bac" dependencies = [ "lock_api", "loom", @@ -1538,15 +1520,15 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "e748fcfd108cfa2e165a728639b0485c9426efc1a44b9c79cacf5c933d6f058a" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", ] @@ -1561,33 +1543,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1597,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1653,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1661,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "6bf35abc9744a71822d6c9a95243f549986941238a52ca412631f0d2e620c1d9" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.2", + "p3-matrix 0.6.2", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "e48cf8a90522a690e1e99bedafcbea39a5708f4a8cf597e8007d192260709735" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", ] [[package]] @@ -1737,11 +1687,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be15c94c45b1c8cb343ba65675855c013e8dd88dd5cf55b8598e5d40e8f84de" +dependencies = [ + "p3-field 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-monty-31 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "tracing", ] @@ -1751,25 +1715,56 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ - "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a8476394bf799ab9d70e861a9659700bb0bf14d7bc9303311a52cf1c378986" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ - "itertools", + "itertools 0.14.0", + "num-bigint", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e879e5f44a485a949c06274c4b17e33c6e85287afb8e6ef162011a60b39f7c99" +dependencies = [ + "itertools 0.15.0", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", "paste", "rand 0.10.2", "serde", @@ -1783,27 +1778,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", ] +[[package]] +name = "p3-goldilocks" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efb05a6dbade1c97eb99e5d1e719b274d2f9d47096dcb29bf2c2f389394fab49" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-poseidon1 0.6.2", + "p3-poseidon2 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", +] + [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "4376e63b8a4c0ec8e8c8000659d9a09cddca95cfb3b948719585d9e2a3ade224" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "tiny-keccak", ] @@ -1813,10 +1829,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ - "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b721bbbae4ca8c0133cf330d5a73deef8663e0706550719874a0ec0ddb5540" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1859,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f648dac3a8af4706cfd110fc5a8d3a10237a747e4e62322d281df826978d0d3c" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5135a277e008c77700ca790abe797bdaa66c36f7c2717d839c6ab1b320ebd2b6" +dependencies = [ + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", ] @@ -1847,17 +1897,17 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ - "itertools", + "itertools 0.14.0", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1915,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c9e3c84a80a7ed5eb566486c7fedd0a8f55299187371aed9189089d8e89d55" +dependencies = [ + "itertools 0.15.0", + "num-bigint", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-mds 0.6.2", + "p3-poseidon1 0.6.2", + "p3-poseidon2 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff7da7181e42690f30009bfea6f0d4677d54e4a35f867ab14b7c970d9e93db7" +dependencies = [ + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-symmetric 0.6.2", "rand 0.10.2", ] @@ -1882,10 +1968,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03f0f8a8631454315502f58c6e299ba38e3ec5f71a4cd65abdcafdb3e2b58605" +dependencies = [ + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", ] @@ -1895,9 +1994,21 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ - "itertools", - "p3-field", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab7e700435824b43b0bf59191f862da259eb5b30f6bac13715c4c53aaaf51fd0" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-util 0.6.2", "serde", ] @@ -1911,6 +2022,15 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284186adf438d2fa2615ca06af661db80bce861a33653f8e510f70edf0d03d6b" +dependencies = [ + "serde", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2061,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2074,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2084,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2116,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2126,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2181,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2228,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2238,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2254,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2278,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2347,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2408,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2467,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2531,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2580,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2621,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2695,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2929,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2958,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2977,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3074,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5d39d1a984eb7ae37afa348f058216d62a6d5f71640f4113a8114386c2a812a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3205,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/examples/counter-note/miden-project.toml b/examples/counter-note/miden-project.toml index 50c2c264b..cd38ce615 100644 --- a/examples/counter-note/miden-project.toml +++ b/examples/counter-note/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "note" namespace = "miden:counter-note/miden-counter-note@0.1.0" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/examples/p2id-note/miden-project.toml b/examples/p2id-note/miden-project.toml index 92cecf6f4..184a72f5a 100644 --- a/examples/p2id-note/miden-project.toml +++ b/examples/p2id-note/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "note" namespace = "miden:p2id/miden-p2id@0.1.0" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/examples/p2ide-note/miden-project.toml b/examples/p2ide-note/miden-project.toml index 63b1ae273..1415632f9 100644 --- a/examples/p2ide-note/miden-project.toml +++ b/examples/p2ide-note/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "note" namespace = "miden:p2ide/miden-p2ide@0.1.0" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/examples/storage-example/Cargo.lock b/examples/storage-example/Cargo.lock index 6c1a77c97..7ae7b7578 100644 --- a/examples/storage-example/Cargo.lock +++ b/examples/storage-example/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -259,13 +232,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -315,35 +285,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -396,9 +378,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -427,14 +409,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -445,9 +427,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -455,13 +437,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -469,14 +452,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -489,33 +473,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -558,19 +534,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -578,21 +554,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -669,7 +636,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -687,30 +653,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -718,11 +660,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -732,8 +672,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -744,12 +687,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -770,22 +713,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -812,11 +766,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -882,61 +836,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1013,7 +937,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1022,9 +946,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1033,14 +957,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1048,9 +971,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1065,14 +988,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1086,6 +1007,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1125,9 +1058,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1137,23 +1070,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1162,9 +1095,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1176,25 +1109,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1205,9 +1136,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1215,9 +1146,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1238,12 +1169,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1255,7 +1205,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1279,34 +1229,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1315,10 +1266,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1364,9 +1316,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1380,14 +1332,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1398,9 +1351,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1415,13 +1368,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1429,16 +1382,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1449,44 +1413,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1495,11 +1469,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1507,9 +1480,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1519,9 +1492,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1531,17 +1504,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1554,33 +1528,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1623,17 +1582,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1690,12 +1638,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1704,24 +1646,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1730,11 +1672,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1745,14 +1701,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1761,8 +1732,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1776,14 +1763,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1791,12 +1798,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1807,9 +1814,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1821,16 +1843,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1842,15 +1883,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1858,14 +1899,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1875,10 +1952,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1889,8 +1979,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1904,6 +2006,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1934,23 +2046,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1960,9 +2059,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1970,12 +2069,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2003,12 +2101,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2019,6 +2111,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2048,7 +2166,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2095,7 +2213,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2105,6 +2223,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2119,12 +2239,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2142,15 +2263,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2220,12 +2332,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2281,14 +2393,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2340,6 +2452,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2393,25 +2516,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2431,26 +2565,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2484,16 +2606,31 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] +[[package]] +name = "sponge-cursor" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" + [[package]] name = "storage-example" version = "0.1.0" @@ -2507,18 +2644,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" -[[package]] -name = "string_cache" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] - [[package]] name = "strip-ansi-escapes" version = "0.2.1" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/examples/storage-example/miden-project.toml b/examples/storage-example/miden-project.toml index 9c4e0fd21..f7b71f222 100644 --- a/examples/storage-example/miden-project.toml +++ b/examples/storage-example/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:storage-example/foo@1.0.0" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/frontend/masm/src/infer.rs b/frontend/masm/src/infer.rs index 4583cda4d..f24ea8c13 100644 --- a/frontend/masm/src/infer.rs +++ b/frontend/masm/src/infer.rs @@ -1,11 +1,12 @@ use std::{cell::RefCell, ops::Range, rc::Rc, sync::Arc}; +use miden_assembly::{ + GlobalItemIndex, + linker::{Linker, SymbolResolutionContext}, +}; use miden_assembly_syntax::{ - ast::{ - self, Block, Immediate, Instruction, InvocationTarget, Module, Op, Procedure, - SymbolResolution, - }, - debuginfo::{SourceManager, SourceSpan, Span, Spanned}, + ast::{Block, Immediate, Instruction, InvocationTarget, Op, Procedure, SymbolResolution}, + debuginfo::{SourceManager, SourceSpan}, parser::{IntValue, PushValue, WordValue}, }; use midenc_hir::{ @@ -24,12 +25,13 @@ use crate::{ /// Infer a [Signature] for `procedure`, using `signatures` for inferring the stack effects of /// procedure invocations in its body. Signatures are keyed by absolute MASM procedure path. pub(crate) fn infer_signature( - context: &Rc, - module: &Module, + gid: GlobalItemIndex, procedure: &Procedure, - signatures: &FxHashMap, Signature>, + context: &Rc, + linker: &Linker, + signatures: &FxHashMap, ) -> Result { - let mut state = InferState::new(context, module, signatures); + let mut state = InferState::new(gid, context, linker, signatures); state.infer_block(procedure.body())?; let params = state.inputs.iter().map(AbstractValue::ty_or_felt); @@ -136,22 +138,25 @@ struct InferState<'a> { stack: Vec, inputs: Vec, current_span: SourceSpan, - module: &'a Module, + item: GlobalItemIndex, + linker: &'a Linker, source_manager: Arc, - signatures: &'a FxHashMap, Signature>, + signatures: &'a FxHashMap, } impl<'a> InferState<'a> { fn new( + item: GlobalItemIndex, context: &Rc, - module: &'a Module, - signatures: &'a FxHashMap, Signature>, + linker: &'a Linker, + signatures: &'a FxHashMap, ) -> Self { Self { stack: Vec::new(), inputs: Vec::new(), current_span: SourceSpan::UNKNOWN, - module, + item, + linker, source_manager: context.session().source_manager.clone(), signatures, } @@ -162,7 +167,8 @@ impl<'a> InferState<'a> { stack: self.stack.clone(), inputs: Vec::new(), current_span: self.current_span, - module: self.module, + item: self.item, + linker: self.linker, source_manager: self.source_manager.clone(), signatures: self.signatures, } @@ -177,6 +183,11 @@ impl<'a> InferState<'a> { then_blk, else_blk, } => self.infer_if(then_blk, else_blk, *span)?, + Op::DoWhile { + span, + body, + condition, + } => self.infer_do_while(body, condition, *span)?, Op::While { span, body } => self.infer_while(body, *span)?, Op::Repeat { count, body, .. } => { let count = immediate_u32(count)?; @@ -602,7 +613,7 @@ impl<'a> InferState<'a> { EvalCircuit => self.constrain_top_n(3, Type::Felt, span), LogPrecompile => self.constrain_top_n(12, Type::Felt, span), Exec(target) | Call(target) | SysCall(target) => self.invoke(target, span), - Debug(_) | DebugVar(_) | Trace(_) => Ok(()), + DebugVar(_) => Ok(()), _ => unsupported_instruction(inst, span), }; self.current_span = previous_span; @@ -638,6 +649,15 @@ impl<'a> InferState<'a> { Ok(()) } + fn infer_do_while( + &mut self, + _body: &Block, + _condition: &Block, + _span: SourceSpan, + ) -> Result<()> { + todo!() + } + fn infer_while(&mut self, body: &Block, span: SourceSpan) -> Result<()> { self.pop_with_type(Type::I1, span)?; let base_stack = self.stack.clone(); @@ -797,14 +817,22 @@ impl<'a> InferState<'a> { } fn invoke(&mut self, target: &InvocationTarget, span: SourceSpan) -> Result<()> { - let key = resolve_invocation_path(self.module, target, self.source_manager.clone())?; - let signature = self.signatures.get(&key).ok_or_else(|| { - Report::msg(format!( - "signature inference could not resolve external callee '{key}' at {span:?}; \ - signature metadata is missing{}", - signature_metadata_hint(self.signatures) - )) - })?; + let context = SymbolResolutionContext { + span, + module: self.item.module, + kind: None, + }; + let signature = match self.linker.resolve_invoke_target(&context, target)? { + SymbolResolution::Exact { gid, path } => { + self.signatures.get(&gid).ok_or_else(|| { + Report::msg(format!( + "signature inference could not resolve external callee '{path}' at \ + {span:?}; signature metadata is missing", + )) + })? + } + _ => return Err(Report::msg(format!("could not resolve callee '{target}'"))), + }; for param in signature.params() { self.pop_with_type(param.ty.clone(), span)?; @@ -1052,86 +1080,6 @@ fn masm_scalar_rank(ty: &Type) -> Option { } } -fn resolve_invocation_path( - module: &Module, - target: &InvocationTarget, - source_manager: Arc, -) -> Result> { - match target { - InvocationTarget::Symbol(name) => { - match module.resolve(Span::new(name.span(), name.as_str()), source_manager) { - Ok(SymbolResolution::Local(index)) => { - let item = &module[index.into_inner()]; - Ok(Arc::from(module.path().join(item.name()).to_absolute().into_owned())) - } - Ok(SymbolResolution::External(path)) => Ok(normalize_path(path.inner().clone())), - Ok(SymbolResolution::Exact { path, .. }) => { - Ok(normalize_path(path.inner().clone())) - } - Ok(SymbolResolution::Module { .. }) => Err(Report::msg(format!( - "signature inference target '{name}' resolves to a module" - ))), - Ok(SymbolResolution::MastRoot(_)) => Err(Report::msg( - "signature inference does not support MAST root invoke targets", - )), - Err(err) => Err(Report::msg(format!( - "signature inference could not resolve target '{name}': {err}" - ))), - } - } - InvocationTarget::Path(path) => { - match module.resolve_path(path.as_deref(), source_manager) { - Ok(SymbolResolution::Local(index)) => { - let item = &module[index.into_inner()]; - Ok(Arc::from(module.path().join(item.name()).to_absolute().into_owned())) - } - Ok(SymbolResolution::External(path)) => Ok(normalize_path(path.inner().clone())), - Ok(SymbolResolution::Exact { path, .. }) => { - Ok(normalize_path(path.inner().clone())) - } - Ok(SymbolResolution::Module { .. }) => Err(Report::msg(format!( - "signature inference target '{}' resolves to a module", - path.inner() - ))), - Ok(SymbolResolution::MastRoot(_)) => Err(Report::msg( - "signature inference does not support MAST root invoke targets", - )), - Err(err) => Err(Report::msg(format!( - "signature inference could not resolve target '{}': {err}", - path.inner() - ))), - } - } - InvocationTarget::MastRoot(_) => { - Err(Report::msg("signature inference does not support MAST root invoke targets")) - } - } -} - -fn normalize_path(path: Arc) -> Arc { - if path.is_absolute() { - path - } else { - path.to_absolute().into() - } -} - -fn signature_metadata_hint(signatures: &FxHashMap, Signature>) -> String { - if signatures.is_empty() { - return "; no signature metadata is available".to_string(); - } - - let mut paths = signatures.keys().map(|path| path.as_str()).collect::>(); - paths.sort(); - let omitted = paths.len().saturating_sub(8); - paths.truncate(8); - let mut hint = format!("; available signatures: {}", paths.join(", ")); - if omitted > 0 { - hint.push_str(&format!(" (+{omitted} more)")); - } - hint -} - fn merge_branch_inputs( lhs: &[AbstractValue], rhs: &[AbstractValue], diff --git a/frontend/masm/src/lib.rs b/frontend/masm/src/lib.rs index 6281ff004..5e176fa43 100644 --- a/frontend/masm/src/lib.rs +++ b/frontend/masm/src/lib.rs @@ -5,7 +5,7 @@ mod infer; mod lift; pub mod project; mod semantics; -mod signatures; +//mod signatures; mod stack; #[cfg(test)] mod tests; @@ -14,13 +14,15 @@ use std::{collections::BTreeMap, path::Path, rc::Rc, sync::Arc}; use miden_assembly::ProjectSourceInputs; use miden_assembly_syntax::{ - Parse, ParseOptions, - ast::{self, Module, ModuleKind}, - debuginfo::{SourceLanguage, SourceManager, SourceManagerExt, Uri}, + ast::{self, Module}, + debuginfo::{SourceLanguage, SourceManager, Uri}, + parser::read_modules_from_root, }; use miden_project::Project; use midenc_hir::{Context, FunctionType, Report, Type, dialects::builtin}; +use self::project::ExternalMetadata; + /// Result type used by the MASM disassembler. pub type Result = core::result::Result; @@ -67,9 +69,14 @@ pub fn disassemble_file( context: Rc, ) -> Result { let path = path.as_ref(); - let module_path = masm_module_path_from_file(path)?; - let module = parse_file_with_module_path(path, &module_path, context.clone())?; - lift::lift_single_module(&module, config, context) + let source_manager = context.source_manager(); + let warnings_as_errors = context.session().options.diagnostics.warnings.warnings_as_errors(); + let (root, support) = + read_modules_from_root(path, None, None, source_manager, warnings_as_errors)?; + + let target = + project::ProjectTargetInput::new(ProjectSourceInputs { root, support }, Default::default()); + lift::lift_project_target(target, config, context) } /// Disassemble a MASM file into an HIR world, using externally-provided procedure signatures for @@ -81,28 +88,18 @@ pub fn disassemble_file_with_external_signatures( context: Rc, ) -> Result { let path = path.as_ref(); - let module_path = masm_module_path_from_file(path)?; - disassemble_file_with_module_path_and_external_signatures( - path, - module_path, - config, - external_signatures, - &ExternalTypeMap::new(), - context, - ) -} - -fn disassemble_file_with_module_path_and_external_signatures( - path: impl AsRef, - module_path: impl AsRef, - config: &DisassemblerConfig, - external_signatures: &ExternalSignatureMap, - external_types: &ExternalTypeMap, - context: Rc, -) -> Result { - let path = path.as_ref(); - let module = parse_file_with_module_path(path, module_path, context.clone())?; - lift::lift_module(&module, config, external_signatures, external_types, context) + let source_manager = context.source_manager(); + let warnings_as_errors = context.session().options.diagnostics.warnings.warnings_as_errors(); + let (root, support) = + read_modules_from_root(path, None, None, source_manager, warnings_as_errors)?; + let target = project::ProjectTargetInput::new( + ProjectSourceInputs { root, support }, + ExternalMetadata { + signatures: external_signatures.clone(), + ..Default::default() + }, + ); + lift::lift_project_target(target, config, context) } /// Disassemble a MASM source string into an HIR world. @@ -112,8 +109,15 @@ pub fn disassemble_source( config: &DisassemblerConfig, context: Rc, ) -> Result { - let module = parse_source_with_module_path(source, module_path, context.clone())?; - lift::lift_single_module(&module, config, context) + let root = parse_source_with_module_path(source, module_path, context.clone())?; + let target = project::ProjectTargetInput::new( + ProjectSourceInputs { + root, + support: Default::default(), + }, + ExternalMetadata::default(), + ); + lift::lift_project_target(target, config, context) } /// Disassemble a MASM source string into an HIR world, using externally-provided procedure @@ -125,8 +129,18 @@ pub fn disassemble_source_with_external_signatures( external_signatures: &ExternalSignatureMap, context: Rc, ) -> Result { - let module = parse_source_with_module_path(source, module_path, context.clone())?; - lift::lift_module(&module, config, external_signatures, &ExternalTypeMap::new(), context) + let root = parse_source_with_module_path(source, module_path, context.clone())?; + let target = project::ProjectTargetInput::new( + ProjectSourceInputs { + root, + support: Default::default(), + }, + ExternalMetadata { + signatures: external_signatures.clone(), + ..Default::default() + }, + ); + lift::lift_project_target(target, config, context) } /// Disassemble a target from a `miden-project.toml` package manifest. @@ -181,24 +195,18 @@ pub fn disassemble_project_target_with_dependency_graph( /// Disassemble a parsed MASM AST module into HIR. pub fn disassemble_module( - module: &Module, + root: Box, config: &DisassemblerConfig, context: Rc, ) -> Result { - lift::lift_single_module(module, config, context) -} - -fn parse_file_with_module_path( - path: &Path, - module_path: impl AsRef, - context: Rc, -) -> Result> { - let source_manager = context.session().source_manager.clone(); - let source_file = source_manager.load_file(path).map_err(|err| { - Report::msg(format!("failed to load MASM source '{}': {err}", path.display())) - })?; - source_file - .parse_with_options(source_manager, ParseOptions::new(ModuleKind::Library, module_path)) + let target = project::ProjectTargetInput::new( + ProjectSourceInputs { + root, + support: Default::default(), + }, + ExternalMetadata::default(), + ); + lift::lift_project_target(target, config, context) } fn parse_source_with_module_path( @@ -209,14 +217,9 @@ fn parse_source_with_module_path( let source_manager = context.session().source_manager.clone(); let uri = Uri::from(module_path.as_ref().as_str().to_string().into_boxed_str()); let source_file = source_manager.load(SourceLanguage::Masm, uri, source.into()); - source_file - .parse_with_options(source_manager, ParseOptions::new(ModuleKind::Library, module_path)) -} - -fn masm_module_path_from_file(path: &Path) -> Result { - let stem = path.file_stem().and_then(|stem| stem.to_str()).ok_or_else(|| { - Report::msg(format!("failed to derive MASM module name from '{}'", path.display())) - })?; - stem.parse::() - .map_err(|err| Report::msg(format!("invalid MASM module path '{}': {err}", stem))) + miden_assembly_syntax::ModuleParser::new(None).parse( + Some(module_path.as_ref()), + source_file, + source_manager, + ) } diff --git a/frontend/masm/src/lift.rs b/frontend/masm/src/lift.rs index 9fe9d0342..669d7eba0 100644 --- a/frontend/masm/src/lift.rs +++ b/frontend/masm/src/lift.rs @@ -1,30 +1,32 @@ -use std::{ - collections::{BTreeMap, BTreeSet}, - rc::Rc, - sync::Arc, -}; +use std::{collections::BTreeMap, rc::Rc, sync::Arc}; +use miden_assembly::{ + GlobalItemIndex, ModuleIndex, ProjectSourceInputs, + linker::{LinkLibrary, Linker, SymbolItem, SymbolResolutionContext}, + module::ItemInfo, +}; use miden_assembly_syntax::{ Felt, ast::{ - self, Block, Export, Immediate, Instruction, InvocationTarget, Module, Op, Procedure, + self, Block, Immediate, Instruction, InvocationTarget, Module, Op, Procedure, SymbolResolution, }, - debuginfo::{SourceSpan, Span, Spanned}, + debuginfo::{SourceSpan, Spanned}, parser::{IntValue, PushValue}, }; -use miden_core_lib::CoreLibrary; use midenc_dialect_arith::ArithOpBuilder; use midenc_dialect_cf::ControlFlowOpBuilder; use midenc_dialect_hir::HirOpBuilder; use midenc_dialect_scf::StructuredControlFlowOpBuilder; use midenc_hir::{ - AddressSpace, BlockRef, Builder, BuilderExt, CompactString, Context, Ident, Op as HirOp, - OpBuilder, OperationRef, PointerType, Report, SymbolPath, Type, ValueRef, Visibility, + AddressSpace, BlockRef, Builder, BuilderExt, CompactString, Context, FxHashSet, Ident, + Op as HirOp, OpBuilder, OperationRef, PointerType, Report, SymbolPath, Type, ValueRef, + Visibility, dialects::builtin::{ BuiltinOpBuilder, FunctionBuilder, FunctionRef, ModuleBuilder, WorldBuilder, attributes::{LocalVariable, Signature}, }, + formatter::DisplayValues, }; use rustc_hash::FxHashMap; @@ -33,68 +35,84 @@ use crate::{ events::{system_event_id, system_event_read_count}, infer, project, semantics::{self, InstructionSemantics}, - signatures, stack as masm_stack, + stack as masm_stack, }; -/// Lift a standalone MASM module to HIR, allowing only local references and referenced -/// `miden::core` declarations. -pub(crate) fn lift_single_module( - module: &Module, - config: &DisassemblerConfig, - context: Rc, -) -> Result { - let (external_signatures, external_types) = - collect_referenced_core_metadata([module], &context)?; - lift_module(module, config, &external_signatures, &external_types, context) -} - -/// Lift the Miden Assembly `module` to HIR, using the provided configuration and explicit external -/// metadata. This remains as a compatibility path for tests/embedders which already have external -/// contracts; project disassembly should use [`lift_project_target`]. -pub(crate) fn lift_module( - module: &Module, - config: &DisassemblerConfig, - external_signatures: &ExternalSignatureMap, - external_types: &ExternalTypeMap, - context: Rc, -) -> Result { - lift_modules(module, [module], config, external_signatures, external_types, context) -} - pub(crate) fn lift_project_target( target: project::ProjectTargetInput, config: &DisassemblerConfig, context: Rc, ) -> Result { - let mut modules = - Vec::with_capacity(1 + target.sources.support.len() + target.dependency_modules.len()); - modules.push(target.sources.root.as_ref()); - modules.extend(target.sources.support.iter().map(Box::as_ref)); - modules.extend(target.dependency_modules.iter().map(Box::as_ref)); + let project::ProjectTargetInput { + sources, + dependency_modules, + external_signatures, + external_types, + } = target; + let ProjectSourceInputs { root, support } = sources; lift_modules( - target.sources.root.as_ref(), - modules, + root, + support, + dependency_modules, config, - &target.external_signatures, - &target.external_types, + &external_signatures, + &external_types, context, ) } -fn lift_modules<'a>( - root_module: &'a Module, - modules: impl IntoIterator, +#[allow(clippy::vec_box)] +fn lift_modules( + root: Box, + support: Vec>, + extra_modules: Vec>, config: &DisassemblerConfig, - external_signatures: &ExternalSignatureMap, - external_types: &ExternalTypeMap, + _external_signatures: &ExternalSignatureMap, + _external_types: &ExternalTypeMap, context: Rc, ) -> Result { - let modules = modules.into_iter().collect::>(); - let mut registry = ModuleRegistry::new(context.clone()); - registry.register_source_modules(&modules)?; - registry.collect_types(&modules, external_types)?; - registry.collect_declared_signatures(&modules, external_signatures)?; - registry.infer_missing_signatures(&modules, config)?; + let mut linker = Box::new(Linker::new(context.source_manager())); + let session = context.session_rc(); + if !extra_modules.is_empty() { + linker.link_modules(extra_modules)?; + } + for (path, content) in session.options.link_modules.iter() { + let source = session.source_manager.load( + midenc_hir::diagnostics::SourceLanguage::Masm, + path.as_str().into(), + content.clone(), + ); + let mut module = miden_assembly_syntax::ModuleParser::new(Some( + miden_assembly::ast::ModuleKind::Library, + )) + .parse(Some(path.as_path()), source, context.source_manager())?; + linker.link_module(&mut module)?; + } + for link_lib in session.options.link_libraries.iter() { + let package = link_lib.load(&session.options)?; + match package.kind { + miden_project::TargetType::Kernel => { + linker.link_with_kernel(package)?; + } + miden_project::TargetType::Executable => { + return Err(Report::msg(format!( + "cannot link against executable package '{}'", + &link_lib.name + ))); + } + _ => { + linker.link_library( + LinkLibrary::from_package(package) + .with_linkage(miden_project::Linkage::Dynamic), + )?; + } + } + } + let module_indices = linker.link([root], support)?; + let root_index = module_indices[0]; + + let mut registry = ModuleRegistry::new(linker, root_index, module_indices, context.clone()); + registry.infer_missing_signatures(config)?; let mut builder = OpBuilder::new(context.clone()); let mut world = { @@ -105,12 +123,9 @@ fn lift_modules<'a>( ensure_op_region(&context, &mut *world.borrow_mut()); registry.declare_modules(world)?; - registry.create_external_declarations()?; - registry.create_source_functions(&modules)?; - registry.lift_bodies(&modules)?; + registry.lift_bodies()?; - let root_path = module_key(root_module); - let module = registry.module_ref(&root_path)?; + let module = registry.modules[&root_index]; Ok(DisassembledWorld { context, world, @@ -120,494 +135,222 @@ fn lift_modules<'a>( struct ModuleRegistry { context: Rc, + linker: Box, + root_index: ModuleIndex, + top_level_modules: Vec, world: Option, - modules: FxHashMap, midenc_hir::dialects::builtin::ModuleRef>, - signatures: FxHashMap, Signature>, - functions: FxHashMap, FunctionRef>, - source_functions: FxHashMap, FxHashMap>>, + modules: FxHashMap, + signatures: FxHashMap, + functions: FxHashMap, + #[allow(unused)] external_types: ExternalTypeMap, + #[allow(unused)] external_signatures: FxHashMap, Signature>, + #[allow(unused)] referenced_external_signatures: FxHashMap, Signature>, } impl ModuleRegistry { - fn new(context: Rc) -> Self { + fn new( + linker: Box, + root_index: ModuleIndex, + top_level_modules: Vec, + context: Rc, + ) -> Self { Self { context, + linker, + root_index, + top_level_modules, world: None, modules: FxHashMap::default(), signatures: FxHashMap::default(), functions: FxHashMap::default(), - source_functions: FxHashMap::default(), external_types: ExternalTypeMap::new(), external_signatures: FxHashMap::default(), referenced_external_signatures: FxHashMap::default(), } } - fn register_source_modules(&mut self, modules: &[&Module]) -> Result<()> { - let mut seen = BTreeSet::new(); - for module in modules { - let module_path = module_key(module); - if !seen.insert(module_path.clone()) { - return Err(Report::msg(format!("duplicate MASM module '{}'", module.path()))); - } - - let mut locals = FxHashMap::default(); - for procedure in module.procedures() { - let path = procedure_key(module, procedure); - if locals.insert(procedure.name().as_ident(), path.clone()).is_some() { - return Err(Report::msg(format!( - "duplicate MASM procedure '{}::{}'", - module.path(), - procedure.name() - ))); - } - } - self.source_functions.insert(module_path, locals); - } - Ok(()) - } - - fn collect_types( - &mut self, - modules: &[&Module], - external_types: &ExternalTypeMap, - ) -> Result<()> { - self.external_types.extend( - external_types - .iter() - .map(|(path, ty)| (normalize_external_path(path.clone()), ty.clone())), - ); - - let mut pending = Vec::new(); - for (module_index, module) in modules.iter().enumerate() { - for (index, path) in module.exported() { - if matches!(&module[index], Export::Type(_)) { - pending.push(( - module_index, - index, - Arc::from(path.as_path().to_absolute().into_owned()), - )); - } - } - } - - while !pending.is_empty() { - let mut progress = false; - let mut next = Vec::new(); - let mut last_unresolved = None; - - for (module_index, index, path) in pending { - let module = modules[module_index]; - let Export::Type(decl) = &module[index] else { + fn infer_missing_signatures(&mut self, config: &DisassemblerConfig) -> Result<()> { + let mut visited = FxHashSet::default(); + for root in self.top_level_modules.iter().copied() { + let root_path = self.linker[root].path().clone(); + for (index, item) in self.linker[root].symbols().enumerate() { + let gid = self.root_index + ast::ItemIndex::new(index); + if !item.is_procedure() { continue; - }; - match signatures::convert_type_expr_with_external_types( - &self.context, - module, - &decl.ty(), - &self.external_types, - ) { - Ok(ty) => { - insert_external_type(&mut self.external_types, path, ty)?; - progress = true; + } + let path = root_path.join(self.linker[gid].name()); + let toposort = self.linker.topological_sort_from_root(gid).map_err(|cycle| { + let iter = cycle.into_node_ids(); + let mut nodes = Vec::with_capacity(iter.len()); + for node in iter { + let module = self.linker[node.module].path(); + let proc = self.linker[node].name(); + nodes.push(format!("{}", module.join(proc))); } - Err(err) if is_unresolved_external_type_metadata(&err) => { - last_unresolved = Some(err); - next.push((module_index, index, path)); + Report::msg(format!( + "found cycle in call graph rooted at '{path}' involving: {}", + DisplayValues::new(nodes.iter()) + )) + })?; + for gid in toposort.iter().rev().copied() { + if !visited.insert(gid) { + continue; } - Err(err) => return Err(err), - } - } - - if !progress { - return Err(last_unresolved.unwrap_or_else(|| { - Report::msg("failed to resolve MASM source type metadata") - })); - } - pending = next; - } - - Ok(()) - } - fn collect_declared_signatures( - &mut self, - modules: &[&Module], - external_signatures: &ExternalSignatureMap, - ) -> Result<()> { - self.external_signatures = convert_external_signatures(&self.context, external_signatures)?; - for path in self.referenced_external_paths(modules)? { - let Some(signature) = self.external_signatures.get(&path).cloned() else { - continue; - }; - insert_signature(&mut self.signatures, path.clone(), signature.clone())?; - insert_signature(&mut self.referenced_external_signatures, path, signature)?; - } - - for module in modules { - for procedure in module.procedures() { - let Some(signature) = procedure.signature() else { - continue; - }; - let signature = signatures::convert_signature_with_external_types( - &self.context, - module, - signature, - &self.external_types, - )?; - insert_signature( - &mut self.signatures, - procedure_key(module, procedure), - signature, - )?; - } - } - Ok(()) - } - - fn referenced_external_paths(&self, modules: &[&Module]) -> Result>> { - let mut referenced = BTreeSet::new(); - let source_manager = self.context.session().source_manager.clone(); - for module in modules { - for procedure in module.procedures() { - for target in procedure.invoked() { - let path = - resolve_invocation_path(module, &target.target, source_manager.clone())?; - if !self.is_source_function_path(&path) { - referenced.insert(path); + let item = self.linker[gid].item(); + match item { + SymbolItem::Procedure(p) => { + let p = p.borrow(); + let signature = self.linker.resolve_signature(gid)?; + match signature { + Some(sig) => { + self.signatures.insert( + gid, + Signature::with_convention( + &self.context, + sig.abi, + sig.params.iter().cloned(), + sig.results.iter().cloned(), + ), + ); + } + None if !config.infer_missing_signatures => { + let path = self.linker[gid.module].path(); + return Err(Report::msg(format!( + "procedure '{}' is missing a signature", + path.join(p.name().as_str()) + ))); + } + None => { + let signature = infer::infer_signature( + gid, + &p, + &self.context, + &self.linker, + &self.signatures, + )?; + self.signatures.insert(gid, signature); + } + } + } + SymbolItem::Compiled(ItemInfo::Procedure(p)) => { + match p.signature.as_deref() { + Some(sig) => { + self.signatures.insert( + gid, + Signature::with_convention( + &self.context, + sig.abi, + sig.params.iter().cloned(), + sig.results.iter().cloned(), + ), + ); + } + None => { + let path = self.linker[gid.module].path(); + return Err(Report::msg(format!( + "compiled procedure '{}' is missing a signature", + path.join(p.name.as_str()) + ))); + } + } + } + SymbolItem::Constant(_) | SymbolItem::Type(_) | SymbolItem::Compiled(_) => { + } } } } } - Ok(referenced) - } - - fn infer_missing_signatures( - &mut self, - modules: &[&Module], - config: &DisassemblerConfig, - ) -> Result<()> { - let mut pending = Vec::new(); - for module in modules { - for procedure in module.procedures() { - let path = procedure_key(module, procedure); - if self.signatures.contains_key(&path) { - continue; - } - if !config.infer_missing_signatures { - return Err(Report::msg(format!( - "procedure '{}' is missing a signature", - procedure.name() - ))); - } - pending.push((*module, procedure)); - } - } - - while !pending.is_empty() { - let mut progress = false; - let mut next = Vec::new(); - for (module, procedure) in pending { - if !self.procedure_dependencies_ready(module, procedure)? { - next.push((module, procedure)); - continue; - } - let signature = - infer::infer_signature(&self.context, module, procedure, &self.signatures)?; - insert_signature( - &mut self.signatures, - procedure_key(module, procedure), - signature, - )?; - progress = true; - } - - if !progress { - let names = next - .iter() - .map(|(module, procedure)| format!("{}::{}", module.path(), procedure.name())) - .collect::>() - .join(", "); - return Err(Report::msg(format!( - "signature inference cannot infer recursive or mutually dependent procedures: \ - {names}" - ))); - } - pending = next; - } Ok(()) } - fn procedure_dependencies_ready(&self, module: &Module, procedure: &Procedure) -> Result { - let source_manager = self.context.session().source_manager.clone(); - for target in procedure.invoked() { - let path = resolve_invocation_path(module, &target.target, source_manager.clone())?; - if self.signatures.contains_key(&path) { - continue; - } - if self.functions.contains_key(&path) || self.is_source_function_path(&path) { - return Ok(false); - } - return Err(Report::msg(format!( - "signature inference could not resolve external callee '{}' at {:?}; external \ - signature metadata is missing{}", - path, - target.span(), - external_signature_metadata_hint(&self.external_signatures) - ))); - } - Ok(true) - } - - fn is_source_function_path(&self, path: &Arc) -> bool { - self.source_functions - .values() - .any(|locals| locals.values().any(|local| local == path)) - } - fn declare_modules(&mut self, world: midenc_hir::dialects::builtin::WorldRef) -> Result<()> { self.world = Some(world); let mut world_builder = WorldBuilder::new(world); - let mut module_paths = BTreeSet::new(); - for module_path in self.source_functions.keys() { - module_paths.insert(module_path.clone()); - } - for path in self.referenced_external_signatures.keys() { - let module_path = path - .parent() - .ok_or_else(|| Report::msg(format!("external procedure '{path}' has no module")))?; - module_paths.insert(Arc::from(module_path.to_absolute().into_owned())); - } - - for module_path in module_paths { - let symbol_path = masm_module_symbol_path(&module_path); - let module = world_builder.declare_module_tree(&symbol_path)?; - self.modules.insert(module_path, module); - } - Ok(()) - } - - fn create_external_declarations(&mut self) -> Result<()> { - for (path, signature) in &self.referenced_external_signatures { - let module_path = path - .parent() - .ok_or_else(|| Report::msg(format!("external procedure '{path}' has no module")))?; - let module_path = Arc::from(module_path.to_absolute().into_owned()); - let module_ref = self.module_ref(&module_path)?; - let mut module_builder = ModuleBuilder::new(module_ref); - let name = path - .last() - .ok_or_else(|| Report::msg(format!("external procedure '{path}' has no name")))?; - let function = module_builder.define_function( - Ident::with_empty_span(midenc_hir::interner::Symbol::intern(name)), - Visibility::Public, - signature.clone(), - )?; - insert_function(&mut self.functions, path.clone(), function)?; - } - Ok(()) - } - - fn create_source_functions(&mut self, modules: &[&Module]) -> Result<()> { - for module in modules { - let module_path = module_key(module); - let module_ref = self.module_ref(&module_path)?; + for (gid, signature) in self.signatures.iter() { + let gid = *gid; + let module_ref = if let Some(module_ref) = self.modules.get(&gid.module).copied() { + module_ref + } else { + let module = &self.linker[gid.module]; + let path = module.path(); + let symbol_path = masm_module_symbol_path(path); + let module_ref = world_builder.declare_module_tree(&symbol_path)?; + self.modules.insert(gid.module, module_ref); + module_ref + }; let mut module_builder = ModuleBuilder::new(module_ref); - for procedure in module.procedures() { - let path = procedure_key(module, procedure); - let signature = self.signatures.get(&path).cloned().ok_or_else(|| { - Report::msg(format!("procedure '{}' is missing a signature", procedure.name())) - })?; - let visibility = if procedure.visibility().is_public() { - Visibility::Public - } else { - Visibility::Private - }; - let mut function = module_builder.define_function( - Ident::with_empty_span(midenc_hir::interner::Symbol::intern( - procedure.name().as_str(), - )), - visibility, - signature, - )?; - ensure_op_region(&self.context, &mut *function.borrow_mut()); - insert_function(&mut self.functions, path, function)?; + match self.linker[gid].item() { + SymbolItem::Procedure(p) => { + let p = p.borrow(); + let mut function = module_builder.define_function( + Ident::with_empty_span(midenc_hir::interner::Symbol::intern( + p.name().as_str(), + )), + match p.visibility() { + ast::Visibility::Public => Visibility::Public, + ast::Visibility::Private => Visibility::Private, + }, + signature.clone(), + )?; + ensure_op_region(&self.context, &mut *function.borrow_mut()); + self.functions.insert(gid, function); + } + SymbolItem::Compiled(ItemInfo::Procedure(p)) => { + let function = module_builder.define_function( + Ident::with_empty_span(midenc_hir::interner::Symbol::intern( + p.name.as_str(), + )), + Visibility::Public, + signature.clone(), + )?; + self.functions.insert(gid, function); + } + _ => (), } } Ok(()) } - fn lift_bodies(&self, modules: &[&Module]) -> Result<()> { + fn lift_bodies(&self) -> Result<()> { let mut builder = OpBuilder::new(self.context.clone()); - for module in modules { - for procedure in module.procedures() { - let path = procedure_key(module, procedure); - let function = *self.functions.get(&path).ok_or_else(|| { - Report::msg(format!( - "unresolved function '{}::{}'", - module.path(), - procedure.name() - )) - })?; - let signature = self.signatures.get(&path).unwrap().clone(); + for gid in self.signatures.keys().copied() { + if let SymbolItem::Procedure(p) = self.linker[gid].item() { + let p = p.borrow(); + let function = self.functions[&gid]; let mut function_builder = FunctionBuilder::new(function, &mut builder); - let mut lifter = ProcedureLifter::new(module, procedure, signature, self); + let mut lifter = ProcedureLifter::new(gid, &p, self); lifter.lift(&mut function_builder)?; } } Ok(()) } - fn module_ref( + fn resolve_function( &self, - module_path: &Arc, - ) -> Result { - self.modules.get(module_path).copied().ok_or_else(|| { - Report::msg(format!("HIR module for MASM module '{module_path}' was not declared")) - }) - } - - fn resolve_function(&self, module: &Module, target: &InvocationTarget) -> Result { - let source_manager = self.context.session().source_manager.clone(); - let path = resolve_invocation_path(module, target, source_manager)?; - self.functions.get(&path).copied().ok_or_else(|| { - Report::msg(format!( - "unresolved external callee '{}'; external signature metadata is missing{}", - path, - external_signature_metadata_hint(&self.external_signatures) - )) - }) - } -} - -fn convert_external_signatures( - context: &Rc, - external_signatures: &ExternalSignatureMap, -) -> Result, Signature>> { - external_signatures - .iter() - .map(|(path, signature)| { - let path = normalize_external_path(path.clone()); - let signature = signatures::convert_hir_function_type(context, signature); - Ok((path, signature)) - }) - .collect() -} - -fn normalize_external_path(path: Arc) -> Arc { - if !path.is_absolute() { - path.to_absolute().into() - } else { - path - } -} - -fn insert_external_type(types: &mut ExternalTypeMap, path: Arc, ty: Type) -> Result<()> { - if let Some(existing) = types.insert(path.clone(), ty.clone()) - && existing != ty - { - return Err(Report::msg(format!("conflicting MASM type metadata for '{path}'"))); - } - Ok(()) -} - -fn is_unresolved_external_type_metadata(err: &miden_assembly_syntax::diagnostics::Report) -> bool { - err.to_string().contains("external type metadata") -} - -fn insert_signature( - signatures: &mut FxHashMap, Signature>, - path: Arc, - signature: Signature, -) -> Result<()> { - if let Some(existing) = signatures.insert(path.clone(), signature.clone()) - && existing != signature - { - return Err(Report::msg(format!("conflicting MASM procedure signatures for '{path}'"))); - } - Ok(()) -} - -fn insert_function( - functions: &mut FxHashMap, FunctionRef>, - path: Arc, - function: FunctionRef, -) -> Result<()> { - if functions.insert(path.clone(), function).is_some() { - return Err(Report::msg(format!("duplicate HIR function for MASM procedure '{path}'"))); - } - Ok(()) -} - -fn module_key(module: &Module) -> Arc { - Arc::from(module.path().to_absolute().into_owned()) -} - -fn procedure_key(module: &Module, procedure: &Procedure) -> Arc { - Arc::from(module.path().join(procedure.name()).to_absolute().into_owned()) -} - -fn resolve_invocation_path( - module: &Module, - target: &InvocationTarget, - source_manager: Arc, -) -> Result> { - match target { - InvocationTarget::Symbol(name) => { - match module.resolve(Span::new(name.span(), name.as_str()), source_manager) { - Ok(SymbolResolution::Local(index)) => { - let item = &module[index.into_inner()]; - Ok(Arc::from(module.path().join(item.name()).to_absolute().into_owned())) - } - Ok(SymbolResolution::External(path)) => { - Ok(normalize_external_path(path.inner().clone())) - } - Ok(SymbolResolution::Exact { path, .. }) => { - Ok(normalize_external_path(path.inner().clone())) - } - Ok(SymbolResolution::Module { .. }) => Err(Report::msg(format!( - "invocation target '{name}' resolves to a module, not a procedure" - ))), - Ok(SymbolResolution::MastRoot(_)) => { - Err(Report::msg("MAST root invocation targets are not supported")) - } - Err(err) => Err(Report::msg(format!( - "failed to resolve MASM invocation target '{name}': {err}" - ))), - } - } - InvocationTarget::Path(path) => { - match module.resolve_path(path.as_deref(), source_manager) { - Ok(SymbolResolution::Local(index)) => { - let item = &module[index.into_inner()]; - Ok(Arc::from(module.path().join(item.name()).to_absolute().into_owned())) - } - Ok(SymbolResolution::External(path)) => { - Ok(normalize_external_path(path.inner().clone())) - } - Ok(SymbolResolution::Exact { path, .. }) => { - Ok(normalize_external_path(path.inner().clone())) - } - Ok(SymbolResolution::Module { .. }) => Err(Report::msg(format!( - "invocation target '{}' resolves to a module, not a procedure", - path.inner() - ))), - Ok(SymbolResolution::MastRoot(_)) => { - Err(Report::msg("MAST root invocation targets are not supported")) - } - Err(err) => Err(Report::msg(format!( - "failed to resolve MASM invocation target '{}': {err}", - path.inner() - ))), + caller: GlobalItemIndex, + target: &InvocationTarget, + span: SourceSpan, + kind: Option, + ) -> Result { + let context = SymbolResolutionContext { + span, + module: caller.module, + kind, + }; + match self.linker.resolve_invoke_target(&context, target)? { + SymbolResolution::Exact { gid, .. } => Ok(self.functions[&gid]), + _ => { + let path = self.linker[caller.module].path().clone(); + let path = path.join(self.linker[caller].name()); + Err(Report::msg(format!("unresolved callee '{target}' from '{path}'"))) } } - InvocationTarget::MastRoot(_) => { - Err(Report::msg("MAST root invocation targets are not supported")) - } } } @@ -616,108 +359,6 @@ fn masm_module_symbol_path(path: &ast::Path) -> SymbolPath { SymbolPath::from_masm_module_id(path) } -fn collect_referenced_core_metadata<'a>( - modules: impl IntoIterator, - context: &Rc, -) -> Result<(ExternalSignatureMap, ExternalTypeMap)> { - let source_manager = context.session().source_manager.clone(); - let mut referenced = BTreeSet::>::new(); - for module in modules { - for procedure in module.procedures() { - for invocation in procedure.invoked() { - let path = - resolve_invocation_path(module, &invocation.target, source_manager.clone())?; - if is_miden_core_path(&path) { - referenced.insert(path); - continue; - } - if module_contains_procedure(module, &path) { - continue; - } - return Err(Report::msg(format!( - "single-module MASM disassembly does not support non-core import '{}'; use \ - project target disassembly for multi-module MASM", - path - ))); - } - } - } - - if referenced.is_empty() { - return Ok((ExternalSignatureMap::new(), ExternalTypeMap::new())); - } - - let core = CoreLibrary::default(); - let mut signatures = ExternalSignatureMap::new(); - let mut types = ExternalTypeMap::new(); - for module in core.library().module_infos() { - for (_, ty) in module.types() { - let path = Arc::from(module.path().join(&ty.name).to_absolute().into_owned()); - types.insert(path, ty.ty.clone()); - } - for (_, procedure) in module.procedures() { - let path = - Arc::from(module.path().join(procedure.name.as_str()).to_absolute().into_owned()); - if !referenced.contains(&path) { - continue; - } - let Some(signature) = &procedure.signature else { - return Err(Report::msg(format!( - "referenced core procedure '{path}' has no signature metadata" - ))); - }; - signatures.insert(path, signature.as_ref().clone()); - } - } - - for path in referenced { - if !signatures.contains_key(&path) { - return Err(Report::msg(format!( - "referenced core procedure '{path}' was not found in CoreLibrary metadata" - ))); - } - } - - Ok((signatures, types)) -} - -fn is_miden_core_path(path: &ast::Path) -> bool { - let path = path.as_str().strip_prefix("::").unwrap_or(path.as_str()); - path == "miden::core" || path.starts_with("miden::core::") -} - -fn module_contains_procedure(module: &Module, path: &Arc) -> bool { - let module_path = module_key(module); - let Some(parent) = path.parent() else { - return false; - }; - if parent != module_path.as_ref() { - return false; - } - let Some(name) = path.last() else { - return false; - }; - module.procedures().any(|procedure| procedure.name().as_str() == name) -} - -fn external_signature_metadata_hint( - external_signatures: &FxHashMap, Signature>, -) -> String { - if external_signatures.is_empty() { - return "; no external signature metadata is available".to_string(); - } - - let mut paths = external_signatures.keys().map(|path| path.as_str()).collect::>(); - paths.sort(); - let omitted = paths.len().saturating_sub(8); - paths.truncate(8); - let mut hint = format!("; available external signatures: {}", paths.join(", ")); - if omitted > 0 { - hint.push_str(&format!(" (+{omitted} more)")); - } - hint -} - fn ensure_op_region(context: &Rc, op: &mut dyn HirOp) { if op.num_regions() == 0 { let region = context.create_region(); @@ -746,25 +387,18 @@ enum WordEndian { } struct ProcedureLifter<'a> { - module: &'a Module, + item: GlobalItemIndex, procedure: &'a Procedure, - signature: Signature, registry: &'a ModuleRegistry, locals: BTreeMap, stack: Vec, } impl<'a> ProcedureLifter<'a> { - fn new( - module: &'a Module, - procedure: &'a Procedure, - signature: Signature, - registry: &'a ModuleRegistry, - ) -> Self { + fn new(item: GlobalItemIndex, procedure: &'a Procedure, registry: &'a ModuleRegistry) -> Self { Self { - module, + item, procedure, - signature, registry, locals: BTreeMap::new(), stack: Vec::new(), @@ -830,6 +464,11 @@ impl<'a> ProcedureLifter<'a> { else_blk, } => self.lift_if(then_blk, else_blk, *span, builder)?, Op::While { span, body } => self.lift_while(body, *span, builder)?, + Op::DoWhile { + span, + body, + condition, + } => self.lift_do_while(body, condition, *span, builder)?, Op::Repeat { count, body, .. } => { let count = immediate_u32(count)?; for _ in 0..count { @@ -1380,9 +1019,9 @@ impl<'a> ProcedureLifter<'a> { HornerExt => self.horner_ext(span, builder), EvalCircuit => self.eval_circuit(span, builder), LogPrecompile => self.log_precompile(span, builder), - Exec(target) => self.invoke(builder, target, span, InvokeKind::Exec), - Call(target) => self.invoke(builder, target, span, InvokeKind::Call), - SysCall(target) => self.invoke(builder, target, span, InvokeKind::Syscall), + Exec(target) => self.invoke(builder, target, span, ast::InvokeKind::Exec), + Call(target) => self.invoke(builder, target, span, ast::InvokeKind::Call), + SysCall(target) => self.invoke(builder, target, span, ast::InvokeKind::SysCall), Add => self.binary_with_type(builder, Type::Felt, span, |builder, lhs, rhs, span| { builder.add_wrapping(lhs, rhs, span) }), @@ -1500,7 +1139,7 @@ impl<'a> ProcedureLifter<'a> { IsOdd => self.unary_with_type(builder, Type::Felt, span, |builder, value, span| { builder.is_odd(value, span) }), - Debug(_) | DebugVar(_) | Trace(_) => Ok(()), + DebugVar(_) => Ok(()), _ => unsupported_instruction(inst, span), } } @@ -1558,6 +1197,16 @@ impl<'a> ProcedureLifter<'a> { Ok(()) } + fn lift_do_while( + &mut self, + _body: &Block, + _condition: &Block, + _span: SourceSpan, + _builder: &mut FunctionBuilder<'_, OpBuilder>, + ) -> Result<()> { + todo!() + } + fn lift_while( &mut self, body: &Block, @@ -1672,9 +1321,9 @@ impl<'a> ProcedureLifter<'a> { builder: &mut FunctionBuilder<'_, OpBuilder>, target: &InvocationTarget, span: SourceSpan, - kind: InvokeKind, + kind: ast::InvokeKind, ) -> Result<()> { - let function = self.registry.resolve_function(self.module, target)?; + let function = self.registry.resolve_function(self.item, target, span, Some(kind))?; let signature = function.borrow().get_signature().clone(); let mut args = Vec::with_capacity(signature.arity()); for param in signature.params().iter() { @@ -1683,7 +1332,7 @@ impl<'a> ProcedureLifter<'a> { } let results: Vec<_> = match kind { - InvokeKind::Exec => { + ast::InvokeKind::Exec => { let op = builder.exec(function, signature, args, span)?; op.borrow() .results() @@ -1691,7 +1340,7 @@ impl<'a> ProcedureLifter<'a> { .map(|result| result.borrow().as_value_ref()) .collect() } - InvokeKind::Call => { + ast::InvokeKind::Call => { let op = builder.call(function, signature, args, span)?; op.borrow() .results() @@ -1699,7 +1348,7 @@ impl<'a> ProcedureLifter<'a> { .map(|result| result.borrow().as_value_ref()) .collect() } - InvokeKind::Syscall => { + ast::InvokeKind::SysCall => { let op = builder.syscall(function, signature, args, span)?; op.borrow() .results() @@ -1707,6 +1356,9 @@ impl<'a> ProcedureLifter<'a> { .map(|result| result.borrow().as_value_ref()) .collect() } + ast::InvokeKind::ProcRef => { + panic!("unexpected use of InvokeKind::ProcRef in ProcedureLifter::invoke") + } }; for result in results.into_iter().rev() { self.push_value(result, span); @@ -1719,8 +1371,9 @@ impl<'a> ProcedureLifter<'a> { builder: &mut FunctionBuilder<'_, OpBuilder>, span: SourceSpan, ) -> Result> { + let signature = &self.registry.signatures[&self.item]; let result_types: Vec<_> = - self.signature.results().iter().map(|result| result.ty.clone()).collect(); + signature.results().iter().map(|result| result.ty.clone()).collect(); let mut results = Vec::with_capacity(result_types.len()); for result_ty in result_types { let value = self.pop(span)?; @@ -3026,12 +2679,6 @@ fn simulate_sanitizer_stack_op(inst: &Instruction, stack: &mut Vec Result<()> { debug_assert_ne!( semantics::instruction_semantics(inst), diff --git a/frontend/masm/src/project.rs b/frontend/masm/src/project.rs index d12aec09a..777c0a6a4 100644 --- a/frontend/masm/src/project.rs +++ b/frontend/masm/src/project.rs @@ -1,8 +1,6 @@ #![allow(clippy::vec_box)] use std::{ - collections::BTreeSet, - ffi::OsStr, fs, path::{Path, PathBuf}, sync::Arc, @@ -10,12 +8,11 @@ use std::{ use miden_assembly::ProjectSourceInputs; use miden_assembly_syntax::{ - ModuleParser, Path as MasmPath, ast::{self, Module, ModuleKind}, debuginfo::SourceManager, + parser::read_modules_from_root, }; -use miden_core::serde::Deserializable; -use miden_mast_package::{Package as MastPackage, PackageExport, TargetType}; +use miden_mast_package::{Package as MastPackage, PackageExport}; use miden_project::{ DependencyVersionScheme, Package as ProjectPackage, Project, ProjectDependencyGraph, ProjectDependencyNode, ProjectDependencyNodeProvenance, ProjectSource, Target, @@ -358,9 +355,7 @@ pub fn load_target_modules( target: &Target, source_manager: Arc, ) -> Result { - let target_path = target.path.as_ref().ok_or_else(|| { - Report::msg(format!("target '{}' does not specify a MASM source path", target.name.inner())) - })?; + let target_path = &target.path; let target_path = resolve_uri_path(package_base_dir(package)?, target_path.inner().path()); if target_path.extension().and_then(|ext| ext.to_str()) != Some(Module::FILE_EXTENSION) { return Err(Report::msg(format!( @@ -370,187 +365,29 @@ pub fn load_target_modules( ))); } - let root_path = target_path.canonicalize().map_err(|error| { - Report::msg(format!("failed to resolve target source '{}': {error}", target_path.display())) - })?; - let root_dir = root_path.parent().map(Path::to_path_buf).ok_or_else(|| { - Report::msg(format!("target source '{}' has no parent directory", root_path.display())) - })?; - let root = parse_module_file( - &root_path, - target_root_module_kind(target.ty), - target.namespace.inner().as_ref(), - source_manager.clone(), + let kind = if target.is_executable() { + ModuleKind::Executable + } else if target.is_kernel() { + ModuleKind::Kernel + } else { + ModuleKind::Library + }; + let (root, support) = read_modules_from_root( + &target_path, + Some(target.namespace.inner().clone()), + Some(kind), + source_manager, + false, )?; - let mut excluded = excluded_target_roots(package, target, &root_path)?; - excluded.insert(root_path); - let support_paths = read_support_module_paths(&root_dir, target.namespace.inner(), &excluded)?; - let support = support_paths - .iter() - .map(|path| { - let relative = path.strip_prefix(&root_dir).map_err(|error| { - Report::msg(format!( - "failed to derive module path for '{}': {error}", - path.display() - )) - })?; - let module_path = module_path_from_relative(target.namespace.inner(), relative)?; - parse_module_file( - path, - ModuleKind::Library, - module_path.as_ref(), - source_manager.clone(), - ) - }) - .collect::>>()?; - Ok(ProjectSourceInputs { root, support }) } -fn parse_module_file( - path: &Path, - kind: ModuleKind, - module_path: &MasmPath, - source_manager: Arc, -) -> Result> { - let mut parser = ModuleParser::new(kind); - parser.parse_file(module_path, path, source_manager) -} - -fn target_root_module_kind(ty: TargetType) -> ModuleKind { - match ty { - TargetType::Executable => ModuleKind::Executable, - TargetType::Kernel => ModuleKind::Kernel, - _ => ModuleKind::Library, - } -} - -fn excluded_target_roots( - package: &ProjectPackage, - target: &Target, - current_root: &Path, -) -> Result> { - let base_dir = package_base_dir(package)?; - let mut excluded = BTreeSet::new(); - - if !target.ty.is_executable() - && let Some(library_target) = package.library_target() - && let Some(path) = library_target.path.as_ref() - { - insert_excluded_target_root(&mut excluded, base_dir, path.inner().path(), current_root)?; - } - - for executable in package.executable_targets() { - let Some(path) = executable.path.as_ref() else { - continue; - }; - insert_excluded_target_root(&mut excluded, base_dir, path.inner().path(), current_root)?; - } - - Ok(excluded) -} - -fn insert_excluded_target_root( - excluded: &mut BTreeSet, - base_dir: &Path, - path: &str, - current_root: &Path, -) -> Result<()> { - let path = resolve_uri_path(base_dir, path); - if let Ok(path) = path.canonicalize() - && path != current_root - { - excluded.insert(path); - } - Ok(()) -} - -fn read_support_module_paths( - root_dir: &Path, - namespace: &MasmPath, - excluded: &BTreeSet, -) -> Result> { - let mut paths = Vec::new(); - collect_module_files(root_dir, &mut paths)?; - paths.sort(); - - let mut modules = Vec::new(); - for path in paths { - let canonical = path.canonicalize().map_err(|error| { - Report::msg(format!("failed to resolve '{}': {error}", path.display())) - })?; - if excluded.contains(&canonical) { - continue; - } - - let relative = canonical.strip_prefix(root_dir).map_err(|error| { - Report::msg(format!( - "failed to derive module path for '{}': {error}", - canonical.display() - )) - })?; - module_path_from_relative(namespace, relative)?; - modules.push(canonical); - } - - Ok(modules) -} - -fn collect_module_files(dir: &Path, paths: &mut Vec) -> Result<()> { - for entry in fs::read_dir(dir).map_err(|error| { - Report::msg(format!("failed to read module directory '{}': {error}", dir.display())) - })? { - let entry = entry.map_err(|error| { - Report::msg(format!("failed to read directory entry in '{}': {error}", dir.display())) - })?; - let path = entry.path(); - let file_type = entry.file_type().map_err(|error| { - Report::msg(format!("failed to read file type for '{}': {error}", path.display())) - })?; - - if file_type.is_dir() { - collect_module_files(&path, paths)?; - continue; - } - - if path.extension() == Some(AsRef::::as_ref(Module::FILE_EXTENSION)) { - paths.push(path); - } - } - - Ok(()) -} - -fn module_path_from_relative(namespace: &MasmPath, relative: &Path) -> Result> { - let mut module_path = namespace.to_path_buf(); - let stem = relative.with_extension(""); - let mut components = stem - .iter() - .map(|component| { - component.to_str().ok_or_else(|| { - Report::msg(format!("module path '{}' contains invalid UTF-8", relative.display())) - }) - }) - .collect::>>()?; - - if components.last().is_some_and(|component| *component == Module::ROOT) { - components.pop(); - } - - for component in components { - MasmPath::validate(component).map_err(|error| Report::msg(error.to_string()))?; - module_path.push_component(component); - } - - Ok(module_path.into()) -} - fn load_mast_package(path: &Path) -> Result { let bytes = fs::read(path).map_err(|err| { Report::msg(format!("failed to read Miden package dependency '{}': {err}", path.display())) })?; - MastPackage::read_from_bytes(&bytes).map_err(|err| { + MastPackage::read_from_bytes_trusted(&bytes).map_err(|err| { Report::msg(format!( "failed to decode Miden package dependency '{}': {err}", path.display() diff --git a/frontend/masm/src/semantics.rs b/frontend/masm/src/semantics.rs index e457042b2..08809e756 100644 --- a/frontend/masm/src/semantics.rs +++ b/frontend/masm/src/semantics.rs @@ -85,9 +85,13 @@ define_instruction_semantics! { Instruction::NeqImm(_), Instruction::Eqw, Instruction::Lt, + Instruction::LtImm(_), Instruction::Lte, + Instruction::LteImm(_), Instruction::Gt, + Instruction::GtImm(_), Instruction::Gte, + Instruction::GteImm(_), Instruction::IsOdd, Instruction::U32Test, Instruction::U32TestW, @@ -260,9 +264,7 @@ define_instruction_semantics! { Instruction::Exec(_), Instruction::Call(_), Instruction::SysCall(_), - Instruction::Debug(_), Instruction::DebugVar(_), - Instruction::Trace(_), Instruction::Emit, Instruction::EmitImm(_), Instruction::SysEvent(_), diff --git a/frontend/masm/src/signatures.rs b/frontend/masm/src/signatures.rs index 1079d5aa2..fa35c7f95 100644 --- a/frontend/masm/src/signatures.rs +++ b/frontend/masm/src/signatures.rs @@ -1,6 +1,7 @@ use std::{collections::BTreeSet, rc::Rc, sync::Arc}; -use miden_assembly_syntax::ast::{self, Export, FunctionType, Module, SymbolResolution, TypeExpr}; +use miden_assembly::linker::SymbolResolver; +use miden_assembly_syntax::ast::{self, FunctionType, Item, Module, SymbolResolution, TypeExpr}; use midenc_hir::{ ArrayType, Context, FunctionType as HirFunctionType, PointerType, Report, Span, StructType as HirStructType, Type, dialects::builtin::attributes::Signature, @@ -165,7 +166,7 @@ fn resolve_type_ref( match module.resolve_path(path.as_deref(), source_manager.clone()) { Ok(SymbolResolution::Local(item)) => { let item = &module[item.into_inner()]; - let Export::Type(decl) = item else { + let Item::Type(decl) = item else { return Err(Report::msg(format!( "MASM symbol '{}' does not resolve to a type", path.inner() diff --git a/frontend/masm/src/tests.rs b/frontend/masm/src/tests.rs index 509c9a7a6..86b46bd94 100644 --- a/frontend/masm/src/tests.rs +++ b/frontend/masm/src/tests.rs @@ -7,12 +7,12 @@ use std::{ time::{SystemTime, UNIX_EPOCH}, }; -use miden_assembly::Assembler; -use miden_assembly_syntax::{ - Parse, - ast::{self, Instruction}, +use miden_assembly::{ + Assembler, + ast::ItemIndex, + linker::{Linker, SymbolItem}, }; -use miden_core::serde::Serializable; +use miden_assembly_syntax::ast::{self, Instruction}; use miden_package_registry::{ NoPackageStore, PackageId, PackageRecord, PackageRegistry, PackageVersions, Version, }; @@ -33,7 +33,7 @@ use midenc_hir::{ diagnostics::{Report, Severity}, dialects::builtin::{ self, Function, UnrealizedConversionCast, - attributes::{AdviceEffectDescriptor, AdviceResourceKind}, + attributes::{AdviceEffectDescriptor, AdviceResourceKind, Signature}, }, effects::AdviceEffect, pass::AnalysisManager, @@ -1389,20 +1389,31 @@ end "#; let context = Rc::new(Context::default()); let module = parse_test_module(source, &context)?; - let target = module - .procedures() - .find(|procedure| procedure.name().as_str() == "target") - .expect("target procedure"); + let mut linker = Linker::new(context.source_manager()); + let roots = linker.link([module], []).unwrap(); + let root = roots[0]; + let target_id = linker[root].symbols().position(|sym| matches!(sym.item(), SymbolItem::Procedure(p) if p.borrow().name().as_str() == "target")).unwrap(); + let target_id = root + ItemIndex::new(target_id); + let capture_id = linker[root].symbols().position(|sym| matches!(sym.item(), SymbolItem::Procedure(p) if p.borrow().name().as_str() == "capture")).unwrap(); + let capture_id = root + ItemIndex::new(capture_id); + + let target_signature = linker.resolve_signature(target_id).unwrap().unwrap(); let mut signatures = rustc_hash::FxHashMap::default(); signatures.insert( - std::sync::Arc::from(module.path().join(target.name()).to_absolute().into_owned()), - signatures::convert_signature(&context, &module, target.signature().unwrap())?, + target_id, + Signature::with_convention( + &context, + target_signature.abi, + target_signature.params.iter().cloned(), + target_signature.results.iter().cloned(), + ), ); - let capture = module - .procedures() - .find(|procedure| procedure.name().as_str() == "capture") - .expect("capture procedure"); - let signature = infer::infer_signature(&context, &module, capture, &signatures)?; + + let SymbolItem::Procedure(capture) = linker[capture_id].item() else { + unreachable!() + }; + let capture = capture.borrow(); + let signature = infer::infer_signature(capture_id, &capture, &context, &linker, &signatures)?; assert_eq!(signature.params().len(), 0); assert_eq!(signature.results().len(), 1); @@ -4891,10 +4902,11 @@ fn parse_test_module( source: &str, context: &Rc, ) -> Result> { - let source_manager = context.session().source_manager.clone(); - let uri = Uri::from("test".to_owned().into_boxed_str()); - let source_file = source_manager.load(SourceLanguage::Masm, uri, source.to_owned()); - source_file.parse_with_options(source_manager, ParseOptions::new(ModuleKind::Library, "test")) + miden_assembly::ModuleParser::new(Some(ast::ModuleKind::Library)).parse_str( + Some(ast::Path::new("test")), + source, + context.source_manager(), + ) } fn felt_types(count: usize) -> Vec<&'static str> { @@ -5595,8 +5607,9 @@ fn write_preassembled_dependency_project(prefix: &str) -> (std::path::PathBuf, s fs::create_dir_all(&app_dir).unwrap(); fs::create_dir_all(&dep_src_dir).unwrap(); + let api_root = dep_src_dir.join("api.masm"); fs::write( - dep_src_dir.join("api.masm"), + &api_root, r#" pub proc callee(a: felt) -> felt add.1 @@ -5608,15 +5621,10 @@ end "#, ) .unwrap(); - let library = Assembler::default().assemble_library_from_dir(&dep_src_dir, "dep").unwrap(); - let package = miden_mast_package::Package::from_library( - miden_mast_package::PackageId::from("dep"), - "1.0.0".parse::().unwrap(), - miden_mast_package::TargetType::Library, - library, - std::iter::empty(), - ); - fs::write(root.join("dep.masp"), package.to_bytes()).unwrap(); + let package = Assembler::default() + .assemble_library_from_root(&api_root, Some(ast::Path::new("dep"))) + .unwrap(); + package.write_masp_file(&root).unwrap(); fs::write( app_dir.join("miden-project.toml"), diff --git a/frontend/masm/tests/e2e.rs b/frontend/masm/tests/e2e.rs index 5ec441896..560c9ada7 100644 --- a/frontend/masm/tests/e2e.rs +++ b/frontend/masm/tests/e2e.rs @@ -1,19 +1,13 @@ use std::{rc::Rc, sync::Arc}; -use miden_assembly::Assembler; -use miden_assembly_syntax::{ - Parse, ParseOptions, - ast::ModuleKind, - debuginfo::{SourceLanguage, Uri}, -}; +use miden_assembly::{Assembler, ast::Module}; +use miden_assembly_syntax::{ast::ModuleKind, debuginfo::Uri}; use miden_core_lib::CoreLibrary; +use miden_mast_package::Package; use miden_processor::{ - DefaultHost, ExecutionOptions, Felt, Program, StackInputs, advice::AdviceInputs, execute_sync, -}; -use midenc_codegen_masm::{ - ToMasmComponent, - intrinsics::{self, MEM_INTRINSICS_MODULE_NAME}, + DefaultHost, ExecutionOptions, Felt, StackInputs, advice::AdviceInputs, execute_sync, }; +use midenc_codegen_masm::{ToMasmComponent, intrinsics}; use midenc_frontend_masm::{DisassemblerConfig, disassemble_source}; use midenc_hir::{Context, pass::AnalysisManager}; use midenc_session::{Options, Session, diagnostics::DefaultSourceManager}; @@ -218,26 +212,25 @@ fn e2e_context() -> Rc { Rc::new(Context::new(session)) } -fn assemble_original_program(source: &str, context: &Context) -> Program { - let source_manager = context.session().source_manager.clone(); - let core_library = CoreLibrary::default(); - let source_file = source_manager.load( - SourceLanguage::Masm, - Uri::from("test.masm".to_owned()), - source.to_owned(), - ); - let module = source_file - .parse_with_options(source_manager.clone(), ParseOptions::new(ModuleKind::Library, "test")) +fn assemble_original_program(source: &str, context: &Context) -> Arc { + use miden_assembly::Path as MasmPath; + + let source_manager = context.source_manager(); + let module = miden_assembly::ModuleParser::new(Some(ModuleKind::Library)) + .parse_str(Some(MasmPath::new("test")), source, source_manager.clone()) .expect("original MASM library should parse"); let library = Assembler::new(source_manager.clone()) - .assemble_library([module]) + .assemble_library("test", module, None::>) + .map(Arc::from) .expect("original MASM library should assemble"); + let core_library = CoreLibrary::default(); Assembler::new(source_manager) - .with_static_library(library) + .with_package(core_library.package(), miden_project::Linkage::Dynamic) + .expect("failed to link core library") + .with_package(library, miden_project::Linkage::Static) .expect("original MASM library should link") - .with_static_library(core_library.library()) - .expect("Miden core library should link") .assemble_program( + "program", r#" use miden::core::sys @@ -247,10 +240,13 @@ begin end "#, ) + .map(Arc::from) .expect("original MASM program should assemble") } -fn assemble_roundtripped_program(source: &str, context: Rc) -> Program { +fn assemble_roundtripped_program(source: &str, context: Rc) -> Arc { + use miden_assembly::Path as MasmPath; + let disassembled = disassemble_source(source, "test", &DisassemblerConfig::default(), context.clone()) .expect("MASM should disassemble to HIR"); @@ -263,16 +259,17 @@ fn assemble_roundtripped_program(source: &str, context: Rc) -> Program let source_manager = context.session().source_manager.clone(); let core_library = CoreLibrary::default(); let mut assembler = Assembler::new(source_manager.clone()); - let mem_intrinsics = intrinsics::load(MEM_INTRINSICS_MODULE_NAME, source_manager.clone()) - .expect("memory intrinsics should load"); assembler - .compile_and_statically_link(mem_intrinsics) - .expect("memory intrinsics should statically link"); - for module in masm_component.modules.iter() { - std::dbg!(module.path()); - } + .link_package(core_library.package(), miden_project::Linkage::Dynamic) + .expect("core library should link"); + assembler + .link_package(intrinsics::load(), miden_project::Linkage::Static) + .expect("intrinsics should link"); + let target = miden_project::Target::library(MasmPath::new("test"), Uri::new("test.masm")); + let inputs = masm_component.source_inputs(&target, context.session()).unwrap(); let library = assembler - .assemble_library(masm_component.modules.iter().cloned()) + .assemble_library("test", inputs.root, inputs.support) + .map(Arc::from) .unwrap_or_else(|err| { panic!( "round-tripped MASM should assemble:\nerror: {err}\n\n# Emitted \ @@ -280,11 +277,12 @@ fn assemble_roundtripped_program(source: &str, context: Rc) -> Program ) }); Assembler::new(source_manager) - .with_static_library(library) - .expect("round-tripped MASM library should link") - .with_static_library(core_library.library()) + .with_package(core_library.package(), miden_project::Linkage::Dynamic) .expect("Miden core library should link") + .with_package(library, miden_project::Linkage::Static) + .expect("round-tripped MASM library should link") .assemble_program( + "program", r#" use miden::core::sys @@ -294,11 +292,12 @@ begin end "#, ) + .map(Arc::from) .expect("round-tripped MASM program should assemble") } fn execute_program( - program: &Program, + program: &Package, inputs: &[Felt], advice: &[u64], num_outputs: usize, @@ -308,8 +307,9 @@ fn execute_program( .with_stack_values(advice.iter().copied()) .expect("test advice inputs should fit on VM advice stack"); let mut host = DefaultHost::default(); + let program = program.unwrap_program(); let trace = - execute_sync(program, stack_inputs, advice_inputs, &mut host, ExecutionOptions::default()) + execute_sync(&program, stack_inputs, advice_inputs, &mut host, ExecutionOptions::default()) .expect("program should execute"); trace.stack.get_num_elements(num_outputs).to_vec() } diff --git a/hir/Cargo.toml b/hir/Cargo.toml index f7c025d0d..989ac0a77 100644 --- a/hir/Cargo.toml +++ b/hir/Cargo.toml @@ -31,7 +31,7 @@ log.workspace = true miden-core.workspace = true midenc-log = { workspace = true, optional = true } midenc-hir-symbol = { workspace = true, features = ["compact_str"] } -midenc-hir-type = "0.6" +midenc-hir-type.workspace = true midenc-hir-macros.workspace = true midenc-session.workspace = true paste.workspace = true diff --git a/hir/src/ir/context.rs b/hir/src/ir/context.rs index 3d5c52e0e..3abfe7e43 100644 --- a/hir/src/ir/context.rs +++ b/hir/src/ir/context.rs @@ -100,7 +100,7 @@ impl Context { } #[inline] - pub fn source_manager(&self) -> Arc { + pub fn source_manager(&self) -> Arc { self.session.source_manager.clone() } diff --git a/midenc-compile/Cargo.toml b/midenc-compile/Cargo.toml index 8d1477739..02adef9f4 100644 --- a/midenc-compile/Cargo.toml +++ b/midenc-compile/Cargo.toml @@ -21,6 +21,7 @@ doctest = false default = ["std"] std = [ "miden-assembly/std", + "miden-assembly-syntax/std", "miden-package-registry/std", "midenc-codegen-masm/std", "midenc-frontend-wasm/std", @@ -39,6 +40,7 @@ clap = { workspace = true, optional = true } log.workspace = true midenc-codegen-masm.workspace = true miden-assembly.workspace = true +miden-assembly-syntax.workspace = true miden-mast-package.workspace = true miden-package-registry.workspace = true midenc-frontend-wasm.workspace = true diff --git a/midenc-compile/src/cargo.rs b/midenc-compile/src/cargo.rs index dd8fcddde..08e7b372a 100644 --- a/midenc-compile/src/cargo.rs +++ b/midenc-compile/src/cargo.rs @@ -1,7 +1,6 @@ use core::str::FromStr; use std::{ boxed::Box, - collections::BTreeSet, path::{Path, PathBuf}, rc::Rc, string::{String, ToString}, @@ -10,11 +9,10 @@ use std::{ }; use miden_assembly::SourceManager; -use miden_package_registry::PackageStore; use midenc_hir::Report; use midenc_session::{InputFile, LinkLibrary, Session, miden_project}; -use crate::{CompilerResult, stages::Artifact}; +use crate::{CodegenOutput, CompilerResult}; /// Cargo-specific options extracted from the `Compiler` struct. /// @@ -105,6 +103,7 @@ impl CargoOptions { } } +#[cfg(false)] pub fn load_cargo_based_source_dependencies( package: &miden_project::Package, dependency_graph: &miden_project::ProjectDependencyGraph, @@ -155,15 +154,15 @@ pub fn load_cargo_based_source_dependencies( )) })?; if target.path.is_none() { - cargo_build( + let package = cargo_build( project_package.clone(), target.inner(), manifest_path.with_file_name("Cargo.toml"), - registry, options, cargo_opts, source_manager.clone(), )?; + registry.publish_package(package)?; } } miden_project::ProjectSource::Virtual { .. } => { @@ -176,19 +175,19 @@ pub fn load_cargo_based_source_dependencies( Ok(()) } -fn cargo_build( +pub(crate) fn cargo_build( package: Arc, target: &miden_project::Target, manifest_path: std::path::PathBuf, - registry: &mut midenc_session::registry::HybridPackageRegistry, options: &midenc_session::Options, cargo_opts: &CargoOptions, - source_manager: Arc, -) -> CompilerResult> { + source_manager: Arc, +) -> CompilerResult { let package_name = package.name().to_string(); // The directory of the dependency being compiled, captured before `manifest_path` is consumed // below. The compiled package is materialized under this directory's `target` (see the end of // this function). + /* let dependency_dir = manifest_path .parent() .ok_or_else(|| { @@ -198,6 +197,7 @@ fn cargo_build( )) })? .to_path_buf(); + */ let mut nested_options = Box::new(midenc_session::Options { manifest_path: Some(manifest_path.clone()), target: Some(target.name.to_string()), @@ -230,7 +230,7 @@ fn cargo_build( } let package = if target.ty.is_executable() { - midenc_session::fixup_targets(package, true) + midenc_session::fixup_cargo_target(package) } else { package }; @@ -246,16 +246,29 @@ fn cargo_build( )); let context = Rc::new(midenc_hir::Context::new(session)); + crate::cargo_project_codegen_pipeline(input, context.clone()) // We expect dependencies to *always* produce packages (.masp) - let Artifact::Assembled(package) = crate::cargo_project_pipeline(input, context)? else { + /* + let CodegenOutput { + component, + account_component_metadata_bytes, + } = crate::cargo_project_codegen_pipeline(input, context.clone())? + else { panic!( - "expected cargo build of {package_name} to produce assembled artifact, but got HIR \ - output instead", + "expected cargo build of {package_name} to produce component, but got HIR output \ + instead", ); }; - registry.publish_package(package.clone())?; + Ok(CodegenOutput { + component, + account_component_metadata_bytes, + }) + */ + + //component.source_inputs(target, context.session()) + /* // Materialize the compiled dependency package on disk, in addition to publishing it to the // in-memory registry. A dependent crate that imports this dependency (e.g. via // `#[account(..)]`) resolves the dependency's `.masp` from disk while expanding its own Rust @@ -275,6 +288,7 @@ fn cargo_build( })?; Ok(package) + */ } /// Parse `cargo -Zscript`-style frontmatter from a given input string, if present. diff --git a/midenc-compile/src/stages/analyze.rs b/midenc-compile/src/stages/analyze.rs index 871d7651e..1cf6796c5 100644 --- a/midenc-compile/src/stages/analyze.rs +++ b/midenc-compile/src/stages/analyze.rs @@ -1,13 +1,11 @@ -use miden_assembly::ProjectSourceInputs; - use super::*; /// Perform analysis of HIR before lowering to Miden Assembly pub struct MasmAnalysisStage; impl Stage for MasmAnalysisStage { - type Input = Option; - type Output = Option; + type Input = Option; + type Output = Option; fn run(&mut self, input: Self::Input, context: Rc) -> CompilerResult { let session = context.session(); @@ -28,12 +26,17 @@ impl Stage for MasmAnalysisStage { let world = midenc_frontend_masm::disassemble_project_target( &session.project, target, - input.as_ref().map(|ProjectSourceInputs { root, support }| { - ProjectSourceInputs { - root: root.clone(), - support: support.clone(), - } - }), + input.as_ref().map( + |MasmSources { + inputs: ProjectSourceInputs { root, support }, + .. + }| { + ProjectSourceInputs { + root: root.clone(), + support: support.clone(), + } + }, + ), &config, context.clone(), )?; diff --git a/midenc-compile/src/stages/assemble.rs b/midenc-compile/src/stages/assemble.rs index 0b4a6540b..2f692b682 100644 --- a/midenc-compile/src/stages/assemble.rs +++ b/midenc-compile/src/stages/assemble.rs @@ -1,7 +1,14 @@ -use alloc::sync::Arc; +use alloc::{boxed::Box, sync::Arc, vec::Vec}; +use core::cell::RefCell; -use miden_assembly::{ProjectSourceInputs, ProjectTargetSelector, utils::DisplayHex}; -use miden_mast_package::Package; +use miden_assembly::{ + DefaultSourceManager, ProjectSourceInputs, ProjectSourceProvider, ProjectTargetSelector, + ResolvedPackage, utils::DisplayHex, +}; +use miden_mast_package::{Package, TargetType, Version}; +use midenc_codegen_masm::{MasmComponent, intrinsics}; +use midenc_hir::FxHashMap; +use midenc_session::PackageId; use super::*; @@ -33,7 +40,7 @@ impl Stage for AssembleStage { fn run(&mut self, input: Self::Input, context: Rc) -> CompilerResult { use midenc_hir::formatter::DisplayHex; - let session = context.session(); + let session = context.session_rc(); if !session.should_assemble() { log::debug!( "skipping assembly of mast package from masm artifact (should-assemble=false)" @@ -43,18 +50,49 @@ impl Stage for AssembleStage { log::debug!("assembling package"); - let CodegenOutput { - component, - account_component_metadata_bytes, - } = input; + let project_package = session.project.package(); + let is_executable_target = session.options.target_type.is_some_and(|tt| tt.is_executable()) + || project_package.library_target().is_none() + || session.options.target.as_deref().is_some_and(|tname| { + project_package.executable_targets().iter().any(|t| tname == &**t.name) + }); + let selector = if is_executable_target { + ProjectTargetSelector::Executable(selected_executable_target_name( + project_package.as_ref(), + &session, + )?) + } else { + ProjectTargetSelector::Library + }; + let package_id = project_package.name().into_inner(); + let version = project_package.version().into_inner().clone(); let mut registry = session.package_registry()?; - load_cargo_source_dependencies_for_assembly(session, &mut registry)?; - let package = component.assemble_with_registry( - account_component_metadata_bytes.as_deref(), - session, - &mut registry, - )?; + let package = if project_package.manifest_path().is_some() { + assemble_project_with_registry( + project_package.clone(), + selector, + &session, + &mut registry, + [Box::new(RustSourceProvider { + session: session.clone(), + compiled: RefCell::new(FxHashMap::from_iter([((package_id, version), input)])), + }) as Box], + )? + } else { + let sources = input.clone(); + assemble_virtual_project_with_registry( + project_package.clone(), + selector, + sources, + &session, + &mut registry, + [Box::new(RustSourceProvider { + session: session.clone(), + compiled: RefCell::new(FxHashMap::default()), + }) as Box], + )? + }; log::debug!( "successfully assembled package with digest {}", @@ -64,73 +102,67 @@ impl Stage for AssembleStage { } } -fn load_cargo_source_dependencies_for_assembly( - session: &midenc_session::Session, - registry: &mut midenc_session::registry::HybridPackageRegistry, -) -> CompilerResult<()> { - let package = session.project.package(); - if !package.dependencies().iter().any(|dependency| { - matches!( - dependency.scheme(), - midenc_session::miden_project::DependencyVersionScheme::Git { .. } - | midenc_session::miden_project::DependencyVersionScheme::Path { .. } - | midenc_session::miden_project::DependencyVersionScheme::Workspace { .. } - | midenc_session::miden_project::DependencyVersionScheme::WorkspacePath { .. } - ) - }) { - return Ok(()); - } - - let tmp = tempfile::TempDir::new() - .map_err(|err| Report::msg(format!("could not create temporary directory: {err}")))?; - let dependency_graph = - midenc_session::miden_project::ProjectDependencyGraphBuilder::new(&*registry) - .with_source_manager(session.source_manager.clone()) - .with_git_cache_root( - session - .options - .midenup_home - .as_deref() - .unwrap_or(tmp.path()) - .join("git") - .join("checkouts"), - ) - .build(package.clone())?; - let cargo_opts = crate::cargo::CargoOptions::from_compiler(&session.options)?; - crate::cargo::load_cargo_based_source_dependencies( - package.as_ref(), - &dependency_graph, - registry, - &session.options, - &cargo_opts, - session.source_manager.clone(), - ) -} - /// Perform assembly of a Miden Assembly project pub struct AssembleProjectStage; impl Stage for AssembleProjectStage { - type Input = Option; + type Input = Option; type Output = Artifact; fn run(&mut self, input: Self::Input, context: Rc) -> CompilerResult { let session = context.session(); let package = session.project.package(); let mut registry = session.package_registry()?; - let mut project_assembler = miden_assembly::Assembler::new(session.source_manager.clone()) - .with_warnings_as_errors(session.options.diagnostics.warnings.warnings_as_errors()) - .for_project(package, registry.as_mut())?; - - let selector = if session.options.target_type.unwrap_or_default().is_executable() { - ProjectTargetSelector::Executable(session.name.as_str()) - } else { - ProjectTargetSelector::Library - }; let package = match input { - Some(sources) => project_assembler.assemble_with_sources(selector, "dev", sources)?, - None => project_assembler.assemble(selector, "dev")?, + Some(sources) => { + let mut assembler = miden_assembly::Assembler::new(session.source_manager.clone()) + .with_warnings_as_errors( + session.options.diagnostics.warnings.warnings_as_errors(), + ); + + prepare_assembler(&mut assembler, &package, session)?; + + let selector = if session.options.target_type.unwrap_or_default().is_executable() { + ProjectTargetSelector::Executable(session.name.as_str()) + } else { + ProjectTargetSelector::Library + }; + + let target = selector.select_target(&package)?; + let package_id = package.target_package_name(&target); + match target.ty { + TargetType::Executable => { + assembler.compile_and_statically_link_all(sources.inputs.support)?; + assembler + .assemble_program(package_id, sources.inputs.root) + .map(Arc::from)? + } + TargetType::Kernel => assembler + .assemble_kernel(package_id, sources.inputs.root, sources.inputs.support) + .map(Arc::from)?, + _ => assembler + .assemble_library(package_id, sources.inputs.root, sources.inputs.support) + .map(Arc::from)?, + } + } + None => { + let selector = if session.options.target_type.unwrap_or_default().is_executable() { + ProjectTargetSelector::Executable(session.name.as_str()) + } else { + ProjectTargetSelector::Library + }; + assemble_project_with_registry( + package, + selector, + session, + &mut registry, + [Box::new(RustSourceProvider { + session: context.session_rc(), + compiled: RefCell::new(FxHashMap::default()), + }) as Box], + )? + } }; log::debug!( @@ -141,3 +173,370 @@ impl Stage for AssembleProjectStage { Ok(Artifact::Assembled(package)) } } + +struct RustSourceProvider { + session: Rc, + compiled: RefCell>, +} + +impl ProjectSourceProvider for RustSourceProvider { + fn file_type(&self) -> &'static str { + "rs" + } + + fn provide_sources( + &self, + context: &miden_assembly::TargetAssemblyContext<'_>, + ) -> Result { + let package_id = context.package.name().into_inner(); + let version = context.package.version().into_inner().clone(); + let key = (package_id, version); + { + let compiled = self.compiled.borrow(); + if let Some(found) = compiled.get(&key) { + return found.component.source_inputs(context.target, &self.session); + } + } + + let cargo_opts = crate::cargo::CargoOptions::from_compiler(&self.session.options)?; + let source_manager = Arc::new(DefaultSourceManager::default()); + let compiled = crate::cargo::cargo_build( + context.package.clone(), + context.target, + context.manifest_path.with_file_name("Cargo.toml"), + &self.session.options, + &cargo_opts, + source_manager, + )?; + + let source_inputs = compiled.component.source_inputs(context.target, &self.session)?; + + self.compiled.borrow_mut().insert(key, compiled); + + Ok(source_inputs) + } + + fn provide_source_provenance( + &self, + context: &miden_assembly::TargetAssemblyContext<'_>, + ) -> Result { + let package_id = context.package.name().into_inner(); + let version = context.package.version().into_inner().clone(); + let key = (package_id, version); + { + let compiled = self.compiled.borrow(); + if let Some(found) = compiled.get(&key) { + return Ok(found.source_provenance()); + } + } + + let cargo_opts = crate::cargo::CargoOptions::from_compiler(&self.session.options)?; + let source_manager = Arc::new(DefaultSourceManager::default()); + let compiled = crate::cargo::cargo_build( + context.package.clone(), + context.target, + context.manifest_path.with_file_name("Cargo.toml"), + &self.session.options, + &cargo_opts, + source_manager, + )?; + + let provenance = compiled.source_provenance(); + + self.compiled.borrow_mut().insert(key, compiled); + + Ok(provenance) + } + + fn post_process_package( + &self, + package: &mut Package, + context: &miden_assembly::TargetAssemblyContext<'_>, + ) -> Result<(), Report> { + let package_id = context.package.name().into_inner(); + let version = context.package.version().into_inner().clone(); + let key = (package_id, version); + + let compiled = self.compiled.borrow(); + let CodegenOutput { + component, + account_component_metadata_bytes, + source_provenance: _, + } = &compiled[&key]; + post_process_package( + package, + component, + account_component_metadata_bytes.as_deref(), + context.target, + context.package_registry, + ) + } +} + +fn selected_executable_target_name<'a>( + project_package: &'a midenc_session::miden_project::Package, + session: &'a Session, +) -> Result<&'a str, Report> { + if let Some(target_name) = session.options.target.as_deref() { + return Ok(target_name); + } + + let executable_targets = project_package.executable_targets(); + if executable_targets.len() == 1 { + return Ok(&**executable_targets[0].name); + } + + Ok(session.name.as_ref()) +} + +pub(super) fn assemble_project_with_registry( + project_package: Arc, + selector: ProjectTargetSelector, + session: &Session, + registry: &mut midenc_session::registry::HybridPackageRegistry, + source_providers: impl IntoIterator>, +) -> Result, Report> { + let mut assembler = miden_assembly::Assembler::new(session.source_manager.clone()) + .with_warnings_as_errors(session.options.diagnostics.warnings.warnings_as_errors()); + + prepare_assembler(&mut assembler, &project_package, session)?; + + let mut project_assembler = + assembler.for_project_with_providers(project_package, registry, source_providers)?; + + project_assembler.assemble(selector, "dev") +} + +pub(super) fn assemble_virtual_project_with_registry( + project_package: Arc, + selector: ProjectTargetSelector, + input: CodegenOutput, + session: &Session, + registry: &mut midenc_session::registry::HybridPackageRegistry, + source_providers: impl IntoIterator>, +) -> Result, Report> { + let target = selector.select_target(&project_package)?; + + let mut assembler = miden_assembly::Assembler::new(session.source_manager.clone()) + .with_warnings_as_errors(session.options.diagnostics.warnings.warnings_as_errors()); + + prepare_assembler(&mut assembler, &project_package, session)?; + + let has_required_lib = target.is_executable() && project_package.library_target().is_some(); + assert!( + !has_required_lib, + "cannot compile virtual targets that depend on other targets of the same project" + ); + + let mut project_assembler = assembler.for_project_with_providers( + project_package.clone(), + registry, + source_providers, + )?; + + let package_id = project_package.name().into_inner(); + let sources = input.component.source_inputs(&target, session)?; + let source_provenance = input.source_provenance; + let mut cache = alloc::collections::BTreeMap::new(); + let ResolvedPackage { mut package, .. } = project_assembler.assemble_source_package( + package_id, + project_package, + &target, + "dev", + None, + Some(sources), + Some(source_provenance), + &mut cache, + )?; + // Drop the cache so we know that the `package` is the only reference + drop(cache); + + { + let package = Arc::make_mut(&mut package); + post_process_package( + package, + &input.component, + input.account_component_metadata_bytes.as_deref(), + &target, + registry, + )?; + } + + Ok(package) +} + +fn prepare_assembler( + assembler: &mut miden_assembly::Assembler, + project_package: &midenc_session::miden_project::Package, + session: &Session, +) -> Result<(), Report> { + // Link the compiler intrinsics statically + assembler.link_package(intrinsics::load(), miden_assembly::Linkage::Static)?; + + // Link extra standalone modules + let mut link_modules = Vec::default(); + for (path, content) in session.options.link_modules.iter() { + let source = session.source_manager.load( + midenc_hir::diagnostics::SourceLanguage::Masm, + path.as_str().into(), + content.clone(), + ); + let module = + miden_assembly::ModuleParser::new(Some(miden_assembly::ast::ModuleKind::Library)) + .parse(Some(path.as_path()), source, session.source_manager.clone())?; + link_modules.push(module); + } + assembler.compile_and_statically_link_all(link_modules)?; + + // Link libraries which are not direct dependencies of the package + for link_lib in session.options.link_libraries.iter() { + if !project_package + .dependencies() + .iter() + .any(|dep| dep.name().as_ref() == link_lib.name.as_ref()) + { + let package = link_lib.load(&session.options)?; + assembler.link_package(package, link_lib.linkage)?; + } + } + + Ok(()) +} + +fn post_process_package( + package: &mut Package, + component: &MasmComponent, + account_component_metadata_bytes: Option<&[u8]>, + target: &midenc_session::miden_project::Target, + registry: &dyn miden_package_registry::PackageRegistryAndProvider, +) -> Result<(), Report> { + use miden_assembly::serde::Serializable; + use miden_mast_package::{Section, SectionId}; + use midenc_session::miden_project::TargetType; + + attach_account_component_metadata(package, account_component_metadata_bytes); + extend_rodata_advice_map(package, &component.rodata); + + // Embed the kernel in note/transaction script packages, if not already embedded + if matches!(target.ty, TargetType::Note | TargetType::TransactionScript) + && !package.sections.iter().any(|section| section.id == SectionId::KERNEL) + && let Ok(Some(kernel_dep)) = package.kernel_runtime_dependency() + { + let version = midenc_session::miden_project::Version::new( + kernel_dep.version().clone(), + kernel_dep.digest, + ); + let kernel_package = registry.load_package(kernel_dep.id(), &version)?; + package + .sections + .push(Section::new(SectionId::KERNEL, kernel_package.to_bytes())); + } + //normalize_library_exports(package)?; + + Ok(()) +} + +/// Attach serialized account component metadata to the assembled package. +fn attach_account_component_metadata( + package: &mut Package, + account_component_metadata_bytes: Option<&[u8]>, +) { + use miden_mast_package::{Section, SectionId}; + if let Some(bytes) = account_component_metadata_bytes { + package + .sections + .push(Section::new(SectionId::ACCOUNT_COMPONENT_METADATA, bytes.to_vec())); + } +} + +/// Rewrite library exports to preserve Wasm component-model interface names. +#[cfg(false)] +fn normalize_library_exports(package: &mut Package) -> Result<(), Report> { + if !package.kind.is_library() { + return Ok(()); + } + + let dependencies = package.manifest.dependencies().cloned().collect::>(); + let exports = recover_wasm_cm_interfaces(package); + let manifest = miden_mast_package::PackageManifest::new(exports) + .and_then(|manifest| manifest.with_dependencies(dependencies)) + .map_err(Report::msg)?; + package.manifest = manifest; + Ok(()) +} + +/// Extend the package advice map with the component's rodata segments. +fn extend_rodata_advice_map(package: &mut Package, rodata: &[midenc_codegen_masm::Rodata]) { + if rodata.is_empty() { + return; + } + + let advice_map = rodata.iter().map(|segment| (segment.digest, segment.to_elements())).collect(); + package.extend_advice_map(advice_map); +} + +/// Try to recognize Wasm CM interfaces and transform those exports to have Wasm interface encoded +/// as module name. +/// +/// Temporary workaround for: +/// +/// 1. Temporary exporting multiple interfaces from the same(Wasm core) module (an interface is +/// encoded in the function name) +/// +/// 2. Assembler using the current module name to generate exports. +/// +#[cfg(false)] +fn recover_wasm_cm_interfaces(package: &Package) -> Vec { + use miden_assembly::{Span, ast as masm}; + + let mut exports = Vec::with_capacity(package.manifest.num_exports()); + for export in package.manifest.exports() { + let Some(proc_export) = export.as_procedure() else { + exports.push(export.clone()); + continue; + }; + + log::debug!(target: "assemble", "recovering wasm cm interface for export '{}'", &proc_export.path); + + let Some(proc_name) = proc_export.path.last() else { + exports.push(export.clone()); + continue; + }; + + if proc_name.starts_with("cabi") { + // Preserve intrinsics modules and internal Wasm CM `cabi_*` functions + exports.push(export.clone()); + continue; + } + + if let Some((component, interface)) = proc_name.rsplit_once('/') { + // Wasm CM interface + let (interface, function) = + interface.rsplit_once('#').expect("invalid wasm component model identifier"); + log::debug!(target: "assemble", "recovering wasm cm interface: component is '{component}', interface is '{interface}', function is '{function}'"); + + // Derive a new module path in which the Wasm CM interface name is encoded as part of + // the module path, rather than being encoded in the procedure name. + let mut module_path = component.to_string(); + module_path.push_str("::"); + module_path.push_str(interface); + let module_path = masm::Path::new(&module_path); + + let name = masm::ProcedureName::from_raw_parts(masm::Ident::from_raw_parts( + Span::unknown(Arc::from(function)), + )); + let qualified = masm::QualifiedProcedureName::new(module_path, name); + let qualified = qualified.into_inner(); + log::debug!(target: "assemble", "new export path is '{qualified}'"); + + let mut new_export = proc_export.clone(); + new_export.path = qualified; + + exports.push(PackageExport::Procedure(new_export)); + } else { + // Non-Wasm CM interface, preserve as is + exports.push(export.clone()); + } + } + exports +} diff --git a/midenc-compile/src/stages/cargo.rs b/midenc-compile/src/stages/cargo.rs index e5a471de7..ce7e2ea7c 100644 --- a/midenc-compile/src/stages/cargo.rs +++ b/midenc-compile/src/stages/cargo.rs @@ -47,7 +47,6 @@ pub mod support { use midenc_session::{ InputFile, RemapPathPrefix, miden_project, registry::HybridPackageRegistry, }; - use tempfile::TempDir; use crate::{CompilerResult, cargo::CargoOptions}; @@ -201,19 +200,19 @@ pub mod support { } fn build_project( - project: miden_project::Project, + _project: miden_project::Project, compiler_opts: &midenc_session::Options, cargo_opts: &CargoOptions, - registry: Option<&mut HybridPackageRegistry>, - source_manager: Arc, + _registry: Option<&mut HybridPackageRegistry>, + _source_manager: Arc, ) -> CompilerResult { - let package = project.package(); - - let tmp = TempDir::new() + /* + let tmp = tempfile::TempDir::new() .map_err(|err| Report::msg(format!("could not create temporary directory: {err}")))?; let mut default_registry = midenc_session::registry::HybridPackageRegistry::new(compiler_opts)?; let registry = registry.unwrap_or(&mut default_registry); + let package = project.package(); let dependency_graph = miden_project::ProjectDependencyGraphBuilder::new(&*registry) .with_source_manager(source_manager.clone()) .with_git_cache_root( @@ -224,8 +223,8 @@ pub mod support { .join("git") .join("checkouts"), ); - let dependency_graph = dependency_graph.build(package.clone())?; + let dependency_graph = dependency_graph.build(package.clone())?; crate::cargo::load_cargo_based_source_dependencies( &package, &dependency_graph, @@ -234,6 +233,7 @@ pub mod support { cargo_opts, source_manager, )?; + */ let rustup_toolchain = crate::rust::rustup_toolchain(); let cargo_build_args = build_cargo_args(cargo_opts); diff --git a/midenc-compile/src/stages/codegen.rs b/midenc-compile/src/stages/codegen.rs index d9182b821..7af3a4be8 100644 --- a/midenc-compile/src/stages/codegen.rs +++ b/midenc-compile/src/stages/codegen.rs @@ -1,13 +1,6 @@ use alloc::{boxed::Box, sync::Arc, vec::Vec}; -use miden_assembly::ast::Module; -use midenc_codegen_masm::{ - self as masm, LegalizeForMasm, MasmComponent, ToMasmComponent, - intrinsics::{ - ADVICE_INTRINSICS_MODULE_NAME, I32_INTRINSICS_MODULE_NAME, I64_INTRINSICS_MODULE_NAME, - MEM_INTRINSICS_MODULE_NAME, - }, -}; +use midenc_codegen_masm::{LegalizeForMasm, MasmComponent, ToMasmComponent}; use midenc_hir::pass::{AnalysisManager, IRPrintingConfig, Nesting, OpPassManager, PassManager}; use midenc_session::OutputType; @@ -17,6 +10,40 @@ pub struct CodegenOutput { pub component: Arc, /// The serialized AccountComponentMetadata (name, description, storage layout, etc.) pub account_component_metadata_bytes: Option>, + #[cfg(feature = "std")] + pub source_provenance: miden_assembly::ProjectSourceProvenanceInputs, +} + +impl Clone for CodegenOutput { + fn clone(&self) -> Self { + Self { + component: self.component.clone(), + account_component_metadata_bytes: self.account_component_metadata_bytes.clone(), + source_provenance: self.source_provenance(), + } + } +} + +impl CodegenOutput { + #[cfg(feature = "std")] + pub fn source_provenance(&self) -> miden_assembly::ProjectSourceProvenanceInputs { + use miden_assembly::{ProjectSourceProvenanceInputs, SourceFileProvenance}; + + let ProjectSourceProvenanceInputs { root, support } = &self.source_provenance; + ProjectSourceProvenanceInputs { + root: SourceFileProvenance { + path: root.path.clone(), + content: root.content.clone(), + }, + support: support + .iter() + .map(|sfp| SourceFileProvenance { + path: sfp.path.clone(), + content: sfp.content.clone(), + }) + .collect(), + } + } } /// Perform code generation on the possibly-linked output of previous stages @@ -35,6 +62,8 @@ impl Stage for CodegenStage { world, component, account_component_metadata_bytes, + #[cfg(feature = "std")] + source_provenance, } = input; log::debug!("lowering miden component to masm"); @@ -43,7 +72,7 @@ impl Stage for CodegenStage { legalize_for_masm(anchor, context.clone())?; let analysis_manager = AnalysisManager::new(anchor, None); - let mut masm_component = match component { + let masm_component = match component { Some(component) => { component.borrow().to_masm_component(analysis_manager).map(Box::new)? } @@ -52,15 +81,6 @@ impl Stage for CodegenStage { let session = context.session(); - // Ensure intrinsics modules are linked - for intrinsics_module in required_intrinsics_modules(session) { - log::debug!( - "adding required intrinsic module '{}' to masm program", - intrinsics_module.path() - ); - masm_component.modules.push(intrinsics_module); - } - if session.should_emit(OutputType::Masm) { session.emit(OutputMode::Text, masm_component.as_ref()).into_diagnostic()?; } @@ -73,6 +93,8 @@ impl Stage for CodegenStage { Ok(CodegenOutput { component: Arc::from(masm_component), account_component_metadata_bytes, + #[cfg(feature = "std")] + source_provenance, }) } } @@ -86,20 +108,3 @@ fn legalize_for_masm(anchor: midenc_hir::OperationRef, context: Rc) -> Ok(()) } - -fn required_intrinsics_modules(session: &Session) -> impl IntoIterator> { - [ - masm::intrinsics::load(MEM_INTRINSICS_MODULE_NAME, session.source_manager.clone()) - .map(Arc::from) - .expect("undefined intrinsics module"), - masm::intrinsics::load(I32_INTRINSICS_MODULE_NAME, session.source_manager.clone()) - .map(Arc::from) - .expect("undefined intrinsics module"), - masm::intrinsics::load(I64_INTRINSICS_MODULE_NAME, session.source_manager.clone()) - .map(Arc::from) - .expect("undefined intrinsics module"), - masm::intrinsics::load(ADVICE_INTRINSICS_MODULE_NAME, session.source_manager.clone()) - .map(Arc::from) - .expect("undefined intrinsics module"), - ] -} diff --git a/midenc-compile/src/stages/mod.rs b/midenc-compile/src/stages/mod.rs index adc9c5e77..70690533d 100644 --- a/midenc-compile/src/stages/mod.rs +++ b/midenc-compile/src/stages/mod.rs @@ -23,8 +23,8 @@ pub use self::{ cargo::CargoBuildStage, codegen::{CodegenOutput, CodegenStage}, parse::{ - MidenComponent, ParseComponentStage, ParseHirStage, ParseMasmStage, ParseRustStage, - ParseWasmStage, + MasmSources, MidenComponent, ParseComponentStage, ParseHirStage, ParseMasmStage, + ParseRustStage, ParseWasmStage, }, rewrite::ApplyRewritesStage, }; @@ -68,6 +68,15 @@ pub(crate) fn cargo_project_pipeline( wasm_pipeline(wasm, context) } +pub(crate) fn cargo_project_codegen_pipeline( + input: midenc_session::InputFile, + context: Rc, +) -> CompilerResult { + let mut build_project_stage = CargoBuildStage; + let wasm = build_project_stage.run(input, context.clone())?; + wasm_codegen_pipeline(wasm, context) +} + fn hir_pipeline( input: midenc_session::InputFile, context: Rc, @@ -94,6 +103,18 @@ fn wasm_pipeline( stages.run(input, context) } +fn wasm_codegen_pipeline( + input: midenc_session::InputFile, + context: Rc, +) -> CompilerResult { + let mut stages = ParseWasmStage + .next(ComponentAnalysisStage) + .map(apply_rewrites_to_miden_component) + .next(CodegenStage); + + stages.run(input, context) +} + fn masm_source_pipeline( input: midenc_session::InputFile, context: Rc, @@ -123,7 +144,7 @@ fn masm_project_pipeline( dyn FnMut( Option, Rc, - ) -> CompilerResult>, + ) -> CompilerResult>, >; let mut stages = maybe_parse_masm_stage.next(MasmAnalysisStage).next(AssembleProjectStage); @@ -188,11 +209,25 @@ pub fn extract_miden_component_or_bail( op: midenc_hir::OperationRef, context: Rc, ) -> CompilerResult { + #[cfg(feature = "std")] + use miden_assembly::{ProjectSourceProvenanceInputs, SourceFileProvenance}; + + #[cfg(feature = "std")] + let source_provenance = ProjectSourceProvenanceInputs { + root: SourceFileProvenance { + path: std::path::PathBuf::from("mod.hir").into_boxed_path(), + content: alloc::string::String::new().into_boxed_str(), + }, + support: Default::default(), + }; + if let Ok(world) = op.try_downcast_op::() { Ok(MidenComponent { world, component: None, account_component_metadata_bytes: None, + #[cfg(feature = "std")] + source_provenance, }) } else if let Ok(component) = op.try_downcast_op::() { let world = ensure_world_for_operation(op, context.clone())?; @@ -200,6 +235,8 @@ pub fn extract_miden_component_or_bail( world, component: Some(component), account_component_metadata_bytes: None, + #[cfg(feature = "std")] + source_provenance, }) } else if let Ok(module) = op.try_downcast_op::() { if let Some(parent) = op.parent_op() { @@ -209,12 +246,16 @@ pub fn extract_miden_component_or_bail( world, component: Some(component), account_component_metadata_bytes: None, + #[cfg(feature = "std")] + source_provenance, }) } else if let Ok(world) = parent.try_downcast_op::() { Ok(MidenComponent { world, component: None, account_component_metadata_bytes: None, + #[cfg(feature = "std")] + source_provenance, }) } else { Err(Report::msg(format!( @@ -228,6 +269,8 @@ pub fn extract_miden_component_or_bail( world, component: None, account_component_metadata_bytes: None, + #[cfg(feature = "std")] + source_provenance, }) } } else { diff --git a/midenc-compile/src/stages/parse.rs b/midenc-compile/src/stages/parse.rs index d78dabed2..169694cf8 100644 --- a/midenc-compile/src/stages/parse.rs +++ b/midenc-compile/src/stages/parse.rs @@ -5,7 +5,7 @@ mod wasm; #[cfg(feature = "std")] use alloc::{borrow::Cow, format, rc::Rc}; -use alloc::{borrow::ToOwned, boxed::Box, vec::Vec}; +use alloc::{borrow::ToOwned, string::String, vec::Vec}; use miden_mast_package::TargetType; use midenc_hir::{ @@ -21,15 +21,45 @@ use midenc_session::{ }; pub use self::{ - hir::ParseHirStage, masm::ParseMasmStage, rust::ParseRustStage, wasm::ParseWasmStage, + hir::ParseHirStage, + masm::{MasmSources, ParseMasmStage}, + rust::ParseRustStage, + wasm::ParseWasmStage, }; use crate::{CompilerResult, Stage}; -#[derive(Clone)] pub struct MidenComponent { pub world: builtin::WorldRef, pub component: Option, pub account_component_metadata_bytes: Option>, + #[cfg(feature = "std")] + pub source_provenance: miden_assembly::ProjectSourceProvenanceInputs, +} + +impl Clone for MidenComponent { + fn clone(&self) -> Self { + Self { + world: self.world, + component: self.component, + account_component_metadata_bytes: self.account_component_metadata_bytes.clone(), + #[cfg(feature = "std")] + source_provenance: miden_assembly::ProjectSourceProvenanceInputs { + root: miden_assembly::SourceFileProvenance { + path: self.source_provenance.root.path.clone(), + content: self.source_provenance.root.content.clone(), + }, + support: self + .source_provenance + .support + .iter() + .map(|sfp| miden_assembly::SourceFileProvenance { + path: sfp.path.clone(), + content: sfp.content.clone(), + }) + .collect(), + }, + } + } } /// Parses any input that can be converted to a [MidenComponent] @@ -44,6 +74,22 @@ impl Stage for ParseComponentStage { let file_type = input.file_type(); match file_type { + #[cfg(feature = "std")] + FileType::Hir => { + use miden_assembly::SourceFileProvenance; + let provenance = match &input.file { + InputType::Real(path) => SourceFileProvenance::from_path(path.clone())?, + InputType::Stdin { name, input } => SourceFileProvenance { + path: name.as_path().to_path_buf().into_boxed_path(), + content: String::from_utf8_lossy(input).into_owned().into_boxed_str(), + }, + }; + let mut stage = ParseHirStage.map(super::extract_miden_component_or_bail); + let mut component = stage.run(input, context)?; + component.source_provenance.root = provenance; + Ok(component) + } + #[cfg(not(feature = "std"))] FileType::Hir => { let mut stage = ParseHirStage.map(super::extract_miden_component_or_bail); stage.run(input, context) diff --git a/midenc-compile/src/stages/parse/masm.rs b/midenc-compile/src/stages/parse/masm.rs index fec701aa6..137a63442 100644 --- a/midenc-compile/src/stages/parse/masm.rs +++ b/midenc-compile/src/stages/parse/masm.rs @@ -1,15 +1,22 @@ use miden_assembly::ProjectSourceInputs; +use midenc_hir::Spanned; use midenc_session::OutputMode; use super::*; use crate::CompilerStopped; +pub struct MasmSources { + pub inputs: ProjectSourceInputs, + #[cfg(feature = "std")] + pub provenance: miden_assembly::ProjectSourceProvenanceInputs, +} + /// Parses Miden Assembly sources for project assembly pub struct ParseMasmStage; impl Stage for ParseMasmStage { type Input = InputFile; - type Output = ProjectSourceInputs; + type Output = MasmSources; fn run(&mut self, input: Self::Input, context: Rc) -> CompilerResult { let file_type = input.file_type(); @@ -18,7 +25,7 @@ impl Stage for ParseMasmStage { "invalid input file: expected '.masm', got {file_type}" ))); } - let module = match input.file { + let inputs = match input.file { #[cfg(not(feature = "std"))] InputType::Real(_path) => unimplemented!(), #[cfg(feature = "std")] @@ -28,16 +35,43 @@ impl Stage for ParseMasmStage { } }; - context.session().emit(OutputMode::Text, &module).into_diagnostic()?; + #[cfg(feature = "std")] + let provenance = { + use alloc::string::ToString; + let root = { + let source_file = + context.session().source_manager.get(inputs.root.span().source_id()).unwrap(); + miden_assembly::SourceFileProvenance { + path: source_file.uri().to_path().unwrap().into_boxed_path(), + content: source_file.as_str().to_string().into_boxed_str(), + } + }; + let mut support = Vec::with_capacity(inputs.support.len()); + for module in inputs.support.iter() { + let source_file = + context.session().source_manager.get(module.span().source_id()).unwrap(); + support.push(miden_assembly::SourceFileProvenance { + path: source_file.uri().to_path().unwrap().into_boxed_path(), + content: source_file.as_str().to_string().into_boxed_str(), + }); + } + miden_assembly::ProjectSourceProvenanceInputs { root, support } + }; + + for module in inputs.support.iter() { + context.session().emit(OutputMode::Text, module).into_diagnostic()?; + } + context.session().emit(OutputMode::Text, &inputs.root).into_diagnostic()?; if context.session().parse_only() { log::debug!("stopping compiler early (parse-only=true)"); return Err(CompilerStopped("parse-only").into()); } - Ok(ProjectSourceInputs { - root: module, - support: Default::default(), + Ok(MasmSources { + inputs, + #[cfg(feature = "std")] + provenance, }) } } @@ -48,34 +82,25 @@ impl ParseMasmStage { &self, path: &Path, context: Rc, - ) -> CompilerResult> { - use miden_assembly::ast::{self, Ident, ModuleKind}; + ) -> CompilerResult { + use miden_assembly::ast::ModuleKind; use miden_mast_package::TargetType; - // Construct library path for MASM module - let module_name = Ident::new(path.file_stem().unwrap().to_str().unwrap()) - .into_diagnostic() - .wrap_err_with(|| { - format!( - "failed to construct valid module identifier from path '{}'", - path.display() - ) - })?; - - // Parse AST let kind = match context.session().options.target_type.unwrap_or_default() { TargetType::Executable => ModuleKind::Executable, TargetType::Kernel => ModuleKind::Kernel, _ => ModuleKind::Library, }; - let mut parser = ast::Module::parser(kind); - let ast = parser.parse_file( - module_name.as_str(), + let warnings_as_errors = + context.session().options.diagnostics.warnings.warnings_as_errors(); + let (root, support) = miden_assembly_syntax::parser::read_modules_from_root( path, - context.session().source_manager.clone(), + None, + Some(kind), + context.source_manager(), + warnings_as_errors, )?; - - Ok(ast) + Ok(ProjectSourceInputs { root, support }) } fn parse_masm_from_bytes( @@ -83,7 +108,7 @@ impl ParseMasmStage { name: &str, bytes: &[u8], context: Rc, - ) -> CompilerResult> { + ) -> CompilerResult { use miden_assembly::{ PathBuf as LibraryPath, ast::{self, ModuleKind}, @@ -102,9 +127,15 @@ impl ParseMasmStage { TargetType::Kernel => ModuleKind::Kernel, _ => ModuleKind::Library, }; - let mut parser = ast::Module::parser(kind); - let ast = - parser.parse_str(name.as_path(), source, context.session().source_manager.clone())?; - Ok(ast) + let mut parser = ast::Module::parser(Some(kind)); + let root = parser.parse_str( + Some(name.as_path()), + source, + context.session().source_manager.clone(), + )?; + Ok(ProjectSourceInputs { + root, + support: Default::default(), + }) } } diff --git a/midenc-compile/src/stages/parse/wasm.rs b/midenc-compile/src/stages/parse/wasm.rs index 82b525a85..7c28dbfd3 100644 --- a/midenc-compile/src/stages/parse/wasm.rs +++ b/midenc-compile/src/stages/parse/wasm.rs @@ -43,9 +43,10 @@ impl Stage for ParseWasmStage { }; #[cfg(feature = "std")] - { - self.emit_wat_for_wasm_input(&input, context.session())?; - } + let source_provenance = self.source_provenance_from_wasm_input(&input)?; + + #[cfg(feature = "std")] + self.emit_wat_for_wasm_input(&input, context.session())?; // Parse and translate the component WebAssembly using the constructed World let world = { @@ -94,6 +95,8 @@ impl Stage for ParseWasmStage { world, component: Some(component), account_component_metadata_bytes, + #[cfg(feature = "std")] + source_provenance, }) } } @@ -127,6 +130,43 @@ impl ParseWasmStage { Ok(()) } + #[cfg(feature = "std")] + fn source_provenance_from_wasm_input( + &self, + input: &InputType, + ) -> CompilerResult { + use miden_assembly::{ProjectSourceProvenanceInputs, SourceFileProvenance}; + + let wasm_bytes: Cow<'_, [u8]> = match input { + InputType::Real(path) => { + Cow::Owned(std::fs::read(path).into_diagnostic().wrap_err_with(|| { + format!("failed to read wasm input from '{}'", path.display()) + })?) + } + InputType::Stdin { input, .. } => Cow::Borrowed(input), + }; + + let content = wasm_to_wat(wasm_bytes.as_ref()) + .into_diagnostic() + .wrap_err("failed to convert wasm to wat")? + .into_boxed_str(); + + let root = match input { + InputType::Real(path) => SourceFileProvenance { + path: path.clone().into_boxed_path(), + content, + }, + InputType::Stdin { name, .. } => SourceFileProvenance { + path: name.as_path().to_path_buf().into_boxed_path(), + content, + }, + }; + Ok(ProjectSourceProvenanceInputs { + root, + support: Default::default(), + }) + } + #[cfg(feature = "std")] fn parse_wasm_from_wat_file(&self, path: &Path) -> CompilerResult { let wasm = wat::parse_file(path).into_diagnostic().wrap_err("failed to parse wat")?; diff --git a/midenc-compile/tests/codegen_legalization.rs b/midenc-compile/tests/codegen_legalization.rs index 7d43492df..60d27cc7f 100644 --- a/midenc-compile/tests/codegen_legalization.rs +++ b/midenc-compile/tests/codegen_legalization.rs @@ -1,5 +1,6 @@ -use std::rc::Rc; +use std::{path::Path, rc::Rc}; +use miden_assembly::{ProjectSourceProvenanceInputs, SourceFileProvenance}; use midenc_compile::{MidenComponent, Stage, stages::CodegenStage}; use midenc_dialect_hir::HirOpBuilder; use midenc_hir::{ @@ -72,5 +73,12 @@ fn build_test_component( world, component: Some(component), account_component_metadata_bytes: None, + source_provenance: ProjectSourceProvenanceInputs { + root: SourceFileProvenance { + path: Path::new(file!()).to_path_buf().into_boxed_path(), + content: String::new().into_boxed_str(), + }, + support: Default::default(), + }, } } diff --git a/midenc-session/src/diagnostics.rs b/midenc-session/src/diagnostics.rs index 0a391d9e1..d6d47442a 100644 --- a/midenc-session/src/diagnostics.rs +++ b/midenc-session/src/diagnostics.rs @@ -39,7 +39,7 @@ impl DiagnosticsConfig { pub struct DiagnosticsHandler { emitter: Arc, - source_manager: Arc, + source_manager: Arc, err_count: AtomicUsize, verbosity: Verbosity, warnings: Warnings, @@ -49,8 +49,7 @@ pub struct DiagnosticsHandler { impl Default for DiagnosticsHandler { fn default() -> Self { let emitter = Arc::new(DefaultEmitter::new(ColorChoice::Auto)); - let source_manager = - Arc::new(DefaultSourceManager::default()) as Arc; + let source_manager = Arc::new(DefaultSourceManager::default()) as Arc; Self::new(Default::default(), source_manager, emitter) } } @@ -65,7 +64,7 @@ impl DiagnosticsHandler { /// [Emitter] implementation. pub fn new( config: DiagnosticsConfig, - source_manager: Arc, + source_manager: Arc, emitter: Arc, ) -> Self { let warnings = match config.warnings { @@ -84,7 +83,7 @@ impl DiagnosticsHandler { } #[inline] - pub fn source_manager(&self) -> Arc { + pub fn source_manager(&self) -> Arc { self.source_manager.clone() } diff --git a/midenc-session/src/lib.rs b/midenc-session/src/lib.rs index 4d856fddf..70764f41f 100644 --- a/midenc-session/src/lib.rs +++ b/midenc-session/src/lib.rs @@ -40,20 +40,21 @@ pub const MIDENC_BUILD_VERSION: &str = env!("MIDENC_BUILD_VERSION"); /// The git revision associated with the current compiler toolchain pub const MIDENC_BUILD_REV: &str = env!("MIDENC_BUILD_REV"); -use heck::ToKebabCase; pub use miden_assembly_syntax; pub use miden_mast_package::PackageId; pub use miden_package_registry; pub use miden_project; +use miden_project::Uri; use midenc_hir_symbol::Symbol; +use self::diagnostics::IntoDiagnostic; pub use self::{ color::ColorChoice, diagnostics::{DiagnosticsHandler, Emitter, Report, SourceManager}, emit::{Emit, Writer}, flags::{ArgMatches, CompileFlag, CompileFlags, FlagAction}, inputs::{FileName, FileType, InputFile, InputType, InvalidInputError}, - libs::{LibraryPath, LibraryPathComponent, LinkLibrary, STDLIB, add_target_link_libraries}, + libs::{LibraryPath, LibraryPathComponent, LinkLibrary, add_target_link_libraries}, options::*, outputs::{OutputFile, OutputFiles, OutputMode, OutputType, OutputTypeSpec, OutputTypes}, path::{Path, PathBuf}, @@ -70,7 +71,7 @@ pub struct Session { /// Configuration for the current compiler session pub options: Box, /// The current source manager - pub source_manager: Arc, + pub source_manager: Arc, /// The current diagnostics handler pub diagnostics: Arc, /// The inputs being compiled @@ -131,30 +132,23 @@ impl Session { }; options.target_type = Some(target_type); } - let is_executable_target = - options.target_type.is_some_and(|ty| ty.is_executable()); - let project = { - let package = project.package(); - let has_virtual_executable_target = - package.executable_targets().iter().any(|target| { - target - .path - .as_deref() - .is_some_and(|path| path.as_str() == "") - }); - - if has_virtual_executable_target - || (is_cargo_project && is_executable_target) - { - // HACK(pauls): Workaround bug with virtual bin targets until - // 0.24.x. See https://github.com/0xMiden/miden-vm/pull/3156 - miden_project::Project::Package(fixup_targets( - package, - is_cargo_project && is_executable_target, - )) - } else { - project + let project = if is_cargo_project + && options.target_type.is_some_and(|ty| ty.is_executable()) + { + match project { + miden_project::Project::Package(pkg) => { + miden_project::Project::Package(fixup_cargo_target(pkg)) + } + miden_project::Project::WorkspacePackage { + package: pkg, + workspace, + } => miden_project::Project::WorkspacePackage { + package: fixup_cargo_target(pkg), + workspace, + }, } + } else { + project }; let pkgid = match &project { miden_project::Project::Package(pkg) @@ -239,14 +233,20 @@ impl Session { }); log::debug!(target: "driver", "artifact name set to '{name}'"); - let mut default_target = miden_project::Target::r#virtual( + let namespace = miden_assembly_syntax::Path::new(name.as_str()) + .to_absolute() + .into_diagnostic()? + .into_owned(); + let default_target = miden_project::Target::new( options.target_type.unwrap_or_default(), name.clone(), - miden_assembly_syntax::Path::new(name.as_str()).to_absolute().into_owned(), + namespace, + match &input.file { + InputType::Real(path) => Uri::from(path.as_path()), + InputType::Stdin { name, .. } => Uri::new(name.as_str()), + }, ); if let InputType::Real(path) = &input.file { - default_target.path = Some(Span::unknown(miden_project::Uri::from(path.as_path()))); - #[cfg(feature = "std")] { let tmp = std::env::temp_dir().canonicalize().unwrap(); @@ -294,7 +294,7 @@ impl Session { project: miden_project::Project, mut options: Box, emitter: Option>, - source_manager: Arc, + source_manager: Arc, ) -> Self { log::debug!(target: "driver", "creating session {name}"); if log::log_enabled!(target: "driver", log::Level::Debug) { @@ -554,6 +554,57 @@ impl Session { } } +pub fn fixup_cargo_target(package: Arc) -> Arc { + let mut prev_targets = package.executable_targets().iter(); + let mut default_target = match package.library_target().cloned() { + Some(target) => target.into_inner(), + None => prev_targets.next().unwrap().inner().clone(), + }; + rewrite_component_target_namespace(&mut default_target, &package); + let new_package = miden_project::Package::new(package.name().into_inner(), default_target) + .with_version(package.version().into_inner().clone()) + .with_dependencies(package.dependencies().iter().cloned()) + .with_lints(package.lints().clone()) + .with_metadata(package.metadata().clone()) + .with_targets(prev_targets.map(|t| { + let mut t = t.inner().clone(); + rewrite_component_target_namespace(&mut t, &package); + t + })); + let new_package = package + .profiles() + .iter() + .cloned() + .fold(new_package, |pkg, profile| pkg.with_profile(profile)); + new_package.into() +} + +fn rewrite_component_target_namespace( + target: &mut miden_project::Target, + package: &miden_project::Package, +) { + use heck::ToKebabCase; + use miden_assembly_syntax::ast; + use miden_debug_types::Span; + + let namespace_id = target.namespace.to_relative().as_ident().map(|id| id.into_inner()); + if target.ty.is_executable() + || namespace_id.as_deref().is_none_or(|id| package.name().inner() != id) + { + return; + } + + // If the namespace is the same as the package name, then the default + // namespace is being used, and we should rewrite it to use the correct + // namespace, derived from the component id + let component_namespace = package.name().to_kebab_case(); + let component_id = format!( + "::miden:{component_namespace}/miden-{component_namespace}@{}", + package.version() + ); + target.namespace = Span::unknown(ast::Path::new(&component_id).into()); +} + fn is_cargo_project_input(input: &InputFile) -> bool { matches!( &input.file, @@ -598,80 +649,6 @@ fn infer_cargo_project_entrypoint( Ok(()) } -pub fn fixup_targets( - package: Arc, - is_cargo_project: bool, -) -> Arc { - // Find executable targets whose `path` is ``, and strip the path out - this - // is required due to a bug in the project manifest parser that requires executable - // targets to have a `path`, but virtual targets don't have paths - let requires_virtual_rewrite = package - .executable_targets() - .iter() - .any(|t| t.path.as_deref().is_some_and(|path| path.as_str() == "")); - if requires_virtual_rewrite || is_cargo_project { - // We have to rewrite this package without the path - let mut prev_targets = package.executable_targets().iter(); - let mut default_target = match package.library_target().cloned() { - Some(target) => target.inner().clone(), - None => prev_targets.next().unwrap().inner().clone(), - }; - if is_cargo_project { - rewrite_component_target_namespace(&mut default_target, &package); - } - if default_target.path.as_deref().is_some_and(|p| p.as_str() == "") { - default_target.path = None; - } - let new_package = miden_project::Package::new(package.name().into_inner(), default_target) - .with_version(package.version().into_inner().clone()) - .with_dependencies(package.dependencies().iter().cloned()) - .with_lints(package.lints().clone()) - .with_metadata(package.metadata().clone()) - .with_targets(prev_targets.map(|t| { - let mut t = t.inner().clone(); - if t.path.as_deref().is_some_and(|p| p.as_str() == "") { - t.path = None; - } else if is_cargo_project { - rewrite_component_target_namespace(&mut t, &package); - } - t - })); - let new_package = package - .profiles() - .iter() - .cloned() - .fold(new_package, |pkg, profile| pkg.with_profile(profile)); - new_package.into() - } else { - package - } -} - -fn rewrite_component_target_namespace( - target: &mut miden_project::Target, - package: &miden_project::Package, -) { - use miden_assembly_syntax::ast; - use miden_debug_types::Span; - - let namespace_id = target.namespace.to_relative().as_ident().map(|id| id.into_inner()); - if target.ty.is_executable() - || namespace_id.as_deref().is_none_or(|id| package.name().inner() != id) - { - return; - } - - // If the namespace is the same as the package name, then the default - // namespace is being used, and we should rewrite it to use the correct - // namespace, derived from the component id - let component_namespace = package.name().to_kebab_case(); - let component_id = format!( - "::miden:{component_namespace}/miden-{component_namespace}@{}", - package.version() - ); - target.namespace = Span::unknown(ast::Path::new(&component_id).into()); -} - #[cfg(feature = "std")] fn create_target_dir(path: &Path) { std::fs::create_dir_all(path) diff --git a/midenc-session/src/libs.rs b/midenc-session/src/libs.rs index fb27cb8fb..33ffd5852 100644 --- a/midenc-session/src/libs.rs +++ b/midenc-session/src/libs.rs @@ -2,24 +2,18 @@ use alloc::{borrow::Cow, format, sync::Arc, vec::Vec}; #[cfg(feature = "std")] use alloc::{boxed::Box, string::ToString}; -pub use miden_assembly_syntax::{ - Library as CompiledLibrary, PathBuf as LibraryPath, PathComponent as LibraryPathComponent, -}; -#[cfg(feature = "std")] -use miden_core::serde::Deserializable; +pub use miden_assembly_syntax::{PathBuf as LibraryPath, PathComponent as LibraryPathComponent}; use miden_core_lib::CoreLibrary; #[cfg(feature = "std")] use miden_mast_package::Package; use miden_project::Linkage; -use midenc_hir_symbol::sync::LazyLock; +#[cfg(not(feature = "std"))] +use smallvec::SmallVec; #[cfg(feature = "std")] use crate::{Options, Path, diagnostics::IntoDiagnostic}; use crate::{PathBuf, diagnostics::Report}; -pub static STDLIB: LazyLock> = - LazyLock::new(|| Arc::new(CoreLibrary::default().into())); - /// A library requested by the user to be linked against during compilation #[derive(Debug, Clone, PartialEq, Eq)] pub struct LinkLibrary { @@ -54,7 +48,16 @@ impl LinkLibrary { } } - /// Construct a LinkLibrary for Miden base(rollup/tx kernel) library + /// Construct a LinkLibrary for the Miden transaction kernel library + pub fn tx_kernel() -> Self { + LinkLibrary { + name: "miden-tx-kernel".into(), + path: None, + linkage: Linkage::Dynamic, + } + } + + /// Construct a LinkLibrary for Miden protocol library (userspace) pub fn protocol() -> Self { LinkLibrary { name: "miden-protocol".into(), @@ -64,35 +67,17 @@ impl LinkLibrary { } #[cfg(not(feature = "std"))] - pub fn load(&self, _options: &Options) -> Result { + pub fn load(&self, _options: &Options) -> Result, Report> { // Handle libraries shipped with the compiler, or via Miden crates match self.name.as_ref() { - "std" | "core" => { - let lib = (*STDLIB).as_ref().clone(); - Ok(Package::from_library( - "miden-core".into(), - Version::new(0, 22, 3), - miden_project::TargetType::Library, - Arc::new(lib), - None, - ) - .into()) + "std" | "core" | "miden-core" => { + return Ok(CoreLibrary::default().package()); } "base" | "protocol" | "miden-protocol" => { - let lib = miden_protocol::ProtocolLib::default().as_ref().clone(); - return Ok(Package::from_library( - "miden-protocol".into(), - Version::new(0, 14, 0), - miden_project::TargetType::Library, - Arc::new(lib), - Some(Dependency { - name: "miden-core".into(), - kind: miden_project::TargetType::Library, - version: Version::new(0, 22, 3), - digest: *(*STDLIB).digest(), - }), - ) - .into()); + return Ok(miden_protocol::ProtocolLib::default().package()); + } + "tx-kernel" | "miden-tx-kernel" => { + return Ok(miden_protocol::transaction::TransactionKernel::package()); } name => Err(Report::msg(format!( "link library '{name}' cannot be loaded: compiler was built without standard \ @@ -103,8 +88,6 @@ impl LinkLibrary { #[cfg(feature = "std")] pub fn load(&self, options: &Options) -> Result, Report> { - use miden_mast_package::{Dependency, Version}; - if let Some(path) = self.path.as_deref() { return self.load_from_path(path, options); } @@ -112,31 +95,13 @@ impl LinkLibrary { // Handle libraries shipped with the compiler, or via Miden crates match self.name.as_ref() { "std" | "core" | "miden-core" => { - let lib = (*STDLIB).as_ref().clone(); - return Ok(Package::from_library( - "miden-core".into(), - Version::new(0, 22, 3), - miden_project::TargetType::Library, - Arc::new(lib), - None, - ) - .into()); + return Ok(CoreLibrary::default().package()); } "base" | "protocol" | "miden-protocol" => { - let lib = miden_protocol::ProtocolLib::default().as_ref().clone(); - return Ok(Package::from_library( - "miden-protocol".into(), - Version::new(0, 14, 0), - miden_project::TargetType::Library, - Arc::new(lib), - Some(Dependency { - name: "miden-core".into(), - kind: miden_project::TargetType::Library, - version: Version::new(0, 22, 3), - digest: *(*STDLIB).digest(), - }), - ) - .into()); + return Ok(miden_protocol::ProtocolLib::default().package()); + } + "tx-kernel" | "miden-tx-kernel" => { + return Ok(miden_protocol::transaction::TransactionKernel::package()); } _ => (), } @@ -203,7 +168,7 @@ impl LinkLibrary { #[cfg(feature = "std")] pub(crate) fn load_package_from_path(path: &Path) -> Result, Report> { let bytes = std::fs::read(path).into_diagnostic()?; - miden_mast_package::Package::read_from_bytes(&bytes) + miden_mast_package::Package::read_from_bytes_trusted(&bytes) .map_err(|e| { Report::msg(format!("failed to load Miden package from {}: {e}", path.display())) }) diff --git a/midenc-session/src/registry.rs b/midenc-session/src/registry.rs index 848484982..6a4891c4d 100644 --- a/midenc-session/src/registry.rs +++ b/midenc-session/src/registry.rs @@ -54,8 +54,11 @@ impl HybridPackageRegistry { // Load link libraries let core = crate::LinkLibrary::core(); + let tx_kernel = crate::LinkLibrary::tx_kernel(); let protocol = crate::LinkLibrary::protocol(); - let implied_libraries = vec![&core, &protocol]; + let implied_libraries = vec![&core, &tx_kernel, &protocol] + .into_iter() + .filter(|ll| !options.link_libraries.iter().any(|oll| oll.name == ll.name)); let link_libraries = options.link_libraries.iter().chain(implied_libraries); for lib in link_libraries { let package = lib.load(options)?; diff --git a/sdk/base-macros/src/fpi.rs b/sdk/base-macros/src/fpi.rs index 4709705a7..2816bbe76 100644 --- a/sdk/base-macros/src/fpi.rs +++ b/sdk/base-macros/src/fpi.rs @@ -9,7 +9,6 @@ use std::{ use heck::{ToKebabCase, ToSnakeCase}; use miden_assembly_syntax::ast::{Path as MasmPath, PathComponent}; use miden_mast_package::{Package, PackageExport}; -use miden_protocol::utils::serde::Deserializable; use proc_macro2::{Span, TokenStream as TokenStream2}; use quote::{ToTokens, quote}; use syn::{ @@ -736,7 +735,7 @@ fn load_dependency( format!("failed to read dependency package '{}': {err}", package_path.display()), ) })?; - let package = Package::read_from_bytes(&package_bytes).map_err(|err| { + let package = Package::read_from_bytes_trusted(&package_bytes).map_err(|err| { Error::new( Span::call_site(), format!("failed to deserialize dependency package '{}': {err}", package_path.display()), diff --git a/sdk/base-macros/src/wit_world.rs b/sdk/base-macros/src/wit_world.rs index f383945d0..afaded3d7 100644 --- a/sdk/base-macros/src/wit_world.rs +++ b/sdk/base-macros/src/wit_world.rs @@ -10,6 +10,7 @@ use std::{ use heck::ToKebabCase; use miden_assembly_syntax::ast; use miden_debug_types::DefaultSourceManager; +use miden_project::Uri; use proc_macro2::Span; use toml::{Value, value::Table}; use wit_bindgen_core::wit_parser::{ @@ -52,10 +53,11 @@ impl ProjectPackageMetadata { ) -> Result { let miden_project_toml_path = manifest_dir.join("miden-project.toml"); if !miden_project_toml_path.is_file() { - let target = miden_project::Target::r#virtual( - Default::default(), + let target = miden_project::Target::new( + miden_project::TargetType::Library, "default", ast::Path::new("empty"), + Uri::new("lib/src.rs"), ); return Ok(Self { manifest_dir, @@ -110,10 +112,11 @@ impl ManifestPackage { let miden_project_toml_path = manifest_dir.join("miden-project.toml"); if !miden_project_toml_path.is_file() { - let target = miden_project::Target::r#virtual( - Default::default(), + let target = miden_project::Target::new( + miden_project::TargetType::Library, "default", ast::Path::new("empty"), + Uri::new("lib/src.rs"), ); return Ok(Self { manifest_dir, @@ -667,6 +670,7 @@ mod tests { }; use miden_assembly_syntax::{ast, debuginfo::Span as MidenSpan}; + use miden_project::Uri; use proc_macro2::Span; use toml::{Value, value::Table}; @@ -729,10 +733,11 @@ world basic-wallet-world { package_path: PathBuf, wit_path: Option, ) -> Box { - let target = miden_project::Target::r#virtual( - Default::default(), + let target = miden_project::Target::new( + miden_project::TargetType::Library, "default", ast::Path::new("empty"), + Uri::new("lib/src.rs"), ); let dependency = miden_project::Dependency::new( MidenSpan::unknown(Arc::::from("basic-wallet")), @@ -806,7 +811,7 @@ version = "0.0.1" [[bin]] name = "script" -path = "" +path = "src/lib.rs" "#, ) .expect("executable project manifest fixture must be written"); diff --git a/sdk/field-repr/tests/src/lib.rs b/sdk/field-repr/tests/src/lib.rs index 1aecc440d..4b48a7e57 100644 --- a/sdk/field-repr/tests/src/lib.rs +++ b/sdk/field-repr/tests/src/lib.rs @@ -122,7 +122,7 @@ version = "0.0.1" [[bin]] name = "{name}" -path = "" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/sdk/field-repr/tests/src/onchain.rs b/sdk/field-repr/tests/src/onchain.rs index f9f453974..55855246e 100644 --- a/sdk/field-repr/tests/src/onchain.rs +++ b/sdk/field-repr/tests/src/onchain.rs @@ -107,7 +107,7 @@ fn test_felt_reader() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_word: [TestFelt; 4] = trace .read_from_rust_memory(out_byte_addr) .expect("Failed to read result from memory"); @@ -179,7 +179,7 @@ fn test_two_felts_struct_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 2); let mut reader = FeltReader::new(&result_felts); let result_struct = TwoFelts::from_felt_repr(&mut reader).unwrap(); @@ -255,7 +255,7 @@ fn test_five_felts_struct_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 5); let mut reader = FeltReader::new(&result_felts); let result_struct = FiveFelts::from_felt_repr(&mut reader).unwrap(); @@ -341,7 +341,7 @@ fn test_minimal_u64_bug() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 6); let mut reader = FeltReader::new(&result_felts); let result_struct = MinimalU64Bug::from_felt_repr(&mut reader).unwrap(); @@ -426,7 +426,7 @@ fn test_mixed_types_no_u64_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 6); let mut reader = FeltReader::new(&result_felts); let result_struct = MixedTypesNoU64::from_felt_repr(&mut reader).unwrap(); @@ -528,7 +528,7 @@ fn test_nested_struct_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 7); let mut reader = FeltReader::new(&result_felts); let result_struct = Outer::from_felt_repr(&mut reader).unwrap(); @@ -605,7 +605,7 @@ fn test_enum_unit_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 2); let mut reader = FeltReader::new(&result_felts); let result_struct = Wrapper::from_felt_repr(&mut reader).unwrap(); @@ -667,7 +667,7 @@ fn test_enum_tuple_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 3); let mut reader = FeltReader::new(&result_felts); let result_enum = MixedEnum::from_felt_repr(&mut reader).unwrap(); @@ -762,7 +762,7 @@ fn test_struct_with_enum_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 6); let mut reader = FeltReader::new(&result_felts); let result_struct = Outer::from_felt_repr(&mut reader).unwrap(); @@ -852,7 +852,7 @@ fn test_enum_nested_with_struct_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 7); let mut reader = FeltReader::new(&result_felts); let result_enum = Top::from_felt_repr(&mut reader).unwrap(); @@ -928,28 +928,30 @@ fn test_struct_with_option_round_trip() { miden_core::Felt::new_unchecked(out_byte_addr as u64), miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { - let result_felts = read_vec_felts(trace, out_byte_addr, serialized_none.len()); - let mut reader = FeltReader::new(&result_felts); - let result_struct = WithOption::from_felt_repr(&mut reader).unwrap(); - assert_eq!(result_struct, original_none, "Option round-trip (None) failed"); - Ok(()) - }) - .unwrap(); + let _: miden_core::Felt = + eval_package(package.clone(), initializers, &args, &test.session, |trace| { + let result_felts = read_vec_felts(trace, out_byte_addr, serialized_none.len()); + let mut reader = FeltReader::new(&result_felts); + let result_struct = WithOption::from_felt_repr(&mut reader).unwrap(); + assert_eq!(result_struct, original_none, "Option round-trip (None) failed"); + Ok(()) + }) + .unwrap(); // Case 2: Some let initializers = [Initializer::MemoryFelts { addr: in_elem_addr, felts: Cow::from(to_core_felts(&serialized_some)), }]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { - let result_felts = read_vec_felts(trace, out_byte_addr, serialized_some.len()); - let mut reader = FeltReader::new(&result_felts); - let result_struct = WithOption::from_felt_repr(&mut reader).unwrap(); - assert_eq!(result_struct, original_some, "Option round-trip (Some) failed"); - Ok(()) - }) - .unwrap(); + let _: miden_core::Felt = + eval_package(package.clone(), initializers, &args, &test.session, |trace| { + let result_felts = read_vec_felts(trace, out_byte_addr, serialized_some.len()); + let mut reader = FeltReader::new(&result_felts); + let result_struct = WithOption::from_felt_repr(&mut reader).unwrap(); + assert_eq!(result_struct, original_some, "Option round-trip (Some) failed"); + Ok(()) + }) + .unwrap(); } /// Test struct containing a `Vec` field for on-chain/off-chain round-trip tests. @@ -1005,7 +1007,7 @@ fn test_struct_with_vec_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 6); let mut reader = FeltReader::new(&result_felts); let result_struct = WithVec::from_felt_repr(&mut reader).unwrap(); @@ -1063,7 +1065,7 @@ fn test_tuple_struct_round_trip() { miden_core::Felt::new_unchecked(in_byte_addr as u64), ]; - let _: miden_core::Felt = eval_package(&package, initializers, &args, &test.session, |trace| { + let _: miden_core::Felt = eval_package(package, initializers, &args, &test.session, |trace| { let result_felts = read_vec_felts(trace, out_byte_addr, 3); let mut reader = FeltReader::new(&result_felts); let result_struct = TupleStruct::from_felt_repr(&mut reader).unwrap(); diff --git a/tests/fixtures/components/assert-debug-test/Cargo.lock b/tests/fixtures/components/assert-debug-test/Cargo.lock index 1da9a44c9..f63efb959 100644 --- a/tests/fixtures/components/assert-debug-test/Cargo.lock +++ b/tests/fixtures/components/assert-debug-test/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "assert-debug-test" version = "0.1.0" @@ -113,9 +104,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -129,30 +120,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -176,16 +143,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -214,39 +181,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -255,9 +228,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -266,13 +239,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/tests/fixtures/components/component-macros-account/Cargo.lock b/tests/fixtures/components/component-macros-account/Cargo.lock index 0ca430d59..eafc31a4e 100644 --- a/tests/fixtures/components/component-macros-account/Cargo.lock +++ b/tests/fixtures/components/component-macros-account/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -255,9 +228,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -266,13 +239,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/tests/fixtures/components/component-macros-account/miden-project.toml b/tests/fixtures/components/component-macros-account/miden-project.toml index c8a34166e..71451643a 100644 --- a/tests/fixtures/components/component-macros-account/miden-project.toml +++ b/tests/fixtures/components/component-macros-account/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:component-macros-account/my-account@0.1.0" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/fixtures/components/component-macros-note/miden-project.toml b/tests/fixtures/components/component-macros-note/miden-project.toml index ed424de0a..7d10612a9 100644 --- a/tests/fixtures/components/component-macros-note/miden-project.toml +++ b/tests/fixtures/components/component-macros-note/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "note" namespace = "miden:component-macros-note/miden-component-macros-note@0.1.0" +path = "src/lib.rs" [dependencies] component_macros = { path = "../component-macros-account" } diff --git a/tests/fixtures/components/cross-ctx-account-word-arg/Cargo.lock b/tests/fixtures/components/cross-ctx-account-word-arg/Cargo.lock index b1c7ef6bc..9de0f370d 100644 --- a/tests/fixtures/components/cross-ctx-account-word-arg/Cargo.lock +++ b/tests/fixtures/components/cross-ctx-account-word-arg/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -259,13 +232,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/tests/fixtures/components/cross-ctx-account-word-arg/miden-project.toml b/tests/fixtures/components/cross-ctx-account-word-arg/miden-project.toml index 860097699..2009c8710 100644 --- a/tests/fixtures/components/cross-ctx-account-word-arg/miden-project.toml +++ b/tests/fixtures/components/cross-ctx-account-word-arg/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:cross-ctx-account-word-arg/foo@1.0.0" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/fixtures/components/cross-ctx-account-word/Cargo.lock b/tests/fixtures/components/cross-ctx-account-word/Cargo.lock index b72333220..a396c3290 100644 --- a/tests/fixtures/components/cross-ctx-account-word/Cargo.lock +++ b/tests/fixtures/components/cross-ctx-account-word/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -259,13 +232,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/tests/fixtures/components/cross-ctx-account-word/miden-project.toml b/tests/fixtures/components/cross-ctx-account-word/miden-project.toml index 79405da02..1aadd977d 100644 --- a/tests/fixtures/components/cross-ctx-account-word/miden-project.toml +++ b/tests/fixtures/components/cross-ctx-account-word/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:cross-ctx-account-word/foo@1.0.0" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/fixtures/components/cross-ctx-account/Cargo.lock b/tests/fixtures/components/cross-ctx-account/Cargo.lock index db1fd619b..8ba139a5c 100644 --- a/tests/fixtures/components/cross-ctx-account/Cargo.lock +++ b/tests/fixtures/components/cross-ctx-account/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -259,13 +232,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/tests/fixtures/components/cross-ctx-account/miden-project.toml b/tests/fixtures/components/cross-ctx-account/miden-project.toml index 3b8971339..129a9400b 100644 --- a/tests/fixtures/components/cross-ctx-account/miden-project.toml +++ b/tests/fixtures/components/cross-ctx-account/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:cross-ctx-account/foo@1.0.0" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/fixtures/components/cross-ctx-note-word-arg/Cargo.lock b/tests/fixtures/components/cross-ctx-note-word-arg/Cargo.lock index 53d4176f8..126ed58f2 100644 --- a/tests/fixtures/components/cross-ctx-note-word-arg/Cargo.lock +++ b/tests/fixtures/components/cross-ctx-note-word-arg/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -259,13 +232,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/tests/fixtures/components/cross-ctx-note-word-arg/miden-project.toml b/tests/fixtures/components/cross-ctx-note-word-arg/miden-project.toml index 6f1806fae..be8a4ab39 100644 --- a/tests/fixtures/components/cross-ctx-note-word-arg/miden-project.toml +++ b/tests/fixtures/components/cross-ctx-note-word-arg/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "note" namespace = "miden:cross-ctx-note-word-arg/miden-cross-ctx-note-word-arg@0.1.0" +path = "src/lib.rs" [dependencies] cross-ctx-account-word-arg = { path = "../cross-ctx-account-word-arg" } diff --git a/tests/fixtures/components/cross-ctx-note-word/Cargo.lock b/tests/fixtures/components/cross-ctx-note-word/Cargo.lock index 2647c1c2d..ffeed5c18 100644 --- a/tests/fixtures/components/cross-ctx-note-word/Cargo.lock +++ b/tests/fixtures/components/cross-ctx-note-word/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -259,13 +232,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/tests/fixtures/components/cross-ctx-note-word/miden-project.toml b/tests/fixtures/components/cross-ctx-note-word/miden-project.toml index 19c1185e0..99824f7b5 100644 --- a/tests/fixtures/components/cross-ctx-note-word/miden-project.toml +++ b/tests/fixtures/components/cross-ctx-note-word/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "note" namespace = "miden:cross-ctx-note-word/miden-cross-ctx-note-word@0.1.0" +path = "src/lib.rs" [dependencies] cross-ctx-account-word = { path = "../cross-ctx-account-word" } diff --git a/tests/fixtures/components/cross-ctx-note/Cargo.lock b/tests/fixtures/components/cross-ctx-note/Cargo.lock index d5a50139c..b33cc496f 100644 --- a/tests/fixtures/components/cross-ctx-note/Cargo.lock +++ b/tests/fixtures/components/cross-ctx-note/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -259,13 +232,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -889,61 +843,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +944,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +953,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "b96b70c94b9dbb4a5dd9b03c52bf59d2fae254eb3fee4d9338889d8b5b82b9d9" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +964,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "1f1fc5bffab96b788524758d72c3457726357d1397874fac5ea841c6753b28e9" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +978,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "0d08306e2cc2fe3fa50aef600d434ad67a780807374cbda60fe4450ca4dad37e" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +995,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "2609e82bffb5d9e0d37591db837d659224dec4e82e13575daa6203280ba6c14f" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1014,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b442514653b58191f4ed0fd9ed14853d977bd44702cf04064e0eca7cc5c77b79" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1065,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "93203254d349bb0d7b4302853331c57b66a38bb4289fd2f56bee0c624b05e1a1" dependencies = [ "derive_more", "log", @@ -1144,23 +1077,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "7d062b282d71d2f847bf372a070929f8238c5199b9756e36d4d11f22acd58ad1" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1102,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1116,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-goldilocks 0.6.1", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1143,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1153,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "0f75a72da10ddadeb9a56542b675431b9cb93f5f25ea180ff8f0c311aafee922" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1176,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1212,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1236,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-util 0.6.1", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1273,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "942d744f2606ad9d146fc9d817fccc5913d9cc8b8b9e53666779f6c415a174ce" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1323,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "01202970e634f258502ed082d776c906289b6394eb5ac6b8067be0d7261a55a3" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1339,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "d2e4776a16e18c5317ae31cfb149f30a5b454a25b6e6fefd3ccee943227514db" dependencies = [ "itertools", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1358,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "7de67303b1f197ad49f023fad38ca1c4be8fb55ef6098c95f254b09a8ad6b040" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1375,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1389,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1420,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.1", + "p3-goldilocks 0.6.1", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.1", + "p3-field 0.6.1", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "dd084f8c9b3fbd173536a794850e1f29789eaeaff0f87e7852505f0fa9aa8556" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1476,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "048bbc18d446d1bc29b5e3ceac69000f1488a0ea1b15b18f48a0c702c2c1e706" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1487,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "98a713931678d5cdc23ab388cda048cc055079767780799b1d56f35b14ae6957" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1499,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "0a7fe110d6c5a90a27747d051c6d20cbbbc2d425c4276e96ce7bf82270d23cc3" dependencies = [ "lock_api", "loom", @@ -1538,17 +1511,18 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "c5bbb6c5af707266e4844460f5b55fc3c80d96a6a80b5e2a479d3cc95ad6d483" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", + "wincode", ] [[package]] @@ -1561,33 +1535,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1589,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1645,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1653,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "a3e18b22bf85451382098e54da526733c7f390f83d4141b3b8b93e98e805df55" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.1", + "p3-matrix 0.6.1", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "1be4f62b2e8cc5c9b2bc0bfb0b1a98dcaaa2f5c25b167f04c8ac6123537a604b" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", ] [[package]] @@ -1737,11 +1679,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272b2cfdcd3cf1affeab292aa7888ed7e4c156e0d5ffc19612c86553941db178" +dependencies = [ + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-monty-31 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tracing", ] @@ -1752,14 +1708,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dc420990b39aa4cdb78ac248d5defe97f760c1056aeceb160dcf3e62baf4eb7" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" @@ -1768,8 +1739,24 @@ checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ "itertools", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab37408c6c964e7e18c2305a15e31bc784aa20eb82eb513b4850aaa13ee445d3" +dependencies = [ + "itertools", + "num-bigint", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1783,14 +1770,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", +] + +[[package]] +name = "p3-goldilocks" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf8c89d8e833f93c488bd207786cd2d525a9f93de7f00363bca5652c88110a4" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.1", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "paste", "rand 0.10.2", "serde", @@ -1798,12 +1805,12 @@ dependencies = [ [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "1868cb9c763e5786f89d531e15b9899f9dd3ba96768645294b99fd9df861b530" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "tiny-keccak", ] @@ -1814,9 +1821,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c5e32dd61fa6341f8ce7abe2a97e9c3f8a93d9ea17bf4f675a2f6c987b658e" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1850,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c17330c94d04221bafe310d2c13afedd9d26bb57a63ec088b68b6cfe64b357" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ea6f54d4436d44f14841f78238b79199b83ea983a4a2fa3c4d16202f28f119" +dependencies = [ + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1849,15 +1890,15 @@ checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ "itertools", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1906,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12d3acd0d5f0ba2e8a1c903e80c92e778368b68c2e551a6c30fc3982a4be023e" +dependencies = [ + "itertools", + "num-bigint", + "p3-dft 0.6.1", + "p3-field 0.6.1", + "p3-matrix 0.6.1", + "p3-maybe-rayon 0.6.1", + "p3-mds 0.6.1", + "p3-poseidon1 0.6.1", + "p3-poseidon2 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cccfe593f85f87681f885c32f1447ea7afe12b3c9b11b4149c4534edacacb51" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", "rand 0.10.2", ] @@ -1882,10 +1959,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28bb6596f38c493d7a590e3b7d30eae86cbcfc325fb44f652ec3540933bcaa0" +dependencies = [ + "p3-field 0.6.1", + "p3-mds 0.6.1", + "p3-symmetric 0.6.1", + "p3-util 0.6.1", "rand 0.10.2", ] @@ -1896,8 +1986,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ "itertools", - "p3-field", - "p3-util", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284db1f284c4007eeb65cef4656426c93192af9bd9703b7f3afbf7faab274500" +dependencies = [ + "itertools", + "p3-field 0.6.1", + "p3-util 0.6.1", "serde", ] @@ -1911,6 +2013,16 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f241f0faa735a03b1af8c923b4728a9fac5e4a26e573a087656c354a784dfcae" +dependencies = [ + "serde", + "transpose", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2053,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2066,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2076,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2108,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2118,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2173,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2220,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2230,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2246,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2270,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2339,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2400,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2459,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2523,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2572,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2613,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2687,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2921,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2950,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2969,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3066,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d967db7705dc29120bb6e8ce5b5a2e27734ed5976d1c904e95bd238d1c3c5a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3197,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/tests/fixtures/components/cross-ctx-note/miden-project.toml b/tests/fixtures/components/cross-ctx-note/miden-project.toml index 1cb55db58..834abadd0 100644 --- a/tests/fixtures/components/cross-ctx-note/miden-project.toml +++ b/tests/fixtures/components/cross-ctx-note/miden-project.toml @@ -5,6 +5,7 @@ version = "0.1.0" [lib] kind = "note" namespace = "miden:cross-ctx-note/miden-cross-ctx-note@0.1.0" +path = "src/lib.rs" [dependencies] cross-ctx-account = { path = "../cross-ctx-account" } diff --git a/tests/fixtures/components/issue-invalid-stack-offset-movup/miden-project.toml b/tests/fixtures/components/issue-invalid-stack-offset-movup/miden-project.toml index 7c8166658..fd3b3864d 100644 --- a/tests/fixtures/components/issue-invalid-stack-offset-movup/miden-project.toml +++ b/tests/fixtures/components/issue-invalid-stack-offset-movup/miden-project.toml @@ -5,3 +5,4 @@ version = "0.1.0" [lib] kind = "note" namespace = "miden:issue-invalid-stack-offset-movup/miden-issue-invalid-stack-offset-movup@0.1.0" +path = "src/lib.rs" diff --git a/tests/integration-network/Cargo.toml b/tests/integration-network/Cargo.toml index 5e0d26a27..ef0e40c96 100644 --- a/tests/integration-network/Cargo.toml +++ b/tests/integration-network/Cargo.toml @@ -15,15 +15,15 @@ publish = false doctest = false [dependencies] -miden-client = { version = "0.15", features = ["std", "tonic", "testing"] } +miden-client = { version = "0.16.0-alpha.1", features = ["std", "tonic", "testing"] } miden-core.workspace = true miden-protocol = { workspace = true, features = ["std", "testing"] } -miden-standards = { workspace = true, features = ["std"] } -miden-testing = { version = "0.15", features = ["std"] } +miden-standards = { workspace = true, features = ["std", "testing"] } +miden-testing = { version = "0.16.0-alpha.2", features = ["std"] } miden-mast-package.workspace = true midenc-frontend-wasm.workspace = true midenc-expect-test.workspace = true -rand = "0.9" +rand = "0.10" tokio.workspace = true # For accessing shared compiler test builders and helpers diff --git a/tests/integration-network/src/mockchain/counter/rpo_auth.rs b/tests/integration-network/src/mockchain/counter/rpo_auth.rs index 73afed3a0..98db3a7b1 100644 --- a/tests/integration-network/src/mockchain/counter/rpo_auth.rs +++ b/tests/integration-network/src/mockchain/counter/rpo_auth.rs @@ -64,7 +64,7 @@ pub fn counter_rpo_auth_rejects_unauthenticated_note_creation() { let tx_context_builder = chain .build_tx_context(counter_account.clone(), &[], &[]) .unwrap() - .tx_script(tx_script) + .tx_script(tx_script.into()) .extend_expected_output_notes(vec![RawOutputNote::Full(own_note.clone())]) .authenticator(Some(authenticator)); let tx_context = tx_context_builder.build().unwrap(); @@ -90,7 +90,7 @@ pub fn counter_rpo_auth_rejects_unauthenticated_note_creation() { let tx_context_builder = chain .build_tx_context(counter_account, &[], &[]) .unwrap() - .tx_script(tx_script) + .tx_script(tx_script.into()) .extend_expected_output_notes(vec![RawOutputNote::Full(forged_note)]) .authenticator(None); let tx_context = tx_context_builder.build().unwrap(); diff --git a/tests/integration-network/src/mockchain/fpi/common.rs b/tests/integration-network/src/mockchain/fpi/common.rs index 8c3aa43d8..9ade58e65 100644 --- a/tests/integration-network/src/mockchain/fpi/common.rs +++ b/tests/integration-network/src/mockchain/fpi/common.rs @@ -418,6 +418,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/tests/integration-network/src/mockchain/fpi/note/four_words_struct.rs b/tests/integration-network/src/mockchain/fpi/note/four_words_struct.rs index 9e300b493..d1bf74d2a 100644 --- a/tests/integration-network/src/mockchain/fpi/note/four_words_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/four_words_struct.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use miden_client::{ Word, account::{ - AccountComponent, + AccountComponent, StorageMapKey, component::{BasicWallet, InitStorageData}, }, note::NoteTag, @@ -149,6 +149,7 @@ fn assert_counter_storage_felt_entries( expected_entries: [(Word, u64); 4], ) { for (storage_key, expected_count) in expected_entries { + let storage_key = StorageMapKey::from_raw(storage_key); let word = counter_account_storage .get_map_item(storage_slot, storage_key) .expect("Failed to get counter value from storage slot"); diff --git a/tests/integration-network/src/mockchain/fpi/note/multi_call.rs b/tests/integration-network/src/mockchain/fpi/note/multi_call.rs index 3ac53c73a..7b0d9df89 100644 --- a/tests/integration-network/src/mockchain/fpi/note/multi_call.rs +++ b/tests/integration-network/src/mockchain/fpi/note/multi_call.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use miden_client::{ Word, account::{ - AccountComponent, + AccountComponent, StorageMapKey, component::{BasicWallet, InitStorageData}, }, note::NoteTag, @@ -186,6 +186,7 @@ fn assert_counter_storage_word_entries( expected_entries: [(Word, Word); 3], ) { for (storage_key, expected_word) in expected_entries { + let storage_key = StorageMapKey::from_raw(storage_key); let word = counter_account_storage .get_map_item(storage_slot, storage_key) .expect("Failed to get counter value from storage slot"); diff --git a/tests/integration-network/src/mockchain/fpi/note/three_words_struct.rs b/tests/integration-network/src/mockchain/fpi/note/three_words_struct.rs index 450879e7c..084f397c0 100644 --- a/tests/integration-network/src/mockchain/fpi/note/three_words_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/three_words_struct.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use miden_client::{ Word, account::{ - AccountComponent, + AccountComponent, StorageMapKey, component::{BasicWallet, InitStorageData}, }, note::NoteTag, @@ -143,6 +143,7 @@ fn assert_counter_storage_felt_entries( expected_entries: [(Word, u64); 3], ) { for (storage_key, expected_count) in expected_entries { + let storage_key = StorageMapKey::from_raw(storage_key); let word = counter_account_storage .get_map_item(storage_slot, storage_key) .expect("Failed to get counter value from storage slot"); diff --git a/tests/integration-network/src/mockchain/fpi/note/two_words_struct.rs b/tests/integration-network/src/mockchain/fpi/note/two_words_struct.rs index 9a3c512a0..b492cf7a4 100644 --- a/tests/integration-network/src/mockchain/fpi/note/two_words_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/two_words_struct.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use miden_client::{ Word, account::{ - AccountComponent, + AccountComponent, StorageMapKey, component::{BasicWallet, InitStorageData}, }, note::NoteTag, @@ -165,6 +165,7 @@ fn assert_counter_storage_word_entries( expected_entries: [(Word, Word); 2], ) { for (storage_key, expected_word) in expected_entries { + let storage_key = StorageMapKey::from_raw(storage_key); let word = counter_account_storage .get_map_item(storage_slot, storage_key) .expect("Failed to get counter value from storage slot"); diff --git a/tests/integration-network/src/mockchain/fpi/note/word_word.rs b/tests/integration-network/src/mockchain/fpi/note/word_word.rs index 34d771be9..67981aefd 100644 --- a/tests/integration-network/src/mockchain/fpi/note/word_word.rs +++ b/tests/integration-network/src/mockchain/fpi/note/word_word.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use miden_client::{ Word, account::{ - AccountComponent, + AccountComponent, StorageMapKey, component::{BasicWallet, InitStorageData}, }, note::NoteTag, @@ -144,6 +144,7 @@ fn assert_counter_storage_word_at_key( storage_key: Word, expected: Word, ) { + let storage_key = StorageMapKey::from_raw(storage_key); let word = counter_account_storage .get_map_item(storage_slot, storage_key) .expect("Failed to get counter value from storage slot"); diff --git a/tests/integration-network/src/mockchain/fpi/raw/raw_call.rs b/tests/integration-network/src/mockchain/fpi/raw/raw_call.rs index f5f7ecfcb..2576ca40d 100644 --- a/tests/integration-network/src/mockchain/fpi/raw/raw_call.rs +++ b/tests/integration-network/src/mockchain/fpi/raw/raw_call.rs @@ -115,6 +115,7 @@ version = "0.0.1" [lib] kind = "note" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/tests/integration-network/src/mockchain/notes/basic_wallet.rs b/tests/integration-network/src/mockchain/notes/basic_wallet.rs index d23658e80..553a04781 100644 --- a/tests/integration-network/src/mockchain/notes/basic_wallet.rs +++ b/tests/integration-network/src/mockchain/notes/basic_wallet.rs @@ -5,7 +5,7 @@ use miden_client::{ AccountComponent, AccountId, component::{BasicWallet, InitStorageData}, }, - asset::{Asset, AssetCallbackFlag, FungibleAsset}, + asset::{Asset, FungibleAsset}, transaction::RawOutputNote, }; use miden_core::Felt; @@ -79,9 +79,7 @@ pub fn basic_wallet_p2id_transfers_asset_with_custom_tx_script() { eprintln!("\n=== Step 1: Minting tokens from faucet to Alice ==="); let mint_amount = 100_000u64; // 100,000 tokens - let mint_asset = FungibleAsset::new(faucet_id, mint_amount) - .unwrap() - .with_callbacks(AssetCallbackFlag::Enabled); + let mint_asset = FungibleAsset::new(faucet_id, mint_amount).unwrap(); let mut note_rng = RandomCoin::new(note_script_root(note_package.as_ref())); let p2id_note_mint = NoteBuilder::new(faucet_id, &mut note_rng) @@ -98,7 +96,7 @@ pub fn basic_wallet_p2id_transfers_asset_with_custom_tx_script() { let mint_tx_context_builder = chain .build_tx_context(faucet_id, &[], &[]) .unwrap() - .tx_script(mint_tx_script) + .tx_script(mint_tx_script.into()) .extend_expected_output_notes(vec![RawOutputNote::Full(p2id_note_mint.clone())]); execute_tx(&mut chain, mint_tx_context_builder); @@ -118,9 +116,7 @@ pub fn basic_wallet_p2id_transfers_asset_with_custom_tx_script() { eprintln!("\n=== Step 3: Alice creates p2id note for Bob (custom tx script) ==="); let transfer_amount = 10_000u64; // 10,000 tokens - let transfer_asset = FungibleAsset::new(faucet_id, transfer_amount) - .unwrap() - .with_callbacks(AssetCallbackFlag::Enabled); + let transfer_asset = FungibleAsset::new(faucet_id, transfer_amount).unwrap(); let (alice_tx_context_builder, bob_note) = build_asset_transfer_tx( &chain, @@ -208,9 +204,7 @@ pub fn basic_wallet_p2ide_allows_recipient_claim() { // Step 1: Mint assets from faucet to Alice using p2id note let mint_amount = 100_000u64; - let mint_asset = FungibleAsset::new(faucet_id, mint_amount) - .unwrap() - .with_callbacks(AssetCallbackFlag::Enabled); + let mint_asset = FungibleAsset::new(faucet_id, mint_amount).unwrap(); let p2id_rng = RandomCoin::new(note_script_root(p2id_note_package.as_ref())); let p2id_note_mint = NoteBuilder::new(faucet_id, p2id_rng) @@ -227,7 +221,7 @@ pub fn basic_wallet_p2ide_allows_recipient_claim() { let mint_tx_context_builder = chain .build_tx_context(faucet_id, &[], &[]) .unwrap() - .tx_script(mint_tx_script) + .tx_script(mint_tx_script.into()) .extend_expected_output_notes(vec![RawOutputNote::Full(p2id_note_mint.clone())]); execute_tx(&mut chain, mint_tx_context_builder); @@ -244,9 +238,7 @@ pub fn basic_wallet_p2ide_allows_recipient_claim() { // Step 3: Alice creates p2ide note for Bob let transfer_amount = 10_000u64; - let transfer_asset = FungibleAsset::new(faucet_id, transfer_amount) - .unwrap() - .with_callbacks(AssetCallbackFlag::Enabled); + let transfer_asset = FungibleAsset::new(faucet_id, transfer_amount).unwrap(); let timelock_height = Felt::ZERO; let reclaim_height = Felt::ZERO; @@ -267,7 +259,7 @@ pub fn basic_wallet_p2ide_allows_recipient_claim() { .build_tx_context(alice_id, &[], &[]) .unwrap() .foreign_accounts(vec![faucet_inputs]) - .tx_script(transfer_tx_script) + .tx_script(transfer_tx_script.into()) .extend_expected_output_notes(vec![RawOutputNote::Full(p2ide_note.clone())]); execute_tx(&mut chain, transfer_tx_context_builder); @@ -345,9 +337,7 @@ pub fn basic_wallet_p2ide_allows_sender_reclaim() { // Step 1: Mint assets from faucet to Alice using p2id note let mint_amount = 100_000u64; - let mint_asset = FungibleAsset::new(faucet_id, mint_amount) - .unwrap() - .with_callbacks(AssetCallbackFlag::Enabled); + let mint_asset = FungibleAsset::new(faucet_id, mint_amount).unwrap(); let p2id_rng = RandomCoin::new(note_script_root(p2id_note_package.as_ref())); let p2id_note_mint = NoteBuilder::new(faucet_id, p2id_rng) @@ -364,7 +354,7 @@ pub fn basic_wallet_p2ide_allows_sender_reclaim() { let mint_tx_context_builder = chain .build_tx_context(faucet_id, &[], &[]) .unwrap() - .tx_script(mint_tx_script) + .tx_script(mint_tx_script.into()) .extend_expected_output_notes(vec![RawOutputNote::Full(p2id_note_mint.clone())]); execute_tx(&mut chain, mint_tx_context_builder); @@ -381,9 +371,7 @@ pub fn basic_wallet_p2ide_allows_sender_reclaim() { // Step 3: Alice creates p2ide note for Bob with reclaim enabled let transfer_amount = 10_000u64; - let transfer_asset = FungibleAsset::new(faucet_id, transfer_amount) - .unwrap() - .with_callbacks(AssetCallbackFlag::Enabled); + let transfer_asset = FungibleAsset::new(faucet_id, transfer_amount).unwrap(); let timelock_height = Felt::ZERO; let reclaim_height = Felt::ONE; @@ -404,7 +392,7 @@ pub fn basic_wallet_p2ide_allows_sender_reclaim() { .build_tx_context(alice_id, &[], &[]) .unwrap() .foreign_accounts(vec![faucet_inputs]) - .tx_script(transfer_tx_script) + .tx_script(transfer_tx_script.into()) .extend_expected_output_notes(vec![RawOutputNote::Full(p2ide_note.clone())]); execute_tx(&mut chain, transfer_tx_context_builder); diff --git a/tests/integration-network/src/mockchain/sibling/common.rs b/tests/integration-network/src/mockchain/sibling/common.rs index 7bb1c644c..2943d6f10 100644 --- a/tests/integration-network/src/mockchain/sibling/common.rs +++ b/tests/integration-network/src/mockchain/sibling/common.rs @@ -201,6 +201,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/integration-network/src/mockchain/support/helpers.rs b/tests/integration-network/src/mockchain/support/helpers.rs index 3f9be02cc..8e538f012 100644 --- a/tests/integration-network/src/mockchain/support/helpers.rs +++ b/tests/integration-network/src/mockchain/support/helpers.rs @@ -1,31 +1,31 @@ //! Common helper functions for mock-chain integration tests. -use std::{future::Future, path::Path, sync::Arc}; +use std::{collections::BTreeMap, future::Future, path::Path, sync::Arc}; use miden_client::{ Word, - account::component::{BasicWallet, InitStorageData}, - asset::FungibleAsset, + account::{ + StorageMapKey, + component::{BasicWallet, InitStorageData, StorageValueName, WordValue}, + }, + asset::{FungibleAsset, StorageSlotContent}, auth::AuthSecretKey, crypto::FeltRng, note::{Note, NoteType}, transaction::RawOutputNote, }; use miden_core::Felt; -use miden_mast_package::{Package, PackageExport, TargetType}; +use miden_mast_package::{Package, TargetType}; use miden_protocol::{ account::{ - Account, AccountBuilder, AccountComponent, AccountComponentMetadata, AccountId, - AccountStorage, AccountType, StorageSlot, StorageSlotName, + Account, AccountBuilder, AccountComponent, AccountId, AccountStorage, AccountType, + StorageSlot, StorageSlotName, }, asset::{Asset, AssetAmount}, note::{NoteScript, PartialNote}, transaction::{TransactionMeasurements, TransactionScript}, }; -use miden_standards::{ - account::interface::{AccountInterface, AccountInterfaceExt}, - testing::note::NoteBuilder, -}; +use miden_standards::{testing::note::NoteBuilder, tx_script::SendNotesTransactionScript}; use miden_testing::{MockChain, TransactionContextBuilder}; use midenc_frontend_wasm::WasmTranslationConfig; use midenc_integration_test_support::CompilerTestBuilder; @@ -43,6 +43,7 @@ pub(crate) fn assert_counter_storage_at_key( storage_key: Word, expected: u64, ) { + let storage_key = StorageMapKey::from_raw(storage_key); let word = account_storage .get_map_item(storage_slot, storage_key) .expect("failed to get counter value from storage slot"); @@ -103,30 +104,7 @@ fn transaction_script_from_package(package: &Package) -> TransactionScript { "expected a transaction-script package" ); - let mut first_procedure = None; - let mut selected_procedure = None; - let mut num_procedures = 0usize; - for export in package.manifest.exports() { - let PackageExport::Procedure(procedure) = export else { - continue; - }; - num_procedures += 1; - first_procedure.get_or_insert(procedure); - if matches!(export.name(), "main" | "run") { - selected_procedure = Some(procedure); - } - } - - let procedure = selected_procedure - .or_else(|| (num_procedures == 1).then(|| first_procedure.unwrap())) - .expect("transaction-script package should export exactly one entry procedure"); - let entrypoint = package - .mast - .mast_forest() - .find_procedure_root(procedure.digest) - .expect("transaction-script main export should have a MAST node"); - - TransactionScript::from_parts(package.mast.mast_forest().clone(), entrypoint) + TransactionScript::from_package(package).expect("invalid transaction-script package") } // ================================================================================================ @@ -165,12 +143,13 @@ pub(crate) fn assert_account_has_fungible_asset( /// Builds a `send_notes` transaction script for accounts that support a standard note creation /// interface (e.g. basic wallets and basic fungible faucets). -pub(crate) fn build_send_notes_script(account: &Account, notes: &[Note]) -> TransactionScript { +pub(crate) fn build_send_notes_script( + account: &Account, + notes: &[Note], +) -> SendNotesTransactionScript { let partial_notes = notes.iter().cloned().map(PartialNote::from).collect::>(); - AccountInterface::from_account(account) - .build_send_notes_script(&partial_notes, None) - .expect("failed to build send_notes transaction script") + SendNotesTransactionScript::new(&account.code_interface(), &partial_notes).unwrap() } /// Executes a transaction context against the chain and commits it in the next block. @@ -282,8 +261,9 @@ pub(crate) fn assert_counter_storage( storage_slot: &StorageSlotName, expected: u64, ) { + let key = StorageMapKey::from_raw(COUNTER_CONTRACT_STORAGE_KEY); let word = counter_account_storage - .get_map_item(storage_slot, COUNTER_CONTRACT_STORAGE_KEY) + .get_map_item(storage_slot, key) .expect("Failed to get counter value from storage slot"); // `AccountStorage` exposes scalar felt values as `[felt, 0, 0, 0]`. @@ -305,13 +285,29 @@ pub(crate) fn build_existing_counter_account_builder_with_auth_package( auth_storage_slots: Vec, seed: [u8; 32], ) -> AccountBuilder { - let metadata = AccountComponentMetadata::new("auth"); - let auth_component = AccountComponent::new( - auth_component_package.mast.as_ref().clone(), - auth_storage_slots, - metadata, - ) - .unwrap(); + let mut values = BTreeMap::default(); + let mut map_entries = BTreeMap::<_, Vec<(WordValue, WordValue)>>::default(); + for slot in auth_storage_slots { + let (name, content) = slot.into_parts(); + match content { + StorageSlotContent::Value(value) => { + values.insert(StorageValueName::from_slot_name(&name), value.into()); + } + StorageSlotContent::Map(map) => { + let entries = map.into_entries(); + map_entries.entry(name).or_default().extend( + entries + .into_iter() + .map(|(k, v)| (k.as_word().into(), v.into())) + .collect::>(), + ); + } + } + } + let init_storage_data = + InitStorageData::new(values, map_entries).expect("invalid init storage data"); + let auth_component = + AccountComponent::from_package(&auth_component_package, &init_storage_data).unwrap(); AccountBuilder::new(seed) .account_type(AccountType::Public) diff --git a/tests/integration-network/src/mockchain/support/projects.rs b/tests/integration-network/src/mockchain/support/projects.rs index 79a24ffcf..b1e1a15bd 100644 --- a/tests/integration-network/src/mockchain/support/projects.rs +++ b/tests/integration-network/src/mockchain/support/projects.rs @@ -25,6 +25,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" @@ -108,6 +109,7 @@ version = "0.0.1" [lib] kind = "note" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/tests/integration/src/assert_helpers.rs b/tests/integration/src/assert_helpers.rs index a02f212fd..08b1c2225 100644 --- a/tests/integration/src/assert_helpers.rs +++ b/tests/integration/src/assert_helpers.rs @@ -6,7 +6,7 @@ pub(crate) fn assert_unique_protocol_export( expected_export_name: &str, ) { let matching_exports = package - .mast + .manifest .exports() .filter_map(|export| { let proc_export = export.as_procedure()?; diff --git a/tests/integration/src/codegen/control_flow/select.rs b/tests/integration/src/codegen/control_flow/select.rs index 44cb4ba2a..8bc327da8 100644 --- a/tests/integration/src/codegen/control_flow/select.rs +++ b/tests/integration/src/codegen/control_flow/select.rs @@ -24,7 +24,7 @@ fn run_select_test(ty: Type, a: Immediate, a_result: &[u64], b: Immediate, b_res let run_test = |cond_val, expected: &[u64]| { eval_package::( - &package, + package.clone(), None, &[Felt::new_unchecked(cond_val as u64)], context.session(), diff --git a/tests/integration/src/codegen/control_flow/switch.rs b/tests/integration/src/codegen/control_flow/switch.rs index ef8cb6faa..b424a2c17 100644 --- a/tests/integration/src/codegen/control_flow/switch.rs +++ b/tests/integration/src/codegen/control_flow/switch.rs @@ -102,7 +102,7 @@ fn run_index_switch_execution_test( for expectation in expectations { let selector = expectation.selector; let output = eval_package::( - &package, + package.clone(), None, &[Felt::from(selector)], context.session(), @@ -518,7 +518,7 @@ fn index_switch_rust_enum_dispatch_regression() { for (which, expected) in [(0u32, 11u32), (1, 22), (2, 33)] { let args = [Felt::from(which)]; - eval_package::(&package, [], &args, &test.session, |trace| { + eval_package::(package.clone(), [], &args, &test.session, |trace| { let res: Felt = trace.parse_result().unwrap(); assert_eq!(res, Felt::from(expected)); Ok(()) diff --git a/tests/integration/src/codegen/memory/load_bool.rs b/tests/integration/src/codegen/memory/load_bool.rs index d981dd6b6..3081c2ee4 100644 --- a/tests/integration/src/codegen/memory/load_bool.rs +++ b/tests/integration/src/codegen/memory/load_bool.rs @@ -29,7 +29,7 @@ fn load_bool() { let args = [Felt::new_unchecked(write_to as u64)]; let output = eval_package::( - &package, + package.clone(), initializers, &args, context.session(), diff --git a/tests/integration/src/codegen/memory/load_dw.rs b/tests/integration/src/codegen/memory/load_dw.rs index b2eae4db2..ee6264e72 100644 --- a/tests/integration/src/codegen/memory/load_dw.rs +++ b/tests/integration/src/codegen/memory/load_dw.rs @@ -30,7 +30,7 @@ fn load_dw() { let args = [Felt::new_unchecked(write_to as u64)]; let output = eval_package::( - &package, + package.clone(), initializers, &args, context.session(), diff --git a/tests/integration/src/codegen/memory/load_qw.rs b/tests/integration/src/codegen/memory/load_qw.rs index 5ba4343d7..43ccb9063 100644 --- a/tests/integration/src/codegen/memory/load_qw.rs +++ b/tests/integration/src/codegen/memory/load_qw.rs @@ -42,7 +42,7 @@ fn load_qw_with_offset_impl() { ); let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(offs as u64)], context.session(), @@ -103,7 +103,7 @@ where let args = [Felt::new_unchecked(write_to as u64)]; let output = eval_package::( - &package, + package.clone(), initializers, &args, context.session(), diff --git a/tests/integration/src/codegen/memory/load_sw.rs b/tests/integration/src/codegen/memory/load_sw.rs index 3e9f89d70..f316b59cc 100644 --- a/tests/integration/src/codegen/memory/load_sw.rs +++ b/tests/integration/src/codegen/memory/load_sw.rs @@ -29,7 +29,7 @@ fn load_sw() { let args = [Felt::new_unchecked(write_to as u64)]; let output = eval_package::( - &package, + package.clone(), initializers, &args, context.session(), diff --git a/tests/integration/src/codegen/memory/load_u16.rs b/tests/integration/src/codegen/memory/load_u16.rs index b3a17e98f..f3cd60504 100644 --- a/tests/integration/src/codegen/memory/load_u16.rs +++ b/tests/integration/src/codegen/memory/load_u16.rs @@ -29,7 +29,7 @@ fn load_u16() { let args = [Felt::new_unchecked(write_to as u64)]; let output = eval_package::( - &package, + package.clone(), initializers, &args, context.session(), @@ -112,7 +112,7 @@ macro_rules! define_unaligned_16bit_load_tests { let args = [Felt::new_unchecked(read_from as u64)]; let output = eval_package::<$rust_ty, _, _>( - &package, + package.clone(), initializers, &args, context.session(), diff --git a/tests/integration/src/codegen/memory/load_u64_unaligned.rs b/tests/integration/src/codegen/memory/load_u64_unaligned.rs index f5c775dda..b0e093da5 100644 --- a/tests/integration/src/codegen/memory/load_u64_unaligned.rs +++ b/tests/integration/src/codegen/memory/load_u64_unaligned.rs @@ -34,7 +34,7 @@ fn load_u64_unaligned() { }]; let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(offs as u64)], context.session(), diff --git a/tests/integration/src/codegen/memory/load_u8.rs b/tests/integration/src/codegen/memory/load_u8.rs index 53aa8ca9d..19442748c 100644 --- a/tests/integration/src/codegen/memory/load_u8.rs +++ b/tests/integration/src/codegen/memory/load_u8.rs @@ -29,7 +29,7 @@ fn load_u8() { let args = [Felt::new_unchecked(write_to as u64)]; let output = eval_package::( - &package, + package.clone(), initializers, &args, context.session(), diff --git a/tests/integration/src/codegen/memory/store_qw.rs b/tests/integration/src/codegen/memory/store_qw.rs index f3ee100a1..250a41886 100644 --- a/tests/integration/src/codegen/memory/store_qw.rs +++ b/tests/integration/src/codegen/memory/store_qw.rs @@ -58,7 +58,7 @@ fn store_qw_unaligned_impl(write_val: T) { ]; let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(offs as u64)], context.session(), diff --git a/tests/integration/src/codegen/memory/store_u16.rs b/tests/integration/src/codegen/memory/store_u16.rs index d09a9173a..9ad5fd935 100644 --- a/tests/integration/src/codegen/memory/store_u16.rs +++ b/tests/integration/src/codegen/memory/store_u16.rs @@ -78,7 +78,7 @@ fn store_u16() { Felt::new_unchecked(store_value2 as u64), ]; let output = eval_package::( - &package, + package.clone(), initializers, &args, context.session(), @@ -183,7 +183,7 @@ macro_rules! define_unaligned_16bit_store_tests { let args = [($to_felt)(store_value)]; let output = eval_package::( - &package, + package.clone(), initializers, &args, context.session(), diff --git a/tests/integration/src/codegen/memory/store_u32_unaligned.rs b/tests/integration/src/codegen/memory/store_u32_unaligned.rs index 540f859c6..8fe209699 100644 --- a/tests/integration/src/codegen/memory/store_u32_unaligned.rs +++ b/tests/integration/src/codegen/memory/store_u32_unaligned.rs @@ -37,7 +37,7 @@ fn store_u32_unaligned() { }]; let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(offs as u64)], context.session(), diff --git a/tests/integration/src/codegen/memory/store_u64_unaligned.rs b/tests/integration/src/codegen/memory/store_u64_unaligned.rs index 9b2b3df95..e86d2d757 100644 --- a/tests/integration/src/codegen/memory/store_u64_unaligned.rs +++ b/tests/integration/src/codegen/memory/store_u64_unaligned.rs @@ -42,7 +42,7 @@ fn store_u64_unaligned() { }]; let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(offs as u64)], context.session(), diff --git a/tests/integration/src/codegen/memory/store_u8.rs b/tests/integration/src/codegen/memory/store_u8.rs index cc1aa069b..0ae216e8f 100644 --- a/tests/integration/src/codegen/memory/store_u8.rs +++ b/tests/integration/src/codegen/memory/store_u8.rs @@ -136,7 +136,7 @@ fn store_u8() { Felt::new_unchecked(store_value3 as u64), ]; let output = eval_package::( - &package, + package.clone(), initializers, &args, context.session(), diff --git a/tests/integration/src/codegen/wasm/i32_extend16_s.rs b/tests/integration/src/codegen/wasm/i32_extend16_s.rs index 4fd3e7656..0d8ccc188 100644 --- a/tests/integration/src/codegen/wasm/i32_extend16_s.rs +++ b/tests/integration/src/codegen/wasm/i32_extend16_s.rs @@ -59,7 +59,7 @@ fn i32_extend16_s() { assert_eq!(((input as i16) as i32) as u32, expected_out, "invalid test case"); eval_package::( - &package, + package.clone(), None, &[Felt::from(input)], context.session(), diff --git a/tests/integration/src/codegen/wasm/i32_extend8_s.rs b/tests/integration/src/codegen/wasm/i32_extend8_s.rs index 16cd85d8f..96f086a8f 100644 --- a/tests/integration/src/codegen/wasm/i32_extend8_s.rs +++ b/tests/integration/src/codegen/wasm/i32_extend8_s.rs @@ -59,7 +59,7 @@ fn i32_extend8_s() { assert_eq!(((input as i8) as i32) as u32, expected_out, "invalid test case"); eval_package::( - &package, + package.clone(), None, &[Felt::from(input)], context.session(), diff --git a/tests/integration/src/codegen/wasm/i32_load16_s.rs b/tests/integration/src/codegen/wasm/i32_load16_s.rs index f967b73ff..8f0946323 100644 --- a/tests/integration/src/codegen/wasm/i32_load16_s.rs +++ b/tests/integration/src/codegen/wasm/i32_load16_s.rs @@ -30,7 +30,7 @@ fn i32_load16_s() { }]; let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(mem_addr as u64)], context.session(), diff --git a/tests/integration/src/codegen/wasm/i32_load8_s.rs b/tests/integration/src/codegen/wasm/i32_load8_s.rs index d7ca0e0a6..c83815b17 100644 --- a/tests/integration/src/codegen/wasm/i32_load8_s.rs +++ b/tests/integration/src/codegen/wasm/i32_load8_s.rs @@ -31,7 +31,7 @@ fn i32_load8_s() { }]; let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(mem_addr as u64)], context.session(), diff --git a/tests/integration/src/codegen/wasm/i64_extend16_s.rs b/tests/integration/src/codegen/wasm/i64_extend16_s.rs index 87d3047a0..0ea98b8ae 100644 --- a/tests/integration/src/codegen/wasm/i64_extend16_s.rs +++ b/tests/integration/src/codegen/wasm/i64_extend16_s.rs @@ -61,7 +61,7 @@ fn i64_extend16_s() { let mut args = Vec::new(); input.push_to_operand_stack(&mut args); - eval_package::(&package, None, &args, context.session(), |trace| { + eval_package::(package.clone(), None, &args, context.session(), |trace| { let out = trace.parse_result::().unwrap(); assert_eq!(out, expected_out); Ok(()) diff --git a/tests/integration/src/codegen/wasm/i64_extend32_s.rs b/tests/integration/src/codegen/wasm/i64_extend32_s.rs index 3cbcfe50b..e8446b92b 100644 --- a/tests/integration/src/codegen/wasm/i64_extend32_s.rs +++ b/tests/integration/src/codegen/wasm/i64_extend32_s.rs @@ -61,7 +61,7 @@ fn i64_extend32_s() { let mut args = Vec::new(); input.push_to_operand_stack(&mut args); - eval_package::(&package, None, &args, context.session(), |trace| { + eval_package::(package.clone(), None, &args, context.session(), |trace| { let out = trace.parse_result::().unwrap(); assert_eq!(out, expected_out); Ok(()) diff --git a/tests/integration/src/codegen/wasm/i64_extend8_s.rs b/tests/integration/src/codegen/wasm/i64_extend8_s.rs index 6edad80ed..cd8a3cc12 100644 --- a/tests/integration/src/codegen/wasm/i64_extend8_s.rs +++ b/tests/integration/src/codegen/wasm/i64_extend8_s.rs @@ -61,7 +61,7 @@ fn i64_extend8_s() { let mut args = Vec::new(); input.push_to_operand_stack(&mut args); - eval_package::(&package, None, &args, context.session(), |trace| { + eval_package::(package.clone(), None, &args, context.session(), |trace| { let out = trace.parse_result::().unwrap(); assert_eq!(out, expected_out); Ok(()) diff --git a/tests/integration/src/codegen/wasm/i64_load16_s.rs b/tests/integration/src/codegen/wasm/i64_load16_s.rs index f999ff079..7d8fbc222 100644 --- a/tests/integration/src/codegen/wasm/i64_load16_s.rs +++ b/tests/integration/src/codegen/wasm/i64_load16_s.rs @@ -46,7 +46,7 @@ fn i64_load16_s() { }]; let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(mem_addr as u64)], context.session(), diff --git a/tests/integration/src/codegen/wasm/i64_load32_s.rs b/tests/integration/src/codegen/wasm/i64_load32_s.rs index 02d87f132..8369f859f 100644 --- a/tests/integration/src/codegen/wasm/i64_load32_s.rs +++ b/tests/integration/src/codegen/wasm/i64_load32_s.rs @@ -46,7 +46,7 @@ fn i64_load32_s() { }]; let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(mem_addr as u64)], context.session(), diff --git a/tests/integration/src/codegen/wasm/i64_load8_s.rs b/tests/integration/src/codegen/wasm/i64_load8_s.rs index d5c2d3842..16ec1d163 100644 --- a/tests/integration/src/codegen/wasm/i64_load8_s.rs +++ b/tests/integration/src/codegen/wasm/i64_load8_s.rs @@ -46,7 +46,7 @@ fn i64_load8_s() { }]; let output = eval_package::( - &package, + package.clone(), initializers, &[Felt::new_unchecked(mem_addr as u64)], context.session(), diff --git a/tests/integration/src/end_to_end/abi/transforms/advice_map.rs b/tests/integration/src/end_to_end/abi/transforms/advice_map.rs index cee64f4fa..f3b6d23b9 100644 --- a/tests/integration/src/end_to_end/abi/transforms/advice_map.rs +++ b/tests/integration/src/end_to_end/abi/transforms/advice_map.rs @@ -1,14 +1,11 @@ use core::panic; -use std::sync::Arc; use miden_core::field::PrimeField64; -use miden_debug::{DebugQuery, Executor, Felt as TestFelt}; +use miden_debug::{DebugQuery, Felt as TestFelt}; use miden_processor::advice::AdviceInputs; -use miden_protocol::ProtocolLib; -use miden_standards::StandardsLib; use midenc_frontend_wasm::WasmTranslationConfig; use midenc_hir::Felt; -use midenc_session::STDLIB; +use midenc_integration_test_support::testing::executor_with_std; use crate::CompilerTest; @@ -73,19 +70,9 @@ fn adv_load_preimage() { commitment[3], ]; - let mut exec = Executor::new(args.to_vec()); - let std_library = (*STDLIB).clone(); - exec.dependency_resolver_mut().insert(*std_library.digest(), std_library); - let protocol_library = Arc::new(ProtocolLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*protocol_library.digest(), protocol_library); - let standards_library = Arc::new(StandardsLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*standards_library.digest(), standards_library); - exec.with_dependencies(package.manifest.dependencies()) - .expect("Failed to register dependencies"); + let mut exec = executor_with_std(args.to_vec()); exec.with_advice_inputs(AdviceInputs::default().with_map(advice_map)); - let trace = exec.execute(&package.unwrap_program(), test.session.source_manager.clone()); + let trace = exec.execute(package, test.session.source_manager.clone()); let result_ptr = out_addr; // Read the Vec metadata from memory (capacity, ptr, len, padding) diff --git a/tests/integration/src/end_to_end/abi/transforms/stdlib/hash_elements.rs b/tests/integration/src/end_to_end/abi/transforms/stdlib/hash_elements.rs index e17d75e75..60a5f620e 100644 --- a/tests/integration/src/end_to_end/abi/transforms/stdlib/hash_elements.rs +++ b/tests/integration/src/end_to_end/abi/transforms/stdlib/hash_elements.rs @@ -55,7 +55,7 @@ fn hash_elements() { let args = [Felt::new_unchecked(wide_ptr_addr as u64)]; - eval_package::(&package, initializers, &args, &test.session, |trace| { + eval_package::(package.clone(), initializers, &args, &test.session, |trace| { let res: Felt = trace.parse_result().unwrap(); prop_assert_eq!(res, expected_digest[0]); Ok(()) diff --git a/tests/integration/src/end_to_end/abi/transforms/stdlib/hash_words.rs b/tests/integration/src/end_to_end/abi/transforms/stdlib/hash_words.rs index 39d06b0d7..153bfbce3 100644 --- a/tests/integration/src/end_to_end/abi/transforms/stdlib/hash_words.rs +++ b/tests/integration/src/end_to_end/abi/transforms/stdlib/hash_words.rs @@ -67,11 +67,17 @@ fn hash_words() { let args = [Felt::new_unchecked(wide_ptr_addr as u64)]; - eval_package::(&package, initializers, &args, &test.session, |trace| { - let res: Felt = trace.parse_result().unwrap(); - prop_assert_eq!(res, expected_digest[0]); - Ok(()) - })?; + eval_package::( + package.clone(), + initializers, + &args, + &test.session, + |trace| { + let res: Felt = trace.parse_result().unwrap(); + prop_assert_eq!(res, expected_digest[0]); + Ok(()) + }, + )?; Ok(()) }); diff --git a/tests/integration/src/end_to_end/abi/transforms/stdlib/pipe_double_words_to_memory.rs b/tests/integration/src/end_to_end/abi/transforms/stdlib/pipe_double_words_to_memory.rs index 9d4934d97..8a7e02951 100644 --- a/tests/integration/src/end_to_end/abi/transforms/stdlib/pipe_double_words_to_memory.rs +++ b/tests/integration/src/end_to_end/abi/transforms/stdlib/pipe_double_words_to_memory.rs @@ -69,7 +69,7 @@ fn pipe_double_words_to_memory() { ]; eval_package_with_advice_stack::( - &package, + package.clone(), [], advice_stack, &args, diff --git a/tests/integration/src/end_to_end/abi/transforms/stdlib/pipe_words_to_memory.rs b/tests/integration/src/end_to_end/abi/transforms/stdlib/pipe_words_to_memory.rs index ffb6688ba..95408a1f6 100644 --- a/tests/integration/src/end_to_end/abi/transforms/stdlib/pipe_words_to_memory.rs +++ b/tests/integration/src/end_to_end/abi/transforms/stdlib/pipe_words_to_memory.rs @@ -86,7 +86,7 @@ fn pipe_words_to_memory() { ]; eval_package_with_advice_stack::( - &package, + package.clone(), [], advice_stack, &args, diff --git a/tests/integration/src/end_to_end/abi/transforms/stdlib/vec_alloc_vec.rs b/tests/integration/src/end_to_end/abi/transforms/stdlib/vec_alloc_vec.rs index 98205ac35..6f0aece47 100644 --- a/tests/integration/src/end_to_end/abi/transforms/stdlib/vec_alloc_vec.rs +++ b/tests/integration/src/end_to_end/abi/transforms/stdlib/vec_alloc_vec.rs @@ -25,7 +25,7 @@ fn vec_alloc_vec() { let args = [Felt::from(2u32)]; - eval_package::(&package, [], &args, &test.session, |trace| { + eval_package::(package, [], &args, &test.session, |trace| { let res: u32 = trace.parse_result().unwrap(); assert_eq!(res, 3, "unexpected result (regression test for https://github.com/0xMiden/compiler/issues/595)"); Ok(()) diff --git a/tests/integration/src/end_to_end/abi/transforms/tx_kernel/get_inputs.rs b/tests/integration/src/end_to_end/abi/transforms/tx_kernel/get_inputs.rs index 140c454c2..64f1e433e 100644 --- a/tests/integration/src/end_to_end/abi/transforms/tx_kernel/get_inputs.rs +++ b/tests/integration/src/end_to_end/abi/transforms/tx_kernel/get_inputs.rs @@ -1,10 +1,6 @@ -use std::sync::Arc; - -use miden_debug::Executor; -use miden_protocol::ProtocolLib; -use miden_standards::StandardsLib; use midenc_frontend_wasm::WasmTranslationConfig; -use midenc_session::{STDLIB, diagnostics::Report}; +use midenc_integration_test_support::testing::executor_with_std; +use midenc_session::diagnostics::Report; use crate::CompilerTestBuilder; @@ -64,17 +60,8 @@ end let package = test.compile_package(); - let mut exec = Executor::new(vec![]); - let std_library = (*STDLIB).clone(); - exec.dependency_resolver_mut().insert(*std_library.digest(), std_library); - let protocol_library = Arc::new(ProtocolLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*protocol_library.digest(), protocol_library); - let standards_library = Arc::new(StandardsLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*standards_library.digest(), standards_library); - exec.with_dependencies(package.manifest.dependencies())?; + let exec = executor_with_std(vec![]); - let _ = exec.execute(&package.unwrap_program(), test.session.source_manager.clone()); + let _ = exec.execute(package, test.session.source_manager.clone()); Ok(()) } diff --git a/tests/integration/src/end_to_end/abi/transforms/tx_kernel/get_metadata.rs b/tests/integration/src/end_to_end/abi/transforms/tx_kernel/get_metadata.rs index b6d4d3644..50cfeede2 100644 --- a/tests/integration/src/end_to_end/abi/transforms/tx_kernel/get_metadata.rs +++ b/tests/integration/src/end_to_end/abi/transforms/tx_kernel/get_metadata.rs @@ -1,6 +1,6 @@ use miden_debug::Executor; use midenc_frontend_wasm::WasmTranslationConfig; -use midenc_session::{STDLIB, diagnostics::Report}; +use midenc_session::diagnostics::Report; use crate::CompilerTestBuilder; @@ -50,10 +50,8 @@ end let package = test.compile_package(); let mut exec = Executor::new(vec![]); - let std_library = (*STDLIB).clone(); - exec.dependency_resolver_mut().insert(*std_library.digest(), std_library); - exec.with_dependencies(package.manifest.dependencies())?; + exec.with_package(miden_core_lib::CoreLibrary::default().package()).unwrap(); - let _ = exec.execute(&package.unwrap_program(), test.session.source_manager.clone()); + let _ = exec.execute(package, test.session.source_manager.clone()); Ok(()) } diff --git a/tests/integration/src/end_to_end/abi/transforms/tx_kernel/note_build_recipient.rs b/tests/integration/src/end_to_end/abi/transforms/tx_kernel/note_build_recipient.rs index 862a5cea2..62eb94e02 100644 --- a/tests/integration/src/end_to_end/abi/transforms/tx_kernel/note_build_recipient.rs +++ b/tests/integration/src/end_to_end/abi/transforms/tx_kernel/note_build_recipient.rs @@ -13,16 +13,21 @@ use crate::{ #[test] fn note_build_recipient_matches_note_recipient_digest() -> Result<(), Report> { let note_script_program = Assembler::default() - .assemble_program( + .assemble_library( + "test", r#" -begin +namespace test + +@note_script +pub proc main push.1 drop end "#, + None::>, ) .expect("failed to assemble note script program"); - let note_script = NoteScript::new(note_script_program); + let note_script = NoteScript::from_package(¬e_script_program).unwrap(); let serial_num = miden_core::Word::new([ Felt::new_unchecked(1), @@ -94,7 +99,7 @@ end felts: (&init_felts).into(), }]; - let _ = eval_package::(&package, initializers, &args, &test.session, |trace| { + let _ = eval_package::(package, initializers, &args, &test.session, |trace| { let actual: [TestFelt; 4] = trace.read_from_rust_memory(out_addr).expect("expected output to be written"); let expected: [Felt; 4] = expected_digest.into(); diff --git a/tests/integration/src/end_to_end/arithmetic.rs b/tests/integration/src/end_to_end/arithmetic.rs index 81e71d598..151cdf488 100644 --- a/tests/integration/src/end_to_end/arithmetic.rs +++ b/tests/integration/src/end_to_end/arithmetic.rs @@ -39,7 +39,7 @@ macro_rules! test_bin_op { let mut args = Vec::::default(); a.push_to_operand_stack(&mut args); b.push_to_operand_stack(&mut args); - run_masm_vs_rust(rs_out, &package, &args, &test.session) + run_masm_vs_rust(rs_out, package.clone(), &args, &test.session) }); match res { Err(TestError::Fail(err, value)) => { @@ -84,7 +84,7 @@ macro_rules! test_wide_bin_op { a.push_to_operand_stack(&mut args); b.push_to_operand_stack(&mut args); - eval_package::(&package, None, &args, &test.session, |trace| { + eval_package::(package.clone(), None, &args, &test.session, |trace| { let vm_out_bytes: [u8; 16] = trace.read_from_rust_memory(out_addr) .expect("output was not written"); @@ -131,7 +131,7 @@ macro_rules! test_unary_op { let rs_out = $op a; let mut args = Vec::::default(); a.push_to_operand_stack(&mut args); - run_masm_vs_rust(rs_out, &package, &args, &test.session) + run_masm_vs_rust(rs_out, package.clone(), &args, &test.session) }); match res { Err(TestError::Fail(_, value)) => { @@ -165,7 +165,7 @@ macro_rules! test_func_two_arg { let mut args = Vec::::default(); push_wasm_ty_to_operand_stack(a, &mut args); push_wasm_ty_to_operand_stack(b, &mut args); - run_masm_vs_rust(rust_out, &package, &args, &test.session) + run_masm_vs_rust(rust_out, package.clone(), &args, &test.session) }); match res { Err(TestError::Fail(_, value)) => { @@ -904,7 +904,7 @@ fn test_overflowing_arith( push_wasm_ty_to_operand_stack(a, &mut args); push_wasm_ty_to_operand_stack(b, &mut args); - eval_package::(&package, None, &args, &test.session, |trace| { + eval_package::(package.clone(), None, &args, &test.session, |trace| { let ty_byte_size = std::mem::size_of::(); assert!(ty_byte_size <= 16, "cannot handle types larger than 16 bytes"); // At most 17 bytes are written to memory: ty_byte_size <= 16 and 1 byte for the bool. @@ -963,7 +963,7 @@ where push_wasm_ty_to_operand_stack(a, &mut args); push_wasm_ty_to_operand_stack(b, &mut args); - eval_package::(&package, None, &args, &test.session, |trace| { + eval_package::(package.clone(), None, &args, &test.session, |trace| { let ty_byte_size = std::mem::size_of::(); // At most 16 bytes are written to memory. assert!(ty_byte_size <= 16, "cannot handle types larger than 16 bytes"); @@ -1024,7 +1024,7 @@ fn test_checked_arith( push_wasm_ty_to_operand_stack(a, &mut args); push_wasm_ty_to_operand_stack(b, &mut args); - eval_package::(&package, None, &args, &test.session, |trace| { + eval_package::(package.clone(), None, &args, &test.session, |trace| { let ty_byte_size = std::mem::size_of::(); assert!(ty_byte_size <= 8, "cannot handle types larger than 8 bytes"); // At most 9 bytes are written to memory: ty_byte_size <= 8 and 1 byte for the bool. diff --git a/tests/integration/src/end_to_end/crypto.rs b/tests/integration/src/end_to_end/crypto.rs index f51d60753..fd55289f7 100644 --- a/tests/integration/src/end_to_end/crypto.rs +++ b/tests/integration/src/end_to_end/crypto.rs @@ -55,7 +55,7 @@ fn hmerge() { raw_felts_in2[2], raw_felts_in2[3], ]; - eval_package::(&package, [], &args, &test.session, |trace| { + eval_package::(package.clone(), [], &args, &test.session, |trace| { let res: miden_core::Felt = trace.parse_result().unwrap(); prop_assert_eq!(res, digest_out[0]); Ok(()) diff --git a/tests/integration/src/end_to_end/debuginfo/source_locations.rs b/tests/integration/src/end_to_end/debuginfo/source_locations.rs index 7af96a9be..51932f596 100644 --- a/tests/integration/src/end_to_end/debuginfo/source_locations.rs +++ b/tests/integration/src/end_to_end/debuginfo/source_locations.rs @@ -19,14 +19,13 @@ fn rust_assert_macro_source_location_with_debug_executor() { ); let package = test.compile_package(); - let program = package.unwrap_program(); // First, test that the function works when assertion passes (x > 100) { let args = vec![Felt::new_unchecked(200)]; - let exec = executor_with_std(args, Some(&package)); + let exec = executor_with_std(args); - let trace = exec.execute(&program, test.session.source_manager.clone()); + let trace = exec.execute(package.clone(), test.session.source_manager.clone()); let result: u32 = trace.parse_result().expect("Failed to parse result"); assert_eq!(result, 200, "When x > 100, function should return x"); } @@ -34,14 +33,12 @@ fn rust_assert_macro_source_location_with_debug_executor() { // Now test that when assertion fails (x <= 100), we get a panic with source location { let args = vec![Felt::new_unchecked(50)]; - let exec = executor_with_std(args, Some(&package)); + let exec = executor_with_std(args); - let program_clone = program.clone(); let source_manager = test.session.source_manager.clone(); - let result = panic::catch_unwind(AssertUnwindSafe(move || { - exec.execute(&program_clone, source_manager) - })); + let result = + panic::catch_unwind(AssertUnwindSafe(move || exec.execute(package, source_manager))); let panic_message = match result { Ok(_) => panic!("Expected execution to fail due to assertion (x=50 <= 100)"), diff --git a/tests/integration/src/end_to_end/differential/harness.rs b/tests/integration/src/end_to_end/differential/harness.rs index ac5361c11..daba2c8cc 100644 --- a/tests/integration/src/end_to_end/differential/harness.rs +++ b/tests/integration/src/end_to_end/differential/harness.rs @@ -87,12 +87,9 @@ fn run_case_inner(name: &str, source: &str, inputs: Inputs<'_>) { // Run the case for one input pair and return `(native_out, masm_out)`. let eval = |a: u32, b: u32| -> (u32, u32) { let native_out = unsafe { entry(a, b) }; - let exec = executor_with_std( - vec![Felt::new_unchecked(a as u64), Felt::new_unchecked(b as u64)], - Some(&package), - ); - let masm_out: u32 = - exec.execute_into(&package.unwrap_program(), test.session.source_manager.clone()); + let exec = + executor_with_std(vec![Felt::new_unchecked(a as u64), Felt::new_unchecked(b as u64)]); + let masm_out: u32 = exec.execute_into(package.clone(), test.session.source_manager.clone()); (native_out, masm_out) }; diff --git a/tests/integration/src/end_to_end/examples/auth_component_no_auth.rs b/tests/integration/src/end_to_end/examples/auth_component_no_auth.rs index d7a067909..657727ca7 100644 --- a/tests/integration/src/end_to_end/examples/auth_component_no_auth.rs +++ b/tests/integration/src/end_to_end/examples/auth_component_no_auth.rs @@ -1,4 +1,4 @@ -use miden_core::serde::{Deserializable, Serializable}; +use miden_core::serde::Serializable; use midenc_frontend_wasm::WasmTranslationConfig; use crate::{CompilerTest, assert_helpers::assert_unique_protocol_export}; @@ -14,5 +14,5 @@ fn auth_component_no_auth() { // Test that the package loads let bytes = auth_comp_package.to_bytes(); - let _loaded_package = miden_mast_package::Package::read_from_bytes(&bytes).unwrap(); + let _loaded_package = miden_mast_package::Package::read_from_bytes_trusted(&bytes).unwrap(); } diff --git a/tests/integration/src/end_to_end/examples/auth_component_rpo_falcon512.rs b/tests/integration/src/end_to_end/examples/auth_component_rpo_falcon512.rs index ce1264b4f..684ef71ed 100644 --- a/tests/integration/src/end_to_end/examples/auth_component_rpo_falcon512.rs +++ b/tests/integration/src/end_to_end/examples/auth_component_rpo_falcon512.rs @@ -1,4 +1,4 @@ -use miden_core::serde::{Deserializable, Serializable}; +use miden_core::serde::Serializable; use midenc_frontend_wasm::WasmTranslationConfig; use crate::{CompilerTest, assert_helpers::assert_unique_protocol_export}; @@ -17,5 +17,5 @@ fn auth_component_rpo_falcon512() { // Test that the package loads let bytes = auth_comp_package.to_bytes(); - let _loaded_package = miden_mast_package::Package::read_from_bytes(&bytes).unwrap(); + let _loaded_package = miden_mast_package::Package::read_from_bytes_trusted(&bytes).unwrap(); } diff --git a/tests/integration/src/end_to_end/examples/basic_wallet_package_sizes.rs b/tests/integration/src/end_to_end/examples/basic_wallet_package_sizes.rs index 98d39b2cf..2aad6ecda 100644 --- a/tests/integration/src/end_to_end/examples/basic_wallet_package_sizes.rs +++ b/tests/integration/src/end_to_end/examples/basic_wallet_package_sizes.rs @@ -18,7 +18,7 @@ fn basic_wallet_and_p2id() { ); let account_package = account_test.compile_package(); assert!(account_package.is_library(), "expected library"); - expect!["12848"].assert_eq(stripped_mast_size_str(&account_package)); + expect!["12848"].assert_eq(stripped_mast_size_str(&account_package).as_str()); persist_cargo_miden_dependency("../../examples/basic-wallet", account_package.as_ref()); let mut tx_script_test = CompilerTest::rust_source_cargo_miden( @@ -28,7 +28,7 @@ fn basic_wallet_and_p2id() { ); let tx_script_package = tx_script_test.compile_package(); assert!(tx_script_package.is_library(), "expected library"); - expect!["14238"].assert_eq(stripped_mast_size_str(&tx_script_package)); + expect!["14238"].assert_eq(stripped_mast_size_str(&tx_script_package).as_str()); let mut p2id_test = CompilerTest::rust_source_cargo_miden( "../../examples/p2id-note", @@ -37,7 +37,7 @@ fn basic_wallet_and_p2id() { ); let note_package = p2id_test.compile_package(); assert!(note_package.is_library(), "expected library"); - expect!["14875"].assert_eq(stripped_mast_size_str(¬e_package)); + expect!["14875"].assert_eq(stripped_mast_size_str(¬e_package).as_str()); let mut p2ide_test = CompilerTest::rust_source_cargo_miden( "../../examples/p2ide-note", @@ -46,5 +46,5 @@ fn basic_wallet_and_p2id() { ); let p2ide_package = p2ide_test.compile_package(); assert!(p2ide_package.is_library(), "expected library"); - expect!["17252"].assert_eq(stripped_mast_size_str(&p2ide_package)); + expect!["17252"].assert_eq(stripped_mast_size_str(&p2ide_package).as_str()); } diff --git a/tests/integration/src/end_to_end/examples/collatz.rs b/tests/integration/src/end_to_end/examples/collatz.rs index 93454f0fe..d933c7634 100644 --- a/tests/integration/src/end_to_end/examples/collatz.rs +++ b/tests/integration/src/end_to_end/examples/collatz.rs @@ -31,9 +31,9 @@ fn collatz() { .run(&(1u32..30), move |a| { let rust_out = expected(a); let args = a.to_felts().to_vec(); - let exec = executor_with_std(args, Some(&package)); + let exec = executor_with_std(args); let output: u32 = - exec.execute_into(&package.unwrap_program(), test.session.source_manager.clone()); + exec.execute_into(package.clone(), test.session.source_manager.clone()); dbg!(output); prop_assert_eq!(rust_out, output); Ok(()) diff --git a/tests/integration/src/end_to_end/examples/fibonacci.rs b/tests/integration/src/end_to_end/examples/fibonacci.rs index 2f6896b3c..e0453da34 100644 --- a/tests/integration/src/end_to_end/examples/fibonacci.rs +++ b/tests/integration/src/end_to_end/examples/fibonacci.rs @@ -26,9 +26,9 @@ fn fibonacci() { TestRunner::default() .run(&(1u32..30), move |a| { let rust_out = expected_fib(a); - let exec = executor_with_std(vec![Felt::new_unchecked(a as u64)], Some(&package)); + let exec = executor_with_std(vec![Felt::new_unchecked(a as u64)]); let output: u32 = - exec.execute_into(&package.unwrap_program(), test.session.source_manager.clone()); + exec.execute_into(package.clone(), test.session.source_manager.clone()); dbg!(output); prop_assert_eq!(rust_out, output); Ok(()) diff --git a/tests/integration/src/end_to_end/examples/is_prime.rs b/tests/integration/src/end_to_end/examples/is_prime.rs index 3fa296e4c..9d2542024 100644 --- a/tests/integration/src/end_to_end/examples/is_prime.rs +++ b/tests/integration/src/end_to_end/examples/is_prime.rs @@ -67,9 +67,9 @@ fn is_prime() { prop_assert_eq!(rust_out as i32, result); let args = a.to_felts().to_vec(); - let exec = executor_with_std(args, Some(&package)); + let exec = executor_with_std(args); let output: u32 = - exec.execute_into(&package.unwrap_program(), test.session.source_manager.clone()); + exec.execute_into(package.clone(), test.session.source_manager.clone()); dbg!(output); prop_assert_eq!(rust_out as u32, output); Ok(()) diff --git a/tests/integration/src/end_to_end/intrinsics/i32_arithmetic.rs b/tests/integration/src/end_to_end/intrinsics/i32_arithmetic.rs index c4e60c08f..0246e3f63 100644 --- a/tests/integration/src/end_to_end/intrinsics/i32_arithmetic.rs +++ b/tests/integration/src/end_to_end/intrinsics/i32_arithmetic.rs @@ -25,7 +25,8 @@ where F1: Fn(&S::Value) -> Vec, F2: Fn(&S::Value) -> Result, TrapExpectation>, { - let program = assemble_test_program(proc_body); + let package = assemble_test_program(proc_body); + let program = package.unwrap_program(); let res = NumericStrategy::::test_runner().run(&strategy, |input_tuple| { let expected_result = to_expected(&input_tuple); diff --git a/tests/integration/src/end_to_end/intrinsics/i64_arithmetic.rs b/tests/integration/src/end_to_end/intrinsics/i64_arithmetic.rs index 9608d6ceb..59baca0b6 100644 --- a/tests/integration/src/end_to_end/intrinsics/i64_arithmetic.rs +++ b/tests/integration/src/end_to_end/intrinsics/i64_arithmetic.rs @@ -35,7 +35,8 @@ fn test_i64_intrinsic( F2: Fn(&S::Value) -> Result, TrapExpectation>, D: Fn(&[Felt]) -> Vec, { - let program = assemble_test_program(proc_body); + let package = assemble_test_program(proc_body); + let program = package.unwrap_program(); let res = NumericStrategy::::test_runner().run(&strategy, |input_tuple| { let expected_result = to_expected(&input_tuple); diff --git a/tests/integration/src/end_to_end/intrinsics/operators.rs b/tests/integration/src/end_to_end/intrinsics/operators.rs index f7ee04639..be371baec 100644 --- a/tests/integration/src/end_to_end/intrinsics/operators.rs +++ b/tests/integration/src/end_to_end/intrinsics/operators.rs @@ -34,7 +34,7 @@ macro_rules! test_bin_op { let mut args = Vec::::default(); a.push_to_operand_stack(&mut args); b.push_to_operand_stack(&mut args); - run_masm_vs_rust(rs_out, &package, &args, &test.session) + run_masm_vs_rust(rs_out, package.clone(), &args, &test.session) }); match res { Err(TestError::Fail(_, value)) => { @@ -71,7 +71,7 @@ macro_rules! test_bin_op_via_u64 { let mut args = Vec::::default(); a.push_to_operand_stack(&mut args); b.push_to_operand_stack(&mut args); - run_masm_vs_rust(rs_out, &package, &args, &test.session) + run_masm_vs_rust(rs_out, package.clone(), &args, &test.session) }); match res { Err(TestError::Fail(_, value)) => { diff --git a/tests/integration/src/end_to_end/memory/support.rs b/tests/integration/src/end_to_end/memory/support.rs index 3c052dac0..c6246c6ca 100644 --- a/tests/integration/src/end_to_end/memory/support.rs +++ b/tests/integration/src/end_to_end/memory/support.rs @@ -14,7 +14,7 @@ pub(super) fn assert_memory_test_returns_zero(artifact_name: &'static str, main_ let package = test.compile_package(); let args: [Felt; 0] = []; - eval_package::(&package, [], &args, &test.session, |trace| { + eval_package::(package, [], &args, &test.session, |trace| { let res: Felt = trace.parse_result().unwrap(); assert_eq!(res, Felt::ZERO); Ok(()) diff --git a/tests/integration/src/end_to_end/regressions/func_arg_order.rs b/tests/integration/src/end_to_end/regressions/func_arg_order.rs index 3769e2506..2256ea9a3 100644 --- a/tests/integration/src/end_to_end/regressions/func_arg_order.rs +++ b/tests/integration/src/end_to_end/regressions/func_arg_order.rs @@ -71,6 +71,6 @@ fn func_arg_order() { Felt::ZERO, ]; - eval_package::(&test.compile_package(), [], &args, &test.session, |_trace| Ok(())) + eval_package::(test.compile_package(), [], &args, &test.session, |_trace| Ok(())) .unwrap(); } diff --git a/tests/integration/src/end_to_end/regressions/func_arg_same.rs b/tests/integration/src/end_to_end/regressions/func_arg_same.rs index b3de358ca..41bc3b1df 100644 --- a/tests/integration/src/end_to_end/regressions/func_arg_same.rs +++ b/tests/integration/src/end_to_end/regressions/func_arg_same.rs @@ -33,7 +33,7 @@ fn func_arg_same() { // Test 1: addr1 is passed as x and should be returned let args1 = [Felt::from(addr1), Felt::from(addr2)]; - eval_package::(&package, [], &args1, &test.session, |trace| { + eval_package::(package.clone(), [], &args1, &test.session, |trace| { let result: u32 = trace.parse_result().unwrap(); assert_eq!(result, addr1); Ok(()) @@ -42,7 +42,7 @@ fn func_arg_same() { // Test 1: addr2 is passed as x and should be returned let args2 = [Felt::from(addr2), Felt::from(addr1)]; - eval_package::(&package, [], &args2, &test.session, |trace| { + eval_package::(package.clone(), [], &args2, &test.session, |trace| { let result: u32 = trace.parse_result().unwrap(); assert_eq!(result, addr2); Ok(()) diff --git a/tests/integration/src/end_to_end/regressions/invalid_stack_index_16_issue_872.rs b/tests/integration/src/end_to_end/regressions/invalid_stack_index_16_issue_872.rs index d29310165..6cb810b76 100644 --- a/tests/integration/src/end_to_end/regressions/invalid_stack_index_16_issue_872.rs +++ b/tests/integration/src/end_to_end/regressions/invalid_stack_index_16_issue_872.rs @@ -62,7 +62,7 @@ fn invalid_stack_index_16_issue_872() { let expected = (1u32..=16u32).fold(Felt::ZERO, |acc, x| acc + Felt::from(x)) + Felt::from(2u32); - eval_package::(&package, [], &args, &test.session, |trace| { + eval_package::(package, [], &args, &test.session, |trace| { let res: Felt = trace.parse_result().unwrap(); assert_eq!(res, expected); Ok(()) diff --git a/tests/integration/src/end_to_end/regressions/invalid_stack_index_4_word_1_felt_args.rs b/tests/integration/src/end_to_end/regressions/invalid_stack_index_4_word_1_felt_args.rs index 731ce93f0..dcf2d023c 100644 --- a/tests/integration/src/end_to_end/regressions/invalid_stack_index_4_word_1_felt_args.rs +++ b/tests/integration/src/end_to_end/regressions/invalid_stack_index_4_word_1_felt_args.rs @@ -93,7 +93,7 @@ fn invalid_stack_index_4_word_1_felt_args() { // - main adds `post` (w0[0] + 1 == 2) let expected = (1u32..=16u32).fold(Felt::ZERO, |acc, x| acc + Felt::from(x)) + Felt::from(4u32); - eval_package::(&package, [], &args, &test.session, |trace| { + eval_package::(package, [], &args, &test.session, |trace| { let res: Felt = trace.parse_result().unwrap(); assert_eq!(res, expected); Ok(()) diff --git a/tests/integration/src/end_to_end/regressions/issue1243.rs b/tests/integration/src/end_to_end/regressions/issue1243.rs index 4dacb12dd..8823346e9 100644 --- a/tests/integration/src/end_to_end/regressions/issue1243.rs +++ b/tests/integration/src/end_to_end/regressions/issue1243.rs @@ -34,13 +34,15 @@ fn br_table_default_arm_for_out_of_range_selector() { // `v = 0` makes the normalized selector wrap to `0xFFFFFFFF`, which must take the default arm. let out = - eval_package::(&package, [], &[Felt::from(0u32)], &test.session, |_| Ok(())) - .unwrap(); + eval_package::(package.clone(), [], &[Felt::from(0u32)], &test.session, |_| { + Ok(()) + }) + .unwrap(); assert_eq!(out, 10); // A selector with the high bit set without wrapping must also take the default arm. let out = eval_package::( - &package, + package, [], &[Felt::from(0x9000_0000u32)], &test.session, diff --git a/tests/integration/src/end_to_end/regressions/vec_realloc_copies_data_issue_811.rs b/tests/integration/src/end_to_end/regressions/vec_realloc_copies_data_issue_811.rs index bd4c8a087..1c24ed031 100644 --- a/tests/integration/src/end_to_end/regressions/vec_realloc_copies_data_issue_811.rs +++ b/tests/integration/src/end_to_end/regressions/vec_realloc_copies_data_issue_811.rs @@ -61,7 +61,7 @@ fn vec_realloc_copies_data_issue_811() { let package = test.compile_package(); let args: [Felt; 0] = []; - eval_package::(&package, [], &args, &test.session, |trace| { + eval_package::(package.clone(), [], &args, &test.session, |trace| { let result: u64 = trace.parse_result::().unwrap().as_canonical_u64(); assert_eq!(result, 166_665, "Vec reallocation failed to copy existing elements"); Ok(()) diff --git a/tests/integration/src/end_to_end/support.rs b/tests/integration/src/end_to_end/support.rs index f3bfd89b2..ab02c5ee7 100644 --- a/tests/integration/src/end_to_end/support.rs +++ b/tests/integration/src/end_to_end/support.rs @@ -1,9 +1,14 @@ use std::{marker::PhantomData, sync::Arc}; -use miden_assembly::{Assembler, DefaultSourceManager, Parse, ParseOptions, ast::ModuleKind}; +use miden_assembly::{ + Assembler, DefaultSourceManager, + ast::{Module, ModuleKind, Path as MasmPath}, +}; use miden_core::Felt; use miden_core_lib::{CoreLibrary, handlers::u64_div::U64DivError}; -use miden_processor::{DefaultHost, ExecutionError, Program, operation::OperationError}; +use miden_mast_package::Package; +use miden_processor::{DefaultHost, ExecutionError, operation::OperationError}; +use midenc_hir::diagnostics::PrintDiagnostic; use num_traits::{PrimInt, Unsigned}; use proptest::{ prelude::*, @@ -12,62 +17,44 @@ use proptest::{ use crate::compiler_test::{sdk_alloc_crate_path, sdk_crate_path}; -const I32_INTRINSICS_MASM: &str = include_str!("../../../../codegen/masm/intrinsics/i32.masm"); -const I64_INTRINSICS_MASM: &str = include_str!("../../../../codegen/masm/intrinsics/i64.masm"); +const INTRINSICS_ROOT: &str = + concat!(env!("CARGO_MANIFEST_DIR"), "../../codegen/masm/intrinsics/mod.masm"); /// Assembles an executable program that wraps `procedure_body` inside a procedure that is called /// as entry point. /// /// Both i32 and i64 intrinsics modules are statically linked so the body can call the intrinsics /// of either type by their fully-qualified path (`::intrinsics::i32::*` or `::intrinsics::i64::*`). -pub(super) fn assemble_test_program(procedure_body: &str) -> Program { +pub(super) fn assemble_test_program(procedure_body: &str) -> Arc { let source_manager = Arc::new(DefaultSourceManager::default()); let core_library = CoreLibrary::default(); + let mut assembler = Assembler::new(source_manager.clone()); + assembler + .link_package(core_library.package(), miden_assembly::Linkage::Dynamic) + .expect("failed to add core library"); - // Parse both intrinsic modules with their fully-qualified paths - let i32_intrinsics = I32_INTRINSICS_MASM - .parse_with_options( - source_manager.clone(), - ParseOptions::new(ModuleKind::Library, "::intrinsics::i32"), - ) - .expect("failed to parse i32 intrinsics module"); - let i64_intrinsics = I64_INTRINSICS_MASM - .parse_with_options( - source_manager.clone(), - ParseOptions::new(ModuleKind::Library, "::intrinsics::i64"), - ) - .expect("failed to parse i64 intrinsics module"); + // Parse the intrinsics + assembler + .compile_and_statically_link_from_root(INTRINSICS_ROOT, Some(MasmPath::new("intrinsics"))) + .unwrap_or_else(|err| panic!("{}", PrintDiagnostic::new(err))); // Parse the test module with its fully-qualified path let test_module_source = format!("pub proc test_intrinsic\n{procedure_body}\nend"); - let test_module = test_module_source - .parse_with_options( - source_manager.clone(), - ParseOptions::new(ModuleKind::Library, "::test"), - ) - .expect("failed to parse test module"); - - // The i64 intrinsics module references core library symbols, so core must be available during - // compile_and_statically_link. - let mut assembler = Assembler::new(source_manager.clone()) - .with_static_library(core_library.library()) - .expect("failed to link core library"); - assembler - .compile_and_statically_link(i32_intrinsics) - .expect("failed to statically link i32 intrinsics"); - assembler - .compile_and_statically_link(i64_intrinsics) - .expect("failed to statically link i64 intrinsics"); + let test_module = miden_assembly::ModuleParser::new(Some(ModuleKind::Library)) + .parse_str(Some(MasmPath::new("test")), test_module_source, source_manager.clone()) + .unwrap_or_else(|err| panic!("{}", PrintDiagnostic::new(err))); let library = assembler - .assemble_library([test_module]) - .expect("failed to assemble test library"); + .assemble_library("test", test_module, None::>) + .unwrap_or_else(|err| panic!("{}", PrintDiagnostic::new(err))); + Assembler::new(source_manager) - .with_static_library(library) - .expect("failed to link library") - .with_static_library(core_library.library()) - .expect("failed to link core library") + .with_package(core_library.package(), miden_assembly::Linkage::Dynamic) + .expect("failed to add core library") + .with_package(library.into(), miden_assembly::Linkage::Static) + .expect("failed to add library package as dependency") .assemble_program( + "program", r#" use miden::core::sys @@ -77,7 +64,8 @@ begin end "#, ) - .expect("failed to assemble program") + .map(Arc::from) + .unwrap_or_else(|err| panic!("{}", PrintDiagnostic::new(err))) } /// Returns a [`DefaultHost`] with the Miden core library loaded. @@ -85,9 +73,9 @@ end /// The core library registers the event handlers required to execute core helpers that rely on /// the advice provider. pub(super) fn default_host_with_core_lib() -> DefaultHost { - let core_library = CoreLibrary::default(); + let core_library = CoreLibrary::default().package(); let mut host = DefaultHost::default(); - host.load_library(&core_library).expect("failed to load core library into host"); + host.load_library(core_library).expect("failed to load core library into host"); host } @@ -180,6 +168,7 @@ pub(super) fn miden_project_toml(name: &str) -> String { version = "0.0.1" [lib] + path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/tests/integration/src/sdk/base/account.rs b/tests/integration/src/sdk/base/account.rs index db55126dd..6edc93109 100644 --- a/tests/integration/src/sdk/base/account.rs +++ b/tests/integration/src/sdk/base/account.rs @@ -24,6 +24,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/integration/src/sdk/base/active_note.rs b/tests/integration/src/sdk/base/active_note.rs index acaa5c418..15a649c7f 100644 --- a/tests/integration/src/sdk/base/active_note.rs +++ b/tests/integration/src/sdk/base/active_note.rs @@ -24,6 +24,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/integration/src/sdk/base/asset.rs b/tests/integration/src/sdk/base/asset.rs index f2a4158e1..8ed3dff07 100644 --- a/tests/integration/src/sdk/base/asset.rs +++ b/tests/integration/src/sdk/base/asset.rs @@ -24,6 +24,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/integration/src/sdk/base/faucet.rs b/tests/integration/src/sdk/base/faucet.rs index 5fe912f7a..0cd9f9a99 100644 --- a/tests/integration/src/sdk/base/faucet.rs +++ b/tests/integration/src/sdk/base/faucet.rs @@ -24,6 +24,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["FungibleFaucet", "NonFungibleFaucet"] diff --git a/tests/integration/src/sdk/base/input_note.rs b/tests/integration/src/sdk/base/input_note.rs index d994d3858..3d3b8a6a5 100644 --- a/tests/integration/src/sdk/base/input_note.rs +++ b/tests/integration/src/sdk/base/input_note.rs @@ -24,6 +24,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/integration/src/sdk/base/note.rs b/tests/integration/src/sdk/base/note.rs index 41b3e675b..e64a7aed9 100644 --- a/tests/integration/src/sdk/base/note.rs +++ b/tests/integration/src/sdk/base/note.rs @@ -26,6 +26,7 @@ version = "0.0.1" [lib] kind = "account" namespace = "{namespace}" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/integration/src/sdk/base/output_note.rs b/tests/integration/src/sdk/base/output_note.rs index cd7f657ed..98ed48d86 100644 --- a/tests/integration/src/sdk/base/output_note.rs +++ b/tests/integration/src/sdk/base/output_note.rs @@ -26,6 +26,7 @@ version = "0.0.1" [lib] kind = "account" namespace = "{namespace}" +path = "src/lib.rs" [package.metadata.miden] supported-types = ["RegularAccountUpdatableCode"] diff --git a/tests/integration/src/sdk/base/tx.rs b/tests/integration/src/sdk/base/tx.rs index c268ffa10..e0fd9c1f0 100644 --- a/tests/integration/src/sdk/base/tx.rs +++ b/tests/integration/src/sdk/base/tx.rs @@ -27,6 +27,7 @@ version = "0.0.1" [lib] kind = "tx-script" namespace = "miden:base/transaction-script@1.0.0" +path = "src/lib.rs" "# ); let cargo_toml = format!( diff --git a/tests/integration/src/sdk/canonabi.rs b/tests/integration/src/sdk/canonabi.rs index 93f444a15..c9367e1c5 100644 --- a/tests/integration/src/sdk/canonabi.rs +++ b/tests/integration/src/sdk/canonabi.rs @@ -2,9 +2,6 @@ use std::{fs, path::Path}; -use miden_core::program::Program; -use miden_mast_package::Package; -use miden_protocol::note::NoteScript; use midenc_frontend_wasm::WasmTranslationConfig; use midenc_integration_test_support::{ CompilerTest, CompilerTestBuilder, Project, cargo_proj::project, compiler_test::sdk_crate_path, @@ -95,6 +92,7 @@ version = "0.1.0" [lib] kind = "account-component" namespace = "miden:{account_slug}/canonabi-component@0.1.0" +path = "src/lib.rs" [dependencies] miden-core = "*" @@ -169,6 +167,7 @@ version = "0.1.0" [lib] kind = "note" namespace = "miden:{note_slug}/miden-{note_slug}@0.1.0" +path = "src/lib.rs" [dependencies] miden-core = "*" @@ -223,13 +222,6 @@ fn build_generated_test(root: impl AsRef) -> CompilerTest { builder.build() } -/// Rebuilds an executable program from a compiled note-script package. -fn note_script_program(package: &Package) -> Program { - let note_script = - NoteScript::from_package(package).expect("compiled package should contain a note script"); - Program::new(note_script.mast(), note_script.entrypoint()) -} - /// Reads the single generated WIT file emitted by the account project. fn read_generated_wit(project: &Project) -> String { let generated_wit_dir = project.root().join("target/generated-wit"); @@ -268,13 +260,10 @@ fn run_canonabi_case( let note_package = note_test.compile_package(); assert!(note_package.is_library()); - let program = note_script_program(note_package.as_ref()); - let mut exec = executor_with_std(vec![], None); - exec.dependency_resolver_mut() - .insert(*account_package.mast.digest(), account_package.mast.clone()); - exec.with_dependencies(note_package.manifest.dependencies()) - .expect("failed to add generated note dependencies"); - let _trace = exec.execute(&program, note_test.session.source_manager.clone()); + let program = super::note_script_program(note_package); + let mut exec = executor_with_std(vec![]); + exec.with_package(account_package).expect("failed to add account package"); + let _trace = exec.execute(program, note_test.session.source_manager.clone()); } /// Indents every line of `source` by `spaces`. diff --git a/tests/integration/src/sdk/macros.rs b/tests/integration/src/sdk/macros.rs index 2d134f3b8..f1b2c9ab6 100644 --- a/tests/integration/src/sdk/macros.rs +++ b/tests/integration/src/sdk/macros.rs @@ -78,6 +78,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" @@ -163,6 +164,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" @@ -241,6 +243,7 @@ version = "0.0.1" [lib] kind = "note" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" @@ -317,6 +320,7 @@ version = "0.0.1" [lib] kind = "note" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" @@ -403,6 +407,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" @@ -676,6 +681,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" @@ -1248,6 +1254,7 @@ version = "0.0.1" [lib] kind = "account-component" namespace = "{namespace}" +path = "src/lib.rs" [dependencies] miden-core = "*" diff --git a/tests/integration/src/sdk/mod.rs b/tests/integration/src/sdk/mod.rs index 11b942511..71877fd16 100644 --- a/tests/integration/src/sdk/mod.rs +++ b/tests/integration/src/sdk/mod.rs @@ -1,11 +1,8 @@ -use std::{collections::BTreeSet, path::Path}; +use std::{path::Path, sync::Arc}; use miden_assembly::ast::types::{FunctionType, Type}; -use miden_core::{ - program::Program, - serde::{Deserializable, Serializable}, -}; -use miden_mast_package::{PackageExport, ProcedureExport}; +use miden_core::serde::Serializable; +use miden_mast_package::{PackageExport, ProcedureExport, QualifiedProcedureName}; use miden_protocol::note::NoteScript; use midenc_frontend_wasm::WasmTranslationConfig; @@ -22,29 +19,17 @@ mod macros; mod stdlib; /// Rebuilds an executable program from a compiled note-script package for direct execution tests. -fn note_script_program(package: &miden_mast_package::Package) -> Program { +pub(crate) fn note_script_program( + package: Arc, +) -> Arc { let note_script = - NoteScript::from_package(package).expect("compiled package should contain a note script"); - Program::new(note_script.mast(), note_script.entrypoint()) -} - -/// Assert that package metadata exposes the same exported paths as the underlying library. -fn assert_manifest_exports_match_library(package: &miden_mast_package::Package) { - let library_exports = package - .mast - .exports() - .map(|export| export.path().as_ref().as_str().to_string()) - .collect::>(); - let manifest_exports = package - .manifest - .exports() - .map(|export| export.path().as_ref().as_str().to_string()) - .collect::>(); - - assert_eq!( - manifest_exports, library_exports, - "package manifest exports diverged from library exports" - ); + NoteScript::from_package(&package).expect("compiled package should contain a note script"); + let entrypoint_id = note_script.entrypoint(); + let entrypoint = package.manifest.exports().find(|export| matches!(export.as_procedure(), Some(p) if p.node.is_some_and(|node| node == entrypoint_id))).unwrap(); + package + .make_executable(&QualifiedProcedureName::from(entrypoint.path())) + .map(Arc::new) + .unwrap() } /// Writes a compiled package where `miden::generate!` expects Cargo Miden dependency artifacts. @@ -65,10 +50,7 @@ fn find_manifest_procedure<'a>( let matches = package .manifest .exports() - .filter_map(|export| match export { - PackageExport::Procedure(export) => Some(export), - PackageExport::Constant(_) | PackageExport::Type(_) => None, - }) + .filter_map(|export| export.as_procedure()) .filter(|export| predicate(export.path.as_ref().as_str())) .collect::>(); assert_eq!( @@ -173,6 +155,7 @@ fn rust_sdk_swapp_note_bindings() { [lib] kind = "note" namespace = "{namespace}" + path = "src/lib.rs" "# ); let cargo_toml = format!( @@ -277,16 +260,18 @@ fn rust_sdk_cross_ctx_account_and_note() { account_package.as_ref(), ); assert!(account_package.is_library()); - assert_manifest_exports_match_library(account_package.as_ref()); - let lib = account_package.mast.clone(); - let exports = lib + let exports = account_package + .manifest .exports() .filter(|e| !e.path().as_ref().as_str().starts_with("intrinsics")) .map(|e| e.path().as_ref().as_str().to_string()) .collect::>(); assert!( - !lib.exports() - .any(|export| export.path().as_ref().as_str().starts_with("intrinsics")), + !account_package.manifest.exports().any(|export| export + .path() + .as_ref() + .as_str() + .starts_with("intrinsics")), "expected no intrinsics in the exports" ); let expected_module_prefix = "::\"miden:cross-ctx-account/"; @@ -299,8 +284,8 @@ fn rust_sdk_cross_ctx_account_and_note() { ); // Test that the package loads let bytes = account_package.to_bytes(); - let loaded_package = miden_mast_package::Package::read_from_bytes(&bytes).unwrap(); - assert_manifest_exports_match_library(&loaded_package); + let loaded_package = miden_mast_package::Package::read_from_bytes_trusted(&bytes).unwrap(); + assert_eq!(&account_package.manifest, &loaded_package.manifest); // Build counter note let builder = CompilerTestBuilder::rust_source_cargo_miden( @@ -312,13 +297,10 @@ fn rust_sdk_cross_ctx_account_and_note() { let mut test = builder.build(); let package = test.compile_package(); assert!(package.is_library()); - let program = note_script_program(package.as_ref()); - let mut exec = executor_with_std(vec![], None); - exec.dependency_resolver_mut() - .insert(*account_package.mast.digest(), account_package.mast.clone()); - exec.with_dependencies(package.manifest.dependencies()) - .expect("failed to add package dependencies"); - let _trace = exec.execute(&program, test.session.source_manager.clone()); + let program = note_script_program(package); + let mut exec = executor_with_std(vec![]); + exec.with_package(account_package).expect("failed to add account package"); + let _trace = exec.execute(program, test.session.source_manager.clone()); } #[test] @@ -335,11 +317,11 @@ fn rust_sdk_cross_ctx_account_and_note_word() { account_package.as_ref(), ); assert!(account_package.is_library()); - let lib = account_package.mast.clone(); assert_component_export_signatures_match_wit(account_package.as_ref()); let expected_module_prefix = "::\"miden:cross-ctx-account-word/"; let expected_function_suffix = "\"process-word\""; - let exports = lib + let exports = account_package + .manifest .exports() .filter(|e| !e.path().as_ref().as_str().starts_with("intrinsics")) .map(|e| e.path().as_ref().as_str().to_string()) @@ -353,7 +335,7 @@ fn rust_sdk_cross_ctx_account_and_note_word() { ); // Test that the package loads let bytes = account_package.to_bytes(); - let _loaded_package = miden_mast_package::Package::read_from_bytes(&bytes).unwrap(); + let _loaded_package = miden_mast_package::Package::read_from_bytes_trusted(&bytes).unwrap(); // Build counter note let builder = CompilerTestBuilder::rust_source_cargo_miden( @@ -365,13 +347,10 @@ fn rust_sdk_cross_ctx_account_and_note_word() { let mut test = builder.build(); let package = test.compile_package(); assert!(package.is_library()); - let program = note_script_program(package.as_ref()); - let mut exec = executor_with_std(vec![], None); - exec.dependency_resolver_mut() - .insert(*account_package.mast.digest(), account_package.mast.clone()); - exec.with_dependencies(package.manifest.dependencies()) - .expect("failed to add package dependencies"); - let _trace = exec.execute(&program, test.session.source_manager.clone()); + let program = note_script_program(package.clone()); + let mut exec = executor_with_std(vec![]); + exec.with_package(account_package).expect("failed to add account package"); + let _trace = exec.execute(program, test.session.source_manager.clone()); } /// Regression test for https://github.com/0xMiden/compiler/issues/1257 @@ -392,7 +371,7 @@ fn rust_sdk_account_package_build_is_deterministic() { ); let masm_src = test.masm_src(); let package = test.compile_package(); - let digest = *package.mast.digest(); + let digest = package.digest(); let bytes = package.to_bytes(); let Some((first_digest, first_bytes, first_masm)) = baseline.as_ref() else { baseline = Some((digest, bytes, masm_src)); @@ -436,10 +415,10 @@ fn rust_sdk_cross_ctx_word_arg_account_and_note() { ); assert!(account_package.is_library()); - let lib = account_package.mast.clone(); let expected_module_prefix = "::\"miden:cross-ctx-account-word-arg/"; let expected_function_suffix = "\"process-word\""; - let exports = lib + let exports = account_package + .manifest .exports() .filter(|e| !e.path().as_ref().as_str().starts_with("intrinsics")) .map(|e| e.path().as_ref().as_str().to_string()) @@ -460,11 +439,8 @@ fn rust_sdk_cross_ctx_word_arg_account_and_note() { let mut test = builder.build(); let package = test.compile_package(); assert!(package.is_library()); - let program = note_script_program(package.as_ref()); - let mut exec = executor_with_std(vec![], None); - exec.dependency_resolver_mut() - .insert(*account_package.mast.digest(), account_package.mast.clone()); - exec.with_dependencies(package.manifest.dependencies()) - .expect("failed to add package dependencies"); - let _trace = exec.execute(&program, test.session.source_manager.clone()); + let program = note_script_program(package.clone()); + let mut exec = executor_with_std(vec![]); + exec.with_package(account_package).expect("failed to add account package"); + let _trace = exec.execute(program, test.session.source_manager.clone()); } diff --git a/tests/integration/src/sdk/stdlib/collections.rs b/tests/integration/src/sdk/stdlib/collections.rs index d17855c44..7acce546a 100644 --- a/tests/integration/src/sdk/stdlib/collections.rs +++ b/tests/integration/src/sdk/stdlib/collections.rs @@ -1,15 +1,10 @@ -use std::sync::Arc; - use miden_core::{ Felt, Word, crypto::merkle::{MerkleStore, Smt}, }; -use miden_debug::Executor; use miden_processor::advice::AdviceInputs; -use miden_protocol::ProtocolLib; -use miden_standards::StandardsLib; use midenc_frontend_wasm::WasmTranslationConfig; -use midenc_session::STDLIB; +use midenc_integration_test_support::testing; use crate::CompilerTest; @@ -56,19 +51,6 @@ fn push_word_args(args: &mut Vec, word: Word) { args.push(d); } -fn executor_with_std(args: Vec) -> Executor { - let mut exec = Executor::new(args); - let std_library = (*STDLIB).clone(); - exec.dependency_resolver_mut().insert(*std_library.digest(), std_library); - let protocol_library = Arc::new(ProtocolLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*protocol_library.digest(), protocol_library); - let standards_library = Arc::new(StandardsLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*standards_library.digest(), standards_library); - exec -} - #[test] fn smt_get_binding() { let entries = [ @@ -131,12 +113,10 @@ fn smt_get_binding() { push_word_args(&mut args, key); push_word_args(&mut args, root); - let mut exec = executor_with_std(args.clone()); - exec.with_dependencies(package.manifest.dependencies()) - .expect("failed to add package dependencies"); + let mut exec = testing::executor_with_std(args.clone()); exec.with_advice_inputs(advice_inputs); - exec.execute(&package.unwrap_program(), test.session.source_manager.clone()); + exec.execute(package, test.session.source_manager.clone()); } #[test] @@ -220,10 +200,8 @@ fn smt_set_binding() { push_word_args(&mut args, key); push_word_args(&mut args, root); - let mut exec = executor_with_std(args.clone()); - exec.with_dependencies(package.manifest.dependencies()) - .expect("failed to add package dependencies"); + let mut exec = testing::executor_with_std(args.clone()); exec.with_advice_inputs(advice_inputs); - exec.execute(&package.unwrap_program(), test.session.source_manager.clone()); + exec.execute(package, test.session.source_manager.clone()); } diff --git a/tests/integration/src/sdk/stdlib/hashes.rs b/tests/integration/src/sdk/stdlib/hashes.rs index 3a2c2b475..eaa6ebe91 100644 --- a/tests/integration/src/sdk/stdlib/hashes.rs +++ b/tests/integration/src/sdk/stdlib/hashes.rs @@ -44,7 +44,7 @@ where // The generated `entrypoint` uses the `(out_ptr, in_ptr)` convention. let args = [Felt::new_unchecked(out_addr as u64), Felt::new_unchecked(in_addr as u64)]; - eval_package::(&package, initializers, &args, &session, |trace| { + eval_package::(package.clone(), initializers, &args, &session, |trace| { let vm_in: [u8; 32] = trace .read_from_rust_memory(in_addr) .expect("expected memory to have been written"); @@ -95,7 +95,7 @@ where }]; let args = [Felt::new_unchecked(out_addr as u64), Felt::new_unchecked(in_addr as u64)]; - eval_package::(&package, initializers, &args, &test.session, |trace| { + eval_package::(package.clone(), initializers, &args, &test.session, |trace| { let vm_in: [u8; 64] = trace .read_from_rust_memory(in_addr) .expect("expected memory to have been written"); diff --git a/tests/integration/tests/println_expr.rs b/tests/integration/tests/println_expr.rs index 901d65418..67f69b22a 100644 --- a/tests/integration/tests/println_expr.rs +++ b/tests/integration/tests/println_expr.rs @@ -30,7 +30,7 @@ fn println_dynamic() { log::set_max_level(log::LevelFilter::Info); let args = [Felt::from(7u32)]; - eval_package::(&package, [], &args, &test.session, |trace| { + eval_package::(package, [], &args, &test.session, |trace| { let result: Felt = trace.parse_result().unwrap(); assert_eq!(result, Felt::from(0u32)); Ok(()) diff --git a/tests/integration/tests/println_literal.rs b/tests/integration/tests/println_literal.rs index f50de6d9c..ac620e823 100644 --- a/tests/integration/tests/println_literal.rs +++ b/tests/integration/tests/println_literal.rs @@ -23,7 +23,7 @@ fn println_static() { log::set_max_level(log::LevelFilter::Info); let args = []; - eval_package::(&package, [], &args, &test.session, |trace| { + eval_package::(package, [], &args, &test.session, |trace| { let result: Felt = trace.parse_result().unwrap(); assert_eq!(result, Felt::from(0u32)); Ok(()) diff --git a/tests/support/src/compiler_test.rs b/tests/support/src/compiler_test.rs index ee64b0f53..5f17f6a7e 100644 --- a/tests/support/src/compiler_test.rs +++ b/tests/support/src/compiler_test.rs @@ -582,7 +582,7 @@ impl CompilerTestBuilder { [[bin]] name = "{name}" - path = "" + path = "src/lib.rs" [dependencies] miden-core = "*" @@ -726,7 +726,7 @@ impl CompilerTestBuilder { [[bin]] name = "{name}" - path = "" + path = "src/lib.rs" [dependencies] {project_dependencies} @@ -1043,33 +1043,33 @@ impl CompilerTest { } } +const CARGO_MANIFEST_DIR: &str = env!("CARGO_MANIFEST_DIR"); + fn stdlib_sys_crate_path() -> PathBuf { - let cwd = std::env::current_dir().unwrap(); + let cwd = Path::new(CARGO_MANIFEST_DIR); cwd.parent().unwrap().parent().unwrap().join("sdk").join("stdlib-sys") } /// Get the path to the `miden-sdk-alloc` crate pub fn sdk_alloc_crate_path() -> PathBuf { - let cwd = std::env::current_dir().unwrap(); + let cwd = Path::new(CARGO_MANIFEST_DIR); cwd.parent().unwrap().parent().unwrap().join("sdk").join("alloc") } /// Get the path to the `miden-sdk` crate pub fn sdk_crate_path() -> PathBuf { - let cwd = std::env::current_dir().unwrap(); + let cwd = Path::new(CARGO_MANIFEST_DIR); cwd.parent().unwrap().parent().unwrap().join("sdk").join("sdk") } /// Get the directory for the top-level workspace fn get_workspace_dir() -> String { // Get the directory for the integration test suite project - let cargo_manifest_dir = std::env::var("CARGO_MANIFEST_DIR") - .unwrap_or(std::env::current_dir().unwrap().to_str().unwrap().to_string()); - let cargo_manifest_dir_path = Path::new(&cargo_manifest_dir); + let cargo_manifest_dir = Path::new(CARGO_MANIFEST_DIR); // "Exit" the integration test suite project directory to the compiler workspace directory // i.e. out of the `tests/integration` directory let compiler_workspace_dir = - cargo_manifest_dir_path.parent().unwrap().parent().unwrap().to_str().unwrap(); + cargo_manifest_dir.parent().unwrap().parent().unwrap().to_str().unwrap(); compiler_workspace_dir.to_string() } diff --git a/tests/support/src/testing/eval.rs b/tests/support/src/testing/eval.rs index 7b9cc2f50..55634e3f7 100644 --- a/tests/support/src/testing/eval.rs +++ b/tests/support/src/testing/eval.rs @@ -4,11 +4,11 @@ use miden_core::Felt; use miden_core_lib::CoreLibrary; use miden_debug::{ExecutionTrace, Executor, FromMidenRepr}; use miden_processor::advice::AdviceInputs; -use miden_protocol::ProtocolLib; +use miden_protocol::{ProtocolLib, transaction::TransactionKernel}; use miden_standards::StandardsLib; use midenc_compile::MidenComponent; use midenc_hir::{Type, dialects::builtin::attributes::Signature}; -use midenc_session::{STDLIB, Session}; +use midenc_session::{PackageId, Session}; use proptest::{prop_assert_eq, test_runner::TestCaseError}; use super::*; @@ -17,7 +17,7 @@ use super::*; /// to the output produced from an equivalent Rust program pub fn run_masm_vs_rust( rust_out: T, - package: &miden_mast_package::Package, + package: Arc, args: &[Felt], session: &Session, ) -> Result<(), TestCaseError> @@ -38,7 +38,7 @@ where /// * `verify_trace` is a callback which gets the [ExecutionTrace], and can be used to assert /// things about the trace, such as the state of memory at program exit. pub fn eval_package<'a, T, I, F>( - package: &miden_mast_package::Package, + package: Arc, initializers: I, args: &[Felt], session: &Session, @@ -71,7 +71,7 @@ where /// * `verify_trace` is a callback which gets the [ExecutionTrace], and can be used to assert /// things about the trace, such as the state of memory at program exit. pub fn eval_package_with_advice_stack<'a, T, I, A, F>( - package: &miden_mast_package::Package, + package: Arc, initializers: I, advice_stack: A, args: &[Felt], @@ -145,31 +145,52 @@ where advice_stack.insert(0, Felt::new_unchecked(num_initializers)); advice_stack.extend(user_advice_stack); - let mut exec = Executor::new(args.to_vec()); + let registry = miden_debug::HybridPackageRegistry::new( + session.options.sysroot.as_deref(), + session.options.search_paths.as_slice(), + &session + .options + .link_libraries + .iter() + .filter(|ll| !ll.is_core() && !ll.is_protocol()) + .map(|ll| miden_debug::LinkLibrary { + name: PackageId::from(ll.name.as_ref()), + path: ll.path.clone(), + linkage: ll.linkage, + }) + .collect::>(), + ) + .map_err(|err| TestCaseError::fail(err.to_string()))?; + let mut exec = Executor::new(args.to_vec()).with_registry(registry); + + // Register the standard library so dependencies can be resolved at runtime. let core_library = CoreLibrary::default(); + exec.with_package(core_library.package()) + .map_err(|err| TestCaseError::fail(err.to_string()))?; // The debug executor path does not automatically install core-library event handlers, but // integration tests execute core helpers such as `u64::div` through the VM. for (event, handler) in core_library.handlers() { - exec.register_event_handler(event, handler) - .expect("failed to register core library event handler"); + if matches!( + miden_debug::Event::from(event.clone()), + miden_debug::Event::UserDefined(_) | miden_debug::Event::Unknown(_) + ) { + exec.register_event_handler(event, handler) + .expect("failed to register core library event handler"); + } } - // Register the standard library so dependencies can be resolved at runtime. - let std_library = (*STDLIB).clone(); - exec.dependency_resolver_mut().insert(*std_library.digest(), std_library); - let protocol_library = Arc::new(ProtocolLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*protocol_library.digest(), protocol_library); - let standards_library = Arc::new(StandardsLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*standards_library.digest(), standards_library); - - exec.with_dependencies(package.manifest.dependencies()) - .map_err(|err| TestCaseError::fail(format_report(err)))?; + let tx_kernel = TransactionKernel::package(); + let protocol_lib = ProtocolLib::default().package(); + exec.with_package(tx_kernel) + .map_err(|err| TestCaseError::fail(err.to_string()))?; + exec.with_package(protocol_lib) + .map_err(|err| TestCaseError::fail(err.to_string()))?; + exec.with_package(Arc::new(StandardsLib::default().as_ref().clone())) + .map_err(|err| TestCaseError::fail(err.to_string()))?; exec.with_advice_inputs(AdviceInputs::default().with_stack(advice_stack)); - let trace = exec.execute(&package.unwrap_program(), session.source_manager.clone()); + let trace = exec.execute(package, session.source_manager.clone()); verify_trace(&trace)?; Ok(trace.parse_result::().expect("expected output was not returned")) } @@ -269,12 +290,5 @@ where F: Fn(&ExecutionTrace) -> Result<(), TestCaseError>, { let package = compile_miden_component_to_package(component)?; - eval_package_with_advice_stack( - &package, - initializers, - advice_stack, - args, - session, - verify_trace, - ) + eval_package_with_advice_stack(package, initializers, advice_stack, args, session, verify_trace) } diff --git a/tests/support/src/testing/mod.rs b/tests/support/src/testing/mod.rs index a0b513eba..2d01654bd 100644 --- a/tests/support/src/testing/mod.rs +++ b/tests/support/src/testing/mod.rs @@ -11,9 +11,8 @@ use miden_assembly::serde::Serializable; use miden_core::Felt; use miden_debug::Executor; use miden_mast_package::Package; -use miden_protocol::ProtocolLib; +use miden_protocol::{ProtocolLib, transaction::TransactionKernel}; use miden_standards::StandardsLib; -use midenc_session::STDLIB; pub use self::{ eval::{ @@ -27,24 +26,32 @@ pub use self::{ /// Creates an executor with standard library and base library loaded. /// /// If a package is provided, its dependencies will also be added to the executor. -pub fn executor_with_std(args: Vec, package: Option<&Package>) -> Executor { +pub fn executor_with_std(args: Vec) -> Executor { let mut exec = Executor::new(args); - let std_library = (*STDLIB).clone(); - exec.dependency_resolver_mut() - .insert(*std_library.digest(), std_library.clone()); - exec.with_library(std_library); - let protocol_library = Arc::new(ProtocolLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*protocol_library.digest(), protocol_library.clone()); - exec.with_library(protocol_library); - let standards_library = Arc::new(StandardsLib::default().as_ref().clone()); - exec.dependency_resolver_mut() - .insert(*standards_library.digest(), standards_library.clone()); - exec.with_library(standards_library); - if let Some(pkg) = package { - exec.with_dependencies(pkg.manifest.dependencies()) - .expect("Failed to set up dependencies"); + + // Register the standard library so dependencies can be resolved at runtime. + let core_library = miden_core_lib::CoreLibrary::default(); + exec.with_package(core_library.package()) + .expect("failed to register core package"); + // The debug executor path does not automatically install core-library event handlers, but + // integration tests execute core helpers such as `u64::div` through the VM. + for (event, handler) in core_library.handlers() { + if matches!( + miden_debug::Event::from(event.clone()), + miden_debug::Event::UserDefined(_) | miden_debug::Event::Unknown(_) + ) { + exec.register_event_handler(event, handler) + .expect("failed to register core library event handler"); + } } + + let tx_kernel = TransactionKernel::package(); + let protocol_lib = ProtocolLib::default().package(); + exec.with_package(tx_kernel).expect("failed to register tx-kernel package"); + exec.with_package(protocol_lib).expect("failed to register protocol package"); + exec.with_package(Arc::new(StandardsLib::default().as_ref().clone())) + .expect("failed to register standards package"); + exec } @@ -70,9 +77,6 @@ pub fn format_report(report: miden_assembly::diagnostics::Report) -> String { } /// Returns the serialized byte size of the MastForest with stripped debug info -pub fn stripped_mast_size_str(package: &Package) -> &str { - let mut note_mast = package.mast.mast_forest().as_ref().clone(); - note_mast.clear_debug_info(); - let compacted_size = note_mast.to_bytes().len(); - Box::leak(compacted_size.to_string().into_boxed_str()) +pub fn stripped_mast_size_str(package: &Package) -> String { + package.mast_forest().to_bytes().len().to_string() } diff --git a/tests/support/src/testing/setup.rs b/tests/support/src/testing/setup.rs index 57336914a..4a4e73f85 100644 --- a/tests/support/src/testing/setup.rs +++ b/tests/support/src/testing/setup.rs @@ -1,5 +1,8 @@ //! This module provides core utilities for setting up the necessary artifacts and state for tests. -use std::{path::PathBuf, rc::Rc}; +use std::{ + path::{Path, PathBuf}, + rc::Rc, +}; use midenc_compile::MidenComponent; pub use midenc_hir::testing::enable_compiler_instrumentation; @@ -76,6 +79,13 @@ pub fn build_empty_component_for_test(context: Rc) -> MidenComponent { world, component: Some(component), account_component_metadata_bytes: None, + source_provenance: miden_assembly::ProjectSourceProvenanceInputs { + root: miden_assembly::SourceFileProvenance { + path: Path::new("mod.rs").to_path_buf().into_boxed_path(), + content: String::new().into_boxed_str(), + }, + support: Default::default(), + }, } } diff --git a/tools/cargo-miden/src/template.rs b/tools/cargo-miden/src/template.rs index 4a2e1e9d6..7910da1a5 100644 --- a/tools/cargo-miden/src/template.rs +++ b/tools/cargo-miden/src/template.rs @@ -143,6 +143,7 @@ version = \"{}\" "account" | "account-component" | "authentication-component" => { manifest.push_str("[lib]\n"); manifest.push_str("kind = \"account-component\"\n"); + manifest.push_str("path = \"src/lib.rs\"\n"); manifest.push_str(&format!( "namespace = \"{}\"\n\n", account_component_namespace(package_name, package_version) @@ -151,6 +152,7 @@ version = \"{}\" "note" | "note-script" => { manifest.push_str("[lib]\n"); manifest.push_str("kind = \"note\"\n"); + manifest.push_str("path = \"src/lib.rs\"\n"); manifest.push_str(&format!( "namespace = \"{}\"\n\n", component_namespace(package_name, package_version) @@ -160,11 +162,12 @@ version = \"{}\" manifest.push_str("[lib]\n"); manifest.push_str("kind = \"tx-script\"\n"); manifest.push_str("namespace = \"miden:base/transaction-script@1.0.0\"\n\n"); + manifest.push_str("path = \"src/lib.rs\"\n"); } _ => { manifest.push_str("[[bin]]\n"); manifest.push_str(&format!("name = \"{}\"\n", toml_escape(package_name))); - manifest.push_str("path = \"\"\n\n"); + manifest.push_str("path = \"src/lib.rs\"\n\n"); } } diff --git a/tools/cargo-miden/tests/workspace.rs b/tools/cargo-miden/tests/workspace.rs index 13177bc09..a6da6216d 100644 --- a/tools/cargo-miden/tests/workspace.rs +++ b/tools/cargo-miden/tests/workspace.rs @@ -1,7 +1,6 @@ -use std::{env, fs, path::Path}; +use std::{assert_matches, env, fs, path::Path}; use cargo_miden::run; -use midenc_session::diagnostics::assert_matches; use crate::utils::{current_dir_lock, project_template_arg, workspace_root}; diff --git a/tools/objtool/src/decorators.rs b/tools/objtool/src/decorators.rs deleted file mode 100644 index 85bae0147..000000000 --- a/tools/objtool/src/decorators.rs +++ /dev/null @@ -1,231 +0,0 @@ -use std::{fs, path::PathBuf}; - -use anyhow::{Context, Result}; -use clap::Args; -use miden_core::{ - mast::MastForest, - serde::{Deserializable, Serializable}, -}; -use miden_mast_package::{Package, TargetType}; - -#[derive(Debug, Clone, Args)] -#[command(arg_required_else_help = true)] -pub struct DecoratorsCommand { - /// Path to the input .masp file - #[arg(required = true)] - pub path: PathBuf, -} - -#[derive(Debug, Clone, Copy)] -enum ArtifactKind { - Program, - Library, -} - -impl ArtifactKind { - fn from_package(package: &Package) -> Self { - if package.is_program() { - ArtifactKind::Program - } else { - ArtifactKind::Library - } - } -} - -impl std::fmt::Display for ArtifactKind { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Self::Program => write!(f, "program"), - Self::Library => write!(f, "library"), - } - } -} - -pub fn run(command: &DecoratorsCommand) -> Result<()> { - let input_bytes = fs::read(&command.path) - .with_context(|| format!("failed to read input file '{}'", command.path.display()))?; - let masp_size = input_bytes.len(); - - let package = Package::read_from_bytes(&input_bytes) - .with_context(|| format!("failed to decode package '{}'", command.path.display()))?; - - let original_forest = package.mast.mast_forest().as_ref().clone(); - let original_forest_size = forest_size(&original_forest); - - let mut stripped_forest = original_forest.clone(); - stripped_forest.clear_debug_info(); - - let (compacted_forest, _) = stripped_forest.clone().compact(); - - let report = Report { - input: command.path.display().to_string(), - package_kind: package.kind, - artifact_kind: ArtifactKind::from_package(&package), - metric_points: vec![ - MetricPoint::reference("original masp", masp_size), - MetricPoint::baseline("original forest", original_forest_size), - MetricPoint::delta( - "without decorators", - forest_size(&stripped_forest), - original_forest_size, - ), - MetricPoint::delta( - "compacted forest", - forest_size(&compacted_forest), - original_forest_size, - ), - ], - }; - - println!("{report}"); - - Ok(()) -} - -fn forest_size(forest: &MastForest) -> usize { - forest.to_bytes().len() -} - -fn bytes_to_kb(bytes: usize) -> f64 { - bytes as f64 / 1024.0 -} - -#[derive(Debug, Clone)] -struct Report { - input: String, - package_kind: TargetType, - artifact_kind: ArtifactKind, - metric_points: Vec, -} - -#[derive(Debug, Clone)] -struct MetricPoint { - label: &'static str, - bytes: usize, - delta: Option, - delta_percent: Option, -} - -impl MetricPoint { - fn reference(label: &'static str, bytes: usize) -> Self { - Self { - label, - bytes, - delta: None, - delta_percent: None, - } - } - - fn baseline(label: &'static str, bytes: usize) -> Self { - Self { - label, - bytes, - delta: Some(0), - delta_percent: Some(0.0), - } - } - - fn delta(label: &'static str, bytes: usize, baseline: usize) -> Self { - let delta = i64::try_from(bytes).unwrap() - i64::try_from(baseline).unwrap(); - let delta_percent = if baseline == 0 { - 0.0 - } else { - (delta as f64 / baseline as f64) * 100.0 - }; - - Self { - label, - bytes, - delta: Some(delta), - delta_percent: Some(delta_percent), - } - } -} - -fn format_delta(row: &MetricPoint) -> String { - match row.delta { - Some(delta) => { - let delta_kb = delta as f64 / 1024.0; - if delta_kb.abs() < 0.01 { - "0.00".to_string() - } else if delta_kb > 0.0 { - format!("+{delta_kb:.2}") - } else { - format!("{delta_kb:.2}") - } - } - None => "-".to_string(), - } -} - -fn format_delta_percent(row: &MetricPoint) -> String { - match row.delta_percent { - Some(percent) => format!("{percent:+.2}%"), - None => "-".to_string(), - } -} - -impl std::fmt::Display for Report { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - writeln!(f, "Input: {}", self.input)?; - writeln!(f, "Package kind: {}", self.package_kind)?; - writeln!(f, "Artifact: {}", self.artifact_kind)?; - writeln!(f)?; - - let kb_strings: Vec = self - .metric_points - .iter() - .map(|row| format!("{:.2}", bytes_to_kb(row.bytes))) - .collect(); - let delta_strings: Vec = self.metric_points.iter().map(format_delta).collect(); - let delta_percent_strings: Vec = - self.metric_points.iter().map(format_delta_percent).collect(); - - let metric_width = self - .metric_points - .iter() - .map(|row| row.label.len()) - .chain(std::iter::once("Metric".len())) - .max() - .unwrap_or("Metric".len()); - let kb_width = kb_strings - .iter() - .map(String::len) - .chain(std::iter::once("KB".len())) - .max() - .unwrap_or("KB".len()); - let delta_width = delta_strings - .iter() - .map(String::len) - .chain(std::iter::once("Delta".len())) - .max() - .unwrap_or("Delta".len()); - let delta_percent_width = delta_percent_strings - .iter() - .map(String::len) - .chain(std::iter::once("Delta %".len())) - .max() - .unwrap_or("Delta %".len()); - - writeln!( - f, - "{:kb_width$} {:>delta_width$} {:>delta_percent_width$}", - "Metric", "KB", "Delta", "Delta %", - )?; - - for ((row, kb), (delta, delta_percent)) in self - .metric_points - .iter() - .zip(kb_strings.iter()) - .zip(delta_strings.iter().zip(delta_percent_strings.iter())) - { - writeln!( - f, - "{:kb_width$} {:>delta_width$} {:>delta_percent_width$}", - row.label, kb, delta, delta_percent, - )?; - } - - Ok(()) - } -} diff --git a/tools/objtool/src/dump.rs b/tools/objtool/src/dump.rs index 4a4b518cc..bd2cc40df 100644 --- a/tools/objtool/src/dump.rs +++ b/tools/objtool/src/dump.rs @@ -1,6 +1,7 @@ mod debuginfo; use clap::{Subcommand, ValueEnum}; +use miden_mast_package::PackageDebugInfoError; /// Dump useful information from assembled Miden packages #[derive(Debug, Subcommand)] @@ -35,6 +36,8 @@ pub enum DumpError { Parse(String), #[error("no debug_info section found in package")] NoDebugInfo, + #[error(transparent)] + InvalidDebugInfo(#[from] PackageDebugInfoError), } impl From for DumpError { diff --git a/tools/objtool/src/dump/debuginfo.rs b/tools/objtool/src/dump/debuginfo.rs index f28298021..9698dc926 100644 --- a/tools/objtool/src/dump/debuginfo.rs +++ b/tools/objtool/src/dump/debuginfo.rs @@ -2,19 +2,15 @@ //! //! Similar to llvm-dwarfdump, this tool parses the `.debug_info` section from compiled MASP //! packages and displays the debug metadata in a human-readable format. -use std::{collections::BTreeMap, path::PathBuf}; +use std::{collections::BTreeMap, path::PathBuf, sync::Arc}; use clap::Args; -use miden_core::{ - mast::MastForest, - operations::{DebugVarInfo, DebugVarLocation}, - serde::{Deserializable, SliceReader}, -}; +use miden_core::operations::DebugVarLocation; use miden_mast_package::{ - Package, SectionId, + MastForest, Package, debug_info::{ - DebugFileInfo, DebugFunctionInfo, DebugFunctionsSection, DebugPrimitiveType, - DebugSourcesSection, DebugTypeIdx, DebugTypeInfo, DebugTypesSection, DebugVariableInfo, + DebugFileInfo, DebugFunctionInfo, DebugPrimitiveType, DebugSourceNodeId, DebugSourceVar, + DebugTypeIdx, DebugTypeInfo, PackageDebugInfo, }, }; @@ -49,86 +45,58 @@ pub fn dump(config: &Config) -> Result<(), DumpError> { let bytes = std::fs::read(&config.input)?; // Parse the package - let package: Package = Package::read_from(&mut SliceReader::new(&bytes)) - .map_err(|e| DumpError::Parse(e.to_string()))?; + let package: Package = + Package::read_from_bytes_trusted(&bytes).map_err(|e| DumpError::Parse(e.to_string()))?; // Get the MAST forest for location decorators - let mast_forest = package.mast.mast_forest(); - - // Find the three debug sections - let types_section = extract_section::(&package, SectionId::DEBUG_TYPES)?; - let sources_section = - extract_section::(&package, SectionId::DEBUG_SOURCES)?; - let functions_section = - extract_section::(&package, SectionId::DEBUG_FUNCTIONS)?; - - // We need at least one section to proceed - if types_section.is_none() && sources_section.is_none() && functions_section.is_none() { + let Some(debug_info) = package.debug_info()? else { return Err(DumpError::NoDebugInfo); - } - - // Parse each section (use empty defaults if missing) - let debug_sections = DebugSections { - types: types_section.unwrap_or_default(), - sources: sources_section.unwrap_or_default(), - functions: functions_section.unwrap_or_default(), }; // Print header println!("{}", "=".repeat(80)); println!("Package Info:"); - println!(" | Name: {}", &package.name); - println!(" | Version: {}", &package.version); - println!(" | Kind: {}", &package.kind); - println!("Section Versioning:"); - println!(" | Types: {}", debug_sections.types.version); - println!(" | Sources: {}", debug_sections.sources.version); - println!(" | Functions: {}", debug_sections.functions.version); + println!(" | Name: {}", &package.name); + println!(" | Version: {}", &package.version); + println!(" | Kind: {}", &package.kind); + println!(" | Debug Info Version: {}", &debug_info.version()); println!("{}", "=".repeat(80)); println!(); if config.summary { - print_summary(&debug_sections, mast_forest); + print_summary(&debug_info); return Ok(()); } match config.section { - Some(Section::Strings) => print_strings(&debug_sections), - Some(Section::Types) => print_types(&debug_sections, config.raw), - Some(Section::Files) => print_files(&debug_sections, config.raw), - Some(Section::Functions) => print_functions(&debug_sections, config.raw, config.verbose), - Some(Section::Variables) => print_variables(&debug_sections, config.raw), - Some(Section::Locations) => print_locations(mast_forest, &debug_sections, config.verbose), + Some(Section::Strings) => print_strings(&debug_info), + Some(Section::Types) => print_types(&debug_info, config.raw), + Some(Section::Files) => print_files(&debug_info, config.raw), + Some(Section::Functions) => { + print_functions(&debug_info, package.mast_forest(), config.raw, config.verbose) + } + Some(Section::Variables) => print_variables(&debug_info, package.mast_forest(), config.raw), + Some(Section::Locations) => print_locations(&debug_info), None => { // Print everything - print_summary(&debug_sections, mast_forest); + let mast_forest = package.mast_forest(); + print_summary(&debug_info); println!(); - print_strings(&debug_sections); + print_strings(&debug_info); println!(); - print_types(&debug_sections, config.raw); + print_types(&debug_info, config.raw); println!(); - print_files(&debug_sections, config.raw); + print_files(&debug_info, config.raw); println!(); - print_functions(&debug_sections, config.raw, config.verbose); + print_functions(&debug_info, mast_forest, config.raw, config.verbose); println!(); - print_locations(mast_forest, &debug_sections, config.verbose); + print_locations(&debug_info); } } Ok(()) } -fn extract_section(package: &Package, id: SectionId) -> Result, DumpError> -where - T: Deserializable, -{ - let Some(section) = package.sections.iter().find(|s| s.id == id) else { - return Ok(None); - }; - - T::read_from_bytes(§ion.data).map(Some).map_err(DumpError::from) -} - const FRAME_BASE_LOCAL_MARKER: u32 = 1 << 31; const DEBUG_VAR_KILL_SENTINEL: &[u8] = b"\0miden.debug.kill"; @@ -163,116 +131,100 @@ fn is_debug_var_kill_location(location: &DebugVarLocation) -> bool { ) } -/// Holds the three debug info sections with helper accessors. -struct DebugSections { - types: DebugTypesSection, - sources: DebugSourcesSection, - functions: DebugFunctionsSection, -} - -impl DebugSections { - /// Look up a string in the types section's string table. - fn get_type_string(&self, idx: u32) -> Option { - self.types.get_string(idx).map(|s| s.to_string()) - } - - /// Look up a string in the sources section's string table. - fn get_source_string(&self, idx: u32) -> Option { - self.sources.get_string(idx).map(|s| s.to_string()) - } - - /// Look up a string in the functions section's string table. - fn get_func_string(&self, idx: u32) -> Option { - self.functions.get_string(idx).map(|s| s.to_string()) - } +fn print_summary(debug_info: &PackageDebugInfo) { + println!("Summary:"); + println!(); - /// Look up a type by index. - fn get_type(&self, idx: DebugTypeIdx) -> Option<&DebugTypeInfo> { - self.types.get_type(idx) - } + println!("Strings:"); + println!(" | records: {}", &debug_info.strings().len()); + println!(); - /// Look up a file by index. - fn get_file(&self, idx: u32) -> Option<&DebugFileInfo> { - self.sources.get_file(idx) - } -} + println!("Types:"); + println!(" | records: {}", &debug_info.types().len()); + println!(); -fn print_summary(debug_sections: &DebugSections, mast_forest: &MastForest) { - println!("Summary:"); + println!("Functions:"); + println!(" | records: {}", &debug_info.functions().len()); + println!( + " | with source info: {}", + &debug_info + .functions() + .iter() + .filter(|f| f.source_node.into_option().is_some()) + .count() + ); + println!( + " | w/o source info: {}", + &debug_info + .functions() + .iter() + .filter(|f| f.source_node.into_option().is_none()) + .count() + ); println!(); - println!("Types:"); - println!(" | records: {}", &debug_sections.types.types.len()); - println!(" | strings: {}", &debug_sections.types.strings.len()); + println!("Source Files:"); + println!(" | records: {}", &debug_info.files().len()); println!(); - println!("Sources:"); - println!(" | records: {}", &debug_sections.sources.files.len()); - println!(" | strings: {}", &debug_sections.sources.strings.len()); + println!("Locations:"); + println!(" | records: {}", &debug_info.locations().len()); println!(); - let total_vars: usize = - debug_sections.functions.functions.iter().map(|f| f.variables.len()).sum(); - let total_inlined: usize = - debug_sections.functions.functions.iter().map(|f| f.inlined_calls.len()).sum(); - println!("Functions:"); - println!(" | records: {}", &debug_sections.functions.functions.len()); - println!(" | strings: {}", &debug_sections.functions.strings.len()); - println!(" | variables: {total_vars} (total across all functions)"); - println!(" | inlined: {total_inlined} call sites"); + let (total_vars, total_inlined) = + debug_info + .nodes() + .iter() + .fold((0usize, 0usize), |(acc_vars, acc_inlined), node| { + (acc_vars + node.debug_vars.len(), acc_inlined + node.inline_calls.len()) + }); + + println!("Source Nodes:"); + println!(" | records: {}", &debug_info.nodes().len()); + println!(" | roots: {}", &debug_info.roots().len()); + println!(" | debug variables (total): {total_vars}"); + println!(" | inline calls (total): {total_inlined}"); println!(); // Count debug vars in MAST - let debug_var_count = mast_forest.debug_info().debug_vars().len(); - println!("Found {debug_var_count} debug variable records"); + println!("Found {total_vars} debug variable records"); } -fn print_strings(debug_sections: &DebugSections) { +fn print_strings(debug_info: &PackageDebugInfo) { println!(".debug_str contents:"); println!("{:-<80}", ""); - println!(" [types string table]"); - for (idx, s) in debug_sections.types.strings.iter().enumerate() { - println!(" [{:4}] \"{}\"", idx, s); - } - println!(); - println!(" [sources string table]"); - for (idx, s) in debug_sections.sources.strings.iter().enumerate() { - println!(" [{:4}] \"{}\"", idx, s); - } - println!(); - println!(" [functions string table]"); - for (idx, s) in debug_sections.functions.strings.iter().enumerate() { + for (idx, s) in debug_info.strings().iter().enumerate() { println!(" [{:4}] \"{}\"", idx, s); } } -fn print_types(debug_sections: &DebugSections, raw: bool) { +fn print_types(debug_info: &PackageDebugInfo, raw: bool) { println!(".debug_types contents:"); println!("{:-<80}", ""); - for (idx, ty) in debug_sections.types.types.iter().enumerate() { + for (idx, ty) in debug_info.types().iter().enumerate() { print!(" [{:4}] ", idx); - print_type(ty, debug_sections, raw, 0); + print_type(ty, debug_info, raw, 0); println!(); } } -fn print_type(ty: &DebugTypeInfo, debug_sections: &DebugSections, raw: bool, indent: usize) { +fn print_type(ty: &DebugTypeInfo, debug_info: &PackageDebugInfo, raw: bool, indent: usize) { let pad = " ".repeat(indent); match ty { DebugTypeInfo::Primitive(prim) => { print!("{}PRIMITIVE: {}", pad, primitive_name(*prim)); - print!(" (size: {} bytes, {} felts)", prim.size_in_bytes(), prim.size_in_felts()); + //print!(" (size: {} bytes, {} felts)", prim.size_in_bytes(), prim.size_in_felts()); } DebugTypeInfo::Pointer { pointee_type_idx } => { if raw { - print!("{}POINTER -> type[{}]", pad, pointee_type_idx.as_u32()); + print!("{}POINTER -> type[{pointee_type_idx}]", pad); } else { print!("{}POINTER -> ", pad); - if let Some(pointee) = debug_sections.get_type(*pointee_type_idx) { - print_type_brief(pointee, debug_sections); + if let Some(pointee) = debug_info.get_type(*pointee_type_idx) { + print_type_brief(pointee, debug_info); } else { - print!("", pointee_type_idx.as_u32()); + print!(""); } } } @@ -281,11 +233,11 @@ fn print_type(ty: &DebugTypeInfo, debug_sections: &DebugSections, raw: bool, ind count, } => { if raw { - print!("{}ARRAY [{}; {:?}]", pad, element_type_idx.as_u32(), count); + print!("{}ARRAY [{element_type_idx}; {:?}]", pad, count); } else { print!("{}ARRAY [", pad); - if let Some(elem) = debug_sections.get_type(*element_type_idx) { - print_type_brief(elem, debug_sections); + if let Some(elem) = debug_info.get_type(*element_type_idx) { + print_type_brief(elem, debug_info); } else { print!(""); } @@ -301,24 +253,22 @@ fn print_type(ty: &DebugTypeInfo, debug_sections: &DebugSections, raw: bool, ind fields, } => { let name = if raw { - format!("str[{}]", name_idx) + format!("str[{}]", name_idx).into_boxed_str().into() } else { - debug_sections.get_type_string(*name_idx).unwrap_or_else(|| "".into()) + debug_info.get_string(*name_idx).unwrap_or_else(|| "".into()) }; print!("{}STRUCT {} (size: {} bytes)", pad, name, size); if !fields.is_empty() { println!(); for field in fields { let field_name = if raw { - format!("str[{}]", field.name_idx) + format!("str[{}]", field.name_idx).into_boxed_str().into() } else { - debug_sections - .get_type_string(field.name_idx) - .unwrap_or_else(|| "".into()) + debug_info.get_string(field.name_idx).unwrap_or_else(|| "".into()) }; print!("{} +{:4}: {} : ", pad, field.offset, field_name); - if let Some(fty) = debug_sections.get_type(field.type_idx) { - print_type_brief(fty, debug_sections); + if let Some(fty) = debug_info.get_type(field.type_idx) { + print_type_brief(fty, debug_info); } else { print!(""); } @@ -326,6 +276,44 @@ fn print_type(ty: &DebugTypeInfo, debug_sections: &DebugSections, raw: bool, ind } } } + DebugTypeInfo::Enum { + name_idx, + size, + discriminant_type_idx, + variants, + } => { + let name = if raw { + format!("str[{name_idx}]").into_boxed_str().into() + } else { + debug_info.get_string(*name_idx).unwrap_or_else(|| "".into()) + }; + print!("{}ENUM {} (discriminant: ", pad, name); + match debug_info.get_type(*discriminant_type_idx) { + Some(discrim_ty) => print_type_brief(discrim_ty, debug_info), + None => print!("unknown"), + }; + print!(", size: {} bytes)", size); + if !variants.is_empty() { + println!(); + } + for variant in variants.iter() { + let name = if raw { + format!("str[{}]", variant.name_idx).into_boxed_str().into() + } else { + debug_info.get_string(variant.name_idx).unwrap_or_else(|| "".into()) + }; + print!("{} +{:4}: {}", pad, variant.payload_offset.unwrap_or(0), name); + if let Some(vty) = variant.type_idx { + print!(" : "); + if let Some(vty) = debug_info.get_type(vty) { + print_type_brief(vty, debug_info); + } else { + print!(""); + } + } + println!(" = {}", &variant.discriminant); + } + } DebugTypeInfo::Function { return_type_idx, param_type_indices, @@ -336,9 +324,9 @@ fn print_type(ty: &DebugTypeInfo, debug_sections: &DebugSections, raw: bool, ind print!(", "); } if raw { - print!("type[{}]", param_idx.as_u32()); - } else if let Some(pty) = debug_sections.get_type(*param_idx) { - print_type_brief(pty, debug_sections); + print!("type[{param_idx}]"); + } else if let Some(pty) = debug_info.get_type(*param_idx) { + print_type_brief(pty, debug_info); } else { print!(""); } @@ -347,9 +335,9 @@ fn print_type(ty: &DebugTypeInfo, debug_sections: &DebugSections, raw: bool, ind match return_type_idx { Some(idx) => { if raw { - print!("type[{}]", idx.as_u32()); - } else if let Some(rty) = debug_sections.get_type(*idx) { - print_type_brief(rty, debug_sections); + print!("type[{idx}]"); + } else if let Some(rty) = debug_info.get_type(*idx) { + print_type_brief(rty, debug_info); } else { print!(""); } @@ -363,13 +351,13 @@ fn print_type(ty: &DebugTypeInfo, debug_sections: &DebugSections, raw: bool, ind } } -fn print_type_brief(ty: &DebugTypeInfo, debug_sections: &DebugSections) { +fn print_type_brief(ty: &DebugTypeInfo, debug_info: &PackageDebugInfo) { match ty { DebugTypeInfo::Primitive(prim) => print!("{}", primitive_name(*prim)), DebugTypeInfo::Pointer { pointee_type_idx } => { print!("*"); - if let Some(p) = debug_sections.get_type(*pointee_type_idx) { - print_type_brief(p, debug_sections); + if let Some(p) = debug_info.get_type(*pointee_type_idx) { + print_type_brief(p, debug_info); } } DebugTypeInfo::Array { @@ -377,8 +365,8 @@ fn print_type_brief(ty: &DebugTypeInfo, debug_sections: &DebugSections) { count, } => { print!("["); - if let Some(e) = debug_sections.get_type(*element_type_idx) { - print_type_brief(e, debug_sections); + if let Some(e) = debug_info.get_type(*element_type_idx) { + print_type_brief(e, debug_info); } match count { Some(n) => print!("; {}]", n), @@ -386,10 +374,10 @@ fn print_type_brief(ty: &DebugTypeInfo, debug_sections: &DebugSections) { } } DebugTypeInfo::Struct { name_idx, .. } => { - print!( - "struct {}", - debug_sections.get_type_string(*name_idx).unwrap_or_else(|| "?".into()) - ); + print!("struct {}", debug_info.get_string(*name_idx).unwrap_or_else(|| "?".into())); + } + DebugTypeInfo::Enum { name_idx, .. } => { + print!("enum {}", debug_info.get_string(*name_idx).unwrap_or_else(|| "?".into())); } DebugTypeInfo::Function { .. } => print!("fn(...)"), DebugTypeInfo::Unknown => print!("?"), @@ -410,6 +398,7 @@ fn primitive_name(prim: DebugPrimitiveType) -> &'static str { DebugPrimitiveType::U64 => "u64", DebugPrimitiveType::I128 => "i128", DebugPrimitiveType::U128 => "u128", + DebugPrimitiveType::U256 => "u256", DebugPrimitiveType::F32 => "f32", DebugPrimitiveType::F64 => "f64", DebugPrimitiveType::Felt => "felt", @@ -417,26 +406,24 @@ fn primitive_name(prim: DebugPrimitiveType) -> &'static str { } } -fn print_files(debug_sections: &DebugSections, raw: bool) { +fn print_files(debug_info: &PackageDebugInfo, raw: bool) { println!(".debug_files contents:"); println!("{:-<80}", ""); - for (idx, file) in debug_sections.sources.files.iter().enumerate() { - print_file(idx, file, debug_sections, raw); + for (idx, file) in debug_info.files().iter().enumerate() { + print_file(idx, file, debug_info, raw); } } -fn print_file(idx: usize, file: &DebugFileInfo, debug_sections: &DebugSections, raw: bool) { +fn print_file(idx: usize, file: &DebugFileInfo, debug_info: &PackageDebugInfo, raw: bool) { let path = if raw { - format!("str[{}]", file.path_idx) + format!("str[{}]", file.path_idx).into_boxed_str().into() } else { - debug_sections - .get_source_string(file.path_idx) - .unwrap_or_else(|| "".into()) + debug_info.get_string(file.path_idx).unwrap_or_else(|| "".into()) }; - print!(" [{:4}] {}", idx, path); + print!(" [{idx:4}] {path}"); - if let Some(checksum) = &file.checksum { + if let Some(checksum) = file.checksum() { print!(" [checksum: "); for byte in &checksum[..4] { print!("{:02x}", byte); @@ -447,11 +434,16 @@ fn print_file(idx: usize, file: &DebugFileInfo, debug_sections: &DebugSections, println!(); } -fn print_functions(debug_sections: &DebugSections, raw: bool, verbose: bool) { +fn print_functions( + debug_info: &PackageDebugInfo, + mast_forest: &MastForest, + raw: bool, + verbose: bool, +) { println!(".debug_functions contents:"); println!("{:-<80}", ""); - for (idx, func) in debug_sections.functions.functions.iter().enumerate() { - print_function(idx, func, debug_sections, raw, verbose); + for (idx, func) in debug_info.functions().iter().enumerate() { + print_function(idx, func, debug_info, mast_forest, raw, verbose); println!(); } } @@ -459,50 +451,47 @@ fn print_functions(debug_sections: &DebugSections, raw: bool, verbose: bool) { fn print_function( idx: usize, func: &DebugFunctionInfo, - debug_sections: &DebugSections, + debug_info: &PackageDebugInfo, + mast_forest: &MastForest, raw: bool, verbose: bool, ) { let name = if raw { - format!("str[{}]", func.name_idx) + format!("str[{}]", func.name_idx).into_boxed_str().into() } else { - debug_sections - .get_func_string(func.name_idx) - .unwrap_or_else(|| "".into()) + debug_info.get_string(func.name_idx).unwrap_or_else(|| "".into()) }; - println!(" [{:4}] FUNCTION: {}", idx, name); + println!(" [{idx:4}] FUNCTION: {name}"); // Linkage name - if let Some(linkage_idx) = func.linkage_name_idx { + if let Some(linkage_idx) = func.linkage_name_idx.into_option() { let linkage = if raw { - format!("str[{}]", linkage_idx) + format!("str[{}]", linkage_idx).into_boxed_str().into() } else { - debug_sections - .get_func_string(linkage_idx) - .unwrap_or_else(|| "".into()) + debug_info.get_string(linkage_idx).unwrap_or_else(|| "".into()) }; - println!(" Linkage name: {}", linkage); + println!(" Linkage name: {linkage}"); } // Location let file_path = if raw { - format!("file[{}]", func.file_idx) + format!("file[{}]", func.file_idx).into_boxed_str().into() } else { - debug_sections + debug_info .get_file(func.file_idx) - .and_then(|f| debug_sections.get_source_string(f.path_idx)) + .and_then(|f| debug_info.get_string(f.path_idx)) .unwrap_or_else(|| "".into()) }; - println!(" Location: {}:{}:{}", file_path, func.line, func.column); + println!(" Location: {file_path}:{}:{}", func.line, func.column); // Type - if let Some(type_idx) = func.type_idx { + if let Some(type_idx) = func.type_idx.into_option() { print!(" Type: "); if raw { - println!("type[{}]", type_idx.as_u32()); - } else if let Some(ty) = debug_sections.get_type(type_idx) { - print_type_brief(ty, debug_sections); + println!("type[{type_idx}]"); + } else if let Some(ty) = debug_info.get_type(type_idx) { + print_type_brief(ty, debug_info); println!(); } else { println!(""); @@ -510,107 +499,114 @@ fn print_function( } // MAST root - if let Some(root) = &func.mast_root { - print!(" MAST root: 0x"); - for byte in &root.as_bytes() { - print!("{:02x}", byte); - } - println!(); + print!(" MAST root: 0x"); + for byte in func.mast_root.as_bytes() { + print!("{byte:02x}"); } + println!(); // Variables - if !func.variables.is_empty() { - println!(" Variables ({}):", func.variables.len()); - for var in &func.variables { - print_variable(var, debug_sections, raw, verbose); + let source_node_id = func.source_node.into_option().or_else(|| { + mast_forest.find_procedure_root(func.mast_root).and_then(|exec_node| { + debug_info.unique_source_root_for_exec_node(exec_node).ok().flatten() + }) + }); + if let Some(source_node_id) = source_node_id { + let source_node = &debug_info[source_node_id]; + if !source_node.debug_vars.is_empty() { + println!(" Variables ({}):", source_node.debug_vars.len()); + for var in source_node.debug_vars.iter() { + print_variable(var, debug_info, raw, verbose); + } } - } - - // Inlined calls - if !func.inlined_calls.is_empty() && verbose { - println!(" Inlined calls ({}):", func.inlined_calls.len()); - for call in &func.inlined_calls { - let callee = if raw { - format!("func[{}]", call.callee_idx) - } else { - debug_sections - .functions - .functions - .get(call.callee_idx as usize) - .and_then(|f| debug_sections.get_func_string(f.name_idx)) - .unwrap_or_else(|| "".into()) - }; - let call_file = if raw { - format!("file[{}]", call.file_idx) - } else { - debug_sections - .get_file(call.file_idx) - .and_then(|f| debug_sections.get_source_string(f.path_idx)) - .unwrap_or_else(|| "".into()) - }; - println!( - " - {} inlined at {}:{}:{}", - callee, call_file, call.line, call.column - ); + // Inlined calls + if !source_node.inline_calls.is_empty() && verbose { + println!(" Inlined calls ({}):", source_node.inline_calls.len()); + for call in source_node.inline_calls.iter() { + let callee = if raw { + format!("func[{}]", call.callee_idx).into_boxed_str().into() + } else { + debug_info + .get_function(call.callee_idx) + .and_then(|f| debug_info.get_string(f.name_idx)) + .unwrap_or_else(|| "".into()) + }; + let loc = debug_info.get_location(call.loc_idx); + let call_file = if raw { + format!("loc[{}]", call.loc_idx).into_boxed_str().into() + } else { + loc.clone() + .map(|loc| Arc::::from(loc.uri)) + .unwrap_or_else(|| "".into()) + }; + if let Some(loc) = loc { + println!( + " - {callee} inlined at {call_file}:{}..{}", + loc.start, loc.end + ); + } else { + println!(" - {callee} inlined at {call_file}:?..?",); + } + } } } } -fn print_variable( - var: &DebugVariableInfo, - debug_sections: &DebugSections, - raw: bool, - _verbose: bool, -) { - let name = if raw { - format!("str[{}]", var.name_idx) - } else { - debug_sections - .get_func_string(var.name_idx) - .unwrap_or_else(|| "".into()) - }; - - let kind = if var.is_parameter() { - format!("param #{}", var.arg_index) +fn print_variable(var: &DebugSourceVar, debug_info: &PackageDebugInfo, raw: bool, _verbose: bool) { + let kind = if let Some(index) = var.arg_idx { + format!("param #{index}") } else { "local".to_string() }; - print!(" - {} ({}): ", name, kind); + print!(" - {} ({}): ", debug_info[var.name_idx].as_ref(), kind); - if raw { - print!("type[{}]", var.type_idx.as_u32()); - } else if let Some(ty) = debug_sections.get_type(var.type_idx) { - print_type_brief(ty, debug_sections); + if let Some(type_id) = var.type_id { + if raw { + print!("type[{type_id}]"); + } else if let Some(ty) = debug_info.get_type(DebugTypeIdx::from(type_id)) { + print_type_brief(ty, debug_info); + } else { + print!(""); + } } else { print!(""); } - print!(" @ {}:{}", var.line, var.column); + if let Some(loc) = var.location_idx.and_then(|loc| debug_info.get_location(loc)) { + print!(" at {}:{}..{}", loc.uri(), loc.start, loc.end); + } + // TODO(pauls): Restore once scope info is available again + /* if var.scope_depth > 0 { print!(" [scope depth: {}]", var.scope_depth); } + */ println!(); } -fn print_variables(debug_sections: &DebugSections, raw: bool) { +fn print_variables(debug_info: &PackageDebugInfo, mast_forest: &MastForest, raw: bool) { println!(".debug_variables contents (all functions):"); println!("{:-<80}", ""); - - for func in &debug_sections.functions.functions { - if func.variables.is_empty() { + for function in debug_info.functions() { + let Some(source_node_id) = function.source_node.into_option().or_else(|| { + mast_forest.find_procedure_root(function.mast_root).and_then(|exec_node| { + debug_info.unique_source_root_for_exec_node(exec_node).ok().flatten() + }) + }) else { + continue; + }; + let vars = debug_info.debug_vars_for_source_node(source_node_id).collect::>(); + if vars.is_empty() { continue; } - - let func_name = debug_sections - .get_func_string(func.name_idx) - .unwrap_or_else(|| "".into()); - println!(" Function: {}", func_name); - - for var in &func.variables { - print_variable(var, debug_sections, raw, false); + let func_name = + debug_info.get_string(function.name_idx).unwrap_or_else(|| "".into()); + println!(" Function: {func_name}"); + for var in vars { + print_variable(var, debug_info, raw, /*verbose=*/ false); } println!(); } @@ -620,72 +616,78 @@ fn print_variables(debug_sections: &DebugSections, raw: bool) { /// /// This is analogous to DWARF's .debug_loc section which contains location /// lists describing where a variable's value can be found at runtime. -fn print_locations(mast_forest: &MastForest, debug_sections: &DebugSections, verbose: bool) { - println!(".debug_loc contents (DebugVar entries from MAST):"); +fn print_locations(debug_info: &PackageDebugInfo) { + println!(".debug_loc contents (DebugLoc entries from MAST):"); println!("{:-<80}", ""); // Collect all debug vars from the MastForest - let debug_vars = mast_forest.debug_info().debug_vars(); - - if debug_vars.is_empty() { - println!(" (no DebugVar entries found)"); - return; - } // Group by variable name for a cleaner view - let mut by_name: BTreeMap<&str, Vec<(usize, &DebugVarInfo)>> = BTreeMap::new(); - for (idx, info) in debug_vars.iter().enumerate() { - by_name.entry(info.name()).or_default().push((idx, info)); + let mut by_name: BTreeMap, BTreeMap>> = + BTreeMap::new(); + let mut total_count = 0usize; + for (node_id, node) in debug_info.nodes().iter().enumerate() { + if node.debug_vars.is_empty() { + continue; + } + let node_id = DebugSourceNodeId::from(node_id as u32); + + total_count += node.debug_vars.len(); + for var in node.debug_vars.iter() { + by_name + .entry(debug_info[var.name_idx].clone()) + .or_default() + .entry(node_id) + .or_default() + .push(var); + } } - println!(" Total DebugVar entries: {}", debug_vars.len()); + println!(" Total DebugVar entries: {total_count}"); println!(" Unique variable names: {}", by_name.len()); println!(); - for (name, entries) in &by_name { + for (name, entries_by_node) in &by_name { println!(" Variable: \"{}\"", name); - println!(" {} location entries:", entries.len()); + println!( + " {} location entries:", + entries_by_node.values().map(|entries| entries.len()).sum::() + ); - for (var_idx, info) in entries { - print!(" [var#{}] ", var_idx); + for (node_id, info) in entries_by_node + .iter() + .flat_map(|(nid, entries)| entries.iter().map(|e| (*nid, e))) + { + print!(" [node#{node_id}] "); // Print value location - print!("{}", format_debug_var_location(info.value_location())); + print!("{}", format_debug_var_location(&info.value_location)); // Print argument info if present - if let Some(arg_idx) = info.arg_index() { + if let Some(arg_idx) = info.arg_idx { print!(" (param #{})", arg_idx); } // Print type info if present and we can resolve it - if let Some(type_id) = info.type_id() { + if let Some(type_id) = info.type_id { let type_idx = DebugTypeIdx::from(type_id); - if let Some(ty) = debug_sections.get_type(type_idx) { + if let Some(ty) = debug_info.get_type(type_idx) { print!(" : "); - print_type_brief(ty, debug_sections); + print_type_brief(ty, debug_info); } else { - print!(" : type[{}]", type_id); + print!(" : type[{type_idx}]"); } } // Print source location if present - if let Some(loc) = info.location() { - print!(" @ {}:{}:{}", loc.uri, loc.line, loc.column); + if let Some(loc) = info.location_idx.and_then(|idx| debug_info.get_location(idx)) { + print!(" @ {}:{}..{}", loc.uri, loc.start, loc.end); } println!(); } println!(); } - - // In verbose mode, also show raw list - if verbose { - println!(" Raw debug var list (in order):"); - println!(" {:-<76}", ""); - for (idx, info) in debug_vars.iter().enumerate() { - println!(" [{:4}] {}", idx, info); - } - } } #[cfg(test)] diff --git a/tools/objtool/src/lib.rs b/tools/objtool/src/lib.rs index fee5fba57..88f425104 100644 --- a/tools/objtool/src/lib.rs +++ b/tools/objtool/src/lib.rs @@ -1,2 +1 @@ -pub mod decorators; pub mod dump; diff --git a/tools/objtool/src/main.rs b/tools/objtool/src/main.rs index 7bb14f8f5..b76003767 100644 --- a/tools/objtool/src/main.rs +++ b/tools/objtool/src/main.rs @@ -3,14 +3,12 @@ use miden_assembly_syntax::{ Report, diagnostics::{IntoDiagnostic, reporting}, }; -use miden_objtool::{decorators, dump}; +use miden_objtool::dump; /// Common utilities for analyzing Miden artifacts #[derive(Debug, Parser)] #[command(name = "miden-objtool", version, arg_required_else_help = true)] enum Cli { - /// Compare serialized MAST forest sizes after stripping decorators. - Decorators(decorators::DecoratorsCommand), /// Dump various types of information from assembled packages #[command(subcommand)] Dump(dump::Dump), @@ -27,7 +25,6 @@ fn main() -> Result<(), Report> { } match &cli { - Cli::Decorators(command) => decorators::run(command).map_err(Report::msg), Cli::Dump(command) => dump::run(command).into_diagnostic(), } } From 65d349988775ed0f7774e1db0f3792c7df791183 Mon Sep 17 00:00:00 2001 From: Paul Schoenfelder Date: Wed, 22 Jul 2026 12:12:30 -0400 Subject: [PATCH 02/23] fix debugvarinfo --- codegen/masm/src/lower/component.rs | 6 ++++-- codegen/masm/src/lower/lowering.rs | 24 ++++++++++++------------ tasks/lessons.md | 7 ------- tools/objtool/src/dump/debuginfo.rs | 11 +++++------ 4 files changed, 21 insertions(+), 27 deletions(-) delete mode 100644 tasks/lessons.md diff --git a/codegen/masm/src/lower/component.rs b/codegen/masm/src/lower/component.rs index 50e693461..bcfd428de 100644 --- a/codegen/masm/src/lower/component.rs +++ b/codegen/masm/src/lower/component.rs @@ -1,8 +1,10 @@ use alloc::{collections::BTreeSet, sync::Arc, vec::Vec}; use miden_assembly::{PathBuf as LibraryPath, ast::InvocationTarget}; -use miden_assembly_syntax::{ast::Attribute, parser::WordValue}; -use miden_core::operations::DebugVarLocation; +use miden_assembly_syntax::{ + ast::{Attribute, DebugVarLocation}, + parser::WordValue, +}; use midenc_hir::{ FunctionIdent, Op, OpExt, SourceSpan, Span, Symbol, TraceTarget, Type, ValueRef, diagnostics::IntoDiagnostic, diff --git a/codegen/masm/src/lower/lowering.rs b/codegen/masm/src/lower/lowering.rs index 69f80277e..ce240fab0 100644 --- a/codegen/masm/src/lower/lowering.rs +++ b/codegen/masm/src/lower/lowering.rs @@ -1549,8 +1549,9 @@ fn debug_var_location_from_expression( expr: &midenc_hir::dialects::debuginfo::attributes::Expression, value: Option, emitter: &BlockEmitter<'_>, -) -> Option { - use miden_core::{Felt, operations::DebugVarLocation, serde::Serializable}; +) -> Option { + use masm::DebugVarLocation; + use miden_core::{Felt, serde::Serializable}; use midenc_hir::dialects::debuginfo::attributes::ExpressionOp; match expr.operations.as_slice() { @@ -1596,7 +1597,7 @@ fn debug_var_location_from_expression( const DEBUG_VAR_KILL_SENTINEL: &[u8] = b"\0miden.debug.kill"; fn apply_debug_var_metadata( - debug_var: &mut miden_core::operations::DebugVarInfo, + debug_var: &mut masm::DebugVarInfo, var: &midenc_hir::dialects::debuginfo::attributes::Variable, session: &midenc_session::Session, ) { @@ -1605,6 +1606,10 @@ fn apply_debug_var_metadata( debug_var.set_arg_index(arg_index + 1); // Convert to 1-based } + if let Some(ty) = var.ty.clone() { + debug_var.set_ty(ty, None); + } + // Set source location if let Some(line) = core::num::NonZeroU32::new(var.line) { use miden_assembly::debuginfo::{ColumnNumber, FileLineCol, LineNumber, Location, Uri}; @@ -1635,7 +1640,6 @@ impl HirLowering for debuginfo::DebugValue { } fn emit(&self, emitter: &mut BlockEmitter<'_>) -> Result<(), Report> { - use miden_core::operations::DebugVarInfo; use midenc_hir::dialects::debuginfo::attributes::ExpressionOp; // Get the variable info @@ -1670,7 +1674,7 @@ impl HirLowering for debuginfo::DebugValue { return Ok(()); }; - let mut debug_var = DebugVarInfo::new(var.name.to_string(), value_location); + let mut debug_var = masm::DebugVarInfo::new(var.name.to_string(), value_location); let session = self.as_operation().context().session(); apply_debug_var_metadata(&mut debug_var, var.as_value(), session); @@ -1694,8 +1698,6 @@ impl HirLowering for debuginfo::DebugDeclare { } fn emit(&self, emitter: &mut BlockEmitter<'_>) -> Result<(), Report> { - use miden_core::operations::DebugVarInfo; - let var = self.variable(); let expr = self.expression(); @@ -1705,7 +1707,7 @@ impl HirLowering for debuginfo::DebugDeclare { return Ok(()); }; - let mut debug_var = DebugVarInfo::new(var.name.to_string(), value_location); + let mut debug_var = masm::DebugVarInfo::new(var.name.to_string(), value_location); let session = self.as_operation().context().session(); apply_debug_var_metadata(&mut debug_var, var.as_value(), session); @@ -1733,12 +1735,10 @@ impl HirLowering for debuginfo::DebugKill { } fn emit(&self, emitter: &mut BlockEmitter<'_>) -> Result<(), Report> { - use miden_core::operations::{DebugVarInfo, DebugVarLocation}; - let var = self.variable(); - let mut debug_var = DebugVarInfo::new( + let mut debug_var = masm::DebugVarInfo::new( var.name.to_string(), - DebugVarLocation::Expression(DEBUG_VAR_KILL_SENTINEL.to_vec()), + masm::DebugVarLocation::Expression(DEBUG_VAR_KILL_SENTINEL.to_vec()), ); let session = self.as_operation().context().session(); apply_debug_var_metadata(&mut debug_var, var.as_value(), session); diff --git a/tasks/lessons.md b/tasks/lessons.md deleted file mode 100644 index 0f3f26f48..000000000 --- a/tasks/lessons.md +++ /dev/null @@ -1,7 +0,0 @@ -# Lessons - -- When CLI lint behavior differs from frontend unit tests, check the analysis root. The CLI lint stage analyzes the lifted `builtin.world`, while many MASM advice-taint tests analyze only the target `builtin.module`; interprocedural call predecessor resolution can differ across those roots. -- When diagnosing compiler pipeline regressions, prefer the user's direct CLI reproduction before reasoning from integration-test harness behavior; generated test crates can introduce separate build-path artifacts that mask the actual issue. -- After a user fixes suspected root causes, re-run the exact reproduction before relying on earlier conclusions; similar Rust/Cargo failures can move to a different dependency edge after pipeline fixes. -- When using HIR effects for analysis, check both declaration-level summaries and operation-level `EffectOpInterface` implementations; native HIR ops can carry more precise per-result effect information than external function attributes. -- `cargo make lit` forwards task arguments directly; do not insert a `--` separator before the `litcheck` subcommand. diff --git a/tools/objtool/src/dump/debuginfo.rs b/tools/objtool/src/dump/debuginfo.rs index 9698dc926..5ad7b1a18 100644 --- a/tools/objtool/src/dump/debuginfo.rs +++ b/tools/objtool/src/dump/debuginfo.rs @@ -5,12 +5,12 @@ use std::{collections::BTreeMap, path::PathBuf, sync::Arc}; use clap::Args; -use miden_core::operations::DebugVarLocation; +use miden_assembly_syntax::ast::DebugVarLocation; use miden_mast_package::{ MastForest, Package, debug_info::{ DebugFileInfo, DebugFunctionInfo, DebugPrimitiveType, DebugSourceNodeId, DebugSourceVar, - DebugTypeIdx, DebugTypeInfo, PackageDebugInfo, + DebugTypeInfo, PackageDebugInfo, }, }; @@ -564,7 +564,7 @@ fn print_variable(var: &DebugSourceVar, debug_info: &PackageDebugInfo, raw: bool if let Some(type_id) = var.type_id { if raw { print!("type[{type_id}]"); - } else if let Some(ty) = debug_info.get_type(DebugTypeIdx::from(type_id)) { + } else if let Some(ty) = debug_info.get_type(type_id) { print_type_brief(ty, debug_info); } else { print!(""); @@ -670,12 +670,11 @@ fn print_locations(debug_info: &PackageDebugInfo) { // Print type info if present and we can resolve it if let Some(type_id) = info.type_id { - let type_idx = DebugTypeIdx::from(type_id); - if let Some(ty) = debug_info.get_type(type_idx) { + if let Some(ty) = debug_info.get_type(type_id) { print!(" : "); print_type_brief(ty, debug_info); } else { - print!(" : type[{type_idx}]"); + print!(" : type[{type_id}]"); } } From 0fd2b820c804392b1ece17606ea85f01c454a058 Mon Sep 17 00:00:00 2001 From: Dennis Zadorozhnyi Date: Thu, 23 Jul 2026 01:53:02 +0300 Subject: [PATCH 03/23] feat(sdk): migrate SDK and examples to protocol 0.16 (#1292) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(sdk): migrate SDK bindings and scripts to protocol 0.16 Protocol 0.16 reshaped the transaction-kernel API surface the SDK binds: the note asset readers moved to creation-time semantics (get_assets -> get_initial_assets, get_assets_info -> get_initial_assets_info), account membership generalized to has_asset by asset id, the initial-state readers moved from active_account to native_account, and fungible balance reads plus in-kernel asset construction (asset/faucet create_*, has_callbacks) were removed entirely. Sync all five binding layers (externs, stubs, frontend signatures, transform strategies, compile tests) to the new kernel, delete the emptied asset module, and document the breaking surface in the SDK changelog and migration guide. Protocol 0.16 also recognizes account-interface procedures only via export attributes, and restricts output_note::create to account-component context. Tag lifted component exports so account-code construction and FPI can see them, emit the @transaction_script attribute for #[tx_script] entrypoints so TransactionScript::from_library can locate them, and route note creation in the basic-wallet example through a new create_note component method that tx scripts call instead of output_note::create. Pin miden-protocol and miden-standards to =0.16.0-alpha.4: the kernel API is identical through 0.16.0-beta.1, but miden-client 0.16.0-alpha.1 (required by the network tests) is not source-compatible with the beta protocol crates yet. Adapt the test harnesses accordingly and refresh the cycle and package-size expectations that legitimately moved with the new kernel. * feat(sdk): require explicit #[account_procedure] marking on component methods The interim frontend behavior tagged every lifted component export as an account procedure, which made the entire component surface (including internals like init) part of the account interface and left users no way to keep a method out of it. Replace the blanket tagging with a user-facing #[account_procedure] attribute that mirrors #[auth_script]: it must be applied to methods of a #[component] trait, any number of methods may be marked, and the two attributes are mutually exclusive per component since auth components carry only their authentication entrypoint. The component macro emits one frontend metadata section per crate whose payload is now a list of entries, the frontend stamps the account_procedure attribute only on metadata-selected exports, and unmarked methods remain ordinary exports invisible to account-code construction and FPI. Mark the deployed examples and test fixtures accordingly, leave compile-only guests unmarked to keep that path covered, and record the breaking change with a before/after example in the SDK changelog and migration guide. * test(integration): fix executor host handlers and synthetic project namespace VM v0.25 reports division and debug-helper errors through events, but the shared test host loaded the core library through its package form, and that conversion drops the library's event-handler registry — executions surfaced UnhandledEvent instead of the expected traps. Load the CoreLibrary directly so its handlers reach the host; the trap expectations are unchanged. The project assembler now requires a library target's namespace to match its root module. The synthetic manifests generated for inline-source tests omitted [lib].namespace, defaulting to the package name, while core Wasm translation produces the root_ns:root@1.0.0 wrapper component identity. Declare that identity in the generated manifest so the two agree. --- codegen/masm/src/lower/component.rs | 2 +- examples/auth-component-no-auth/src/lib.rs | 2 +- examples/basic-wallet-tx-script/Cargo.lock | 1111 +++++++++-------- examples/basic-wallet-tx-script/src/lib.rs | 2 +- examples/basic-wallet/src/lib.rs | 20 +- examples/counter-contract/src/lib.rs | 2 + examples/p2id-note/Cargo.lock | 1111 +++++++++-------- examples/p2id-note/src/lib.rs | 2 +- examples/p2ide-note/Cargo.lock | 1111 +++++++++-------- examples/p2ide-note/src/lib.rs | 2 +- frontend/wasm/src/component/lift_exports.rs | 8 + frontend/wasm/src/component/translator.rs | 13 +- frontend/wasm/src/miden_abi/transform.rs | 41 +- frontend/wasm/src/miden_abi/tx_kernel.rs | 2 - .../src/miden_abi/tx_kernel/active_account.rs | 48 +- .../src/miden_abi/tx_kernel/active_note.rs | 7 +- .../wasm/src/miden_abi/tx_kernel/asset.rs | 49 - .../wasm/src/miden_abi/tx_kernel/faucet.rs | 26 - .../src/miden_abi/tx_kernel/input_note.rs | 11 +- .../src/miden_abi/tx_kernel/native_account.rs | 34 + frontend/wasm/src/module/module_env.rs | 127 +- frontend/wasm/src/module/module_env/tests.rs | 128 +- sdk/base-macros/src/component_macro/mod.rs | 201 ++- sdk/base-macros/src/lib.rs | 15 + sdk/base-macros/src/note.rs | 4 +- sdk/base-macros/src/script.rs | 12 +- sdk/base-macros/src/util.rs | 15 +- sdk/base-sys/src/bindings/active_account.rs | 186 +-- sdk/base-sys/src/bindings/active_note.rs | 12 +- sdk/base-sys/src/bindings/asset.rs | 71 -- sdk/base-sys/src/bindings/faucet.rs | 47 +- sdk/base-sys/src/bindings/input_note.rs | 24 +- sdk/base-sys/src/bindings/mod.rs | 1 - sdk/base-sys/src/bindings/native_account.rs | 63 + sdk/base-sys/src/bindings/storage.rs | 4 +- sdk/base-sys/stubs/active_account.rs | 93 +- sdk/base-sys/stubs/active_note.rs | 4 +- sdk/base-sys/stubs/asset.rs | 30 - sdk/base-sys/stubs/faucet.rs | 29 - sdk/base-sys/stubs/input_note.rs | 11 +- sdk/base-sys/stubs/lib.rs | 1 - sdk/base-sys/stubs/native_account.rs | 60 + sdk/sdk/CHANGELOG.md | 24 + sdk/sdk/MIGRATION.md | 94 ++ sdk/sdk/src/lib.rs | 4 +- sdk/wasm-metadata/src/lib.rs | 85 +- .../component-macros-account/src/lib.rs | 2 + .../src/lib.rs | 2 +- .../src/mockchain/counter/basic_auth.rs | 2 +- .../src/mockchain/counter/no_auth.rs | 4 +- .../src/mockchain/counter/rpo_auth.rs | 2 +- .../fpi/account/account_to_account.rs | 2 + .../src/mockchain/fpi/common.rs | 2 + .../mockchain/fpi/note/four_words_struct.rs | 1 + .../mockchain/fpi/note/get_id_collision.rs | 1 + .../mockchain/fpi/note/mixed_scalar_struct.rs | 1 + .../src/mockchain/fpi/note/multi_call.rs | 2 + .../fpi/note/multiple_packages_aliased.rs | 1 + .../src/mockchain/fpi/note/no_arg.rs | 1 + .../fpi/note/signed_narrow_indirect_struct.rs | 1 + .../src/mockchain/fpi/note/six_u64_struct.rs | 1 + .../note/sixteen_flattened_params_struct.rs | 1 + .../src/mockchain/fpi/note/ten_felts.rs | 1 + .../mockchain/fpi/note/three_words_struct.rs | 1 + .../mockchain/fpi/note/two_words_struct.rs | 1 + .../src/mockchain/fpi/note/word_arg.rs | 1 + .../src/mockchain/fpi/note/word_word.rs | 1 + .../src/mockchain/notes/basic_wallet.rs | 12 +- .../src/mockchain/sibling/multi_sibling.rs | 3 + .../src/mockchain/sibling/sibling_and_fpi.rs | 3 + .../src/mockchain/sibling/single_sibling.rs | 3 + .../src/mockchain/support/helpers.rs | 2 +- .../examples/basic_wallet_package_sizes.rs | 8 +- tests/integration/src/end_to_end/support.rs | 11 +- tests/integration/src/sdk/base/account.rs | 26 +- tests/integration/src/sdk/base/active_note.rs | 6 +- tests/integration/src/sdk/base/asset.rs | 93 -- tests/integration/src/sdk/base/faucet.rs | 35 - tests/integration/src/sdk/base/input_note.rs | 12 +- tests/integration/src/sdk/base/mod.rs | 1 - tests/integration/src/sdk/mod.rs | 4 +- 81 files changed, 2724 insertions(+), 2475 deletions(-) delete mode 100644 frontend/wasm/src/miden_abi/tx_kernel/asset.rs delete mode 100644 sdk/base-sys/src/bindings/asset.rs delete mode 100644 sdk/base-sys/stubs/asset.rs delete mode 100644 tests/integration/src/sdk/base/asset.rs diff --git a/codegen/masm/src/lower/component.rs b/codegen/masm/src/lower/component.rs index bcfd428de..baf03b348 100644 --- a/codegen/masm/src/lower/component.rs +++ b/codegen/masm/src/lower/component.rs @@ -871,7 +871,7 @@ impl MasmFunctionBuilder { let mut procedure = masm::Procedure::new(span, visibility, name, num_locals, body); procedure.set_signature(signature); - for attribute in ["auth_script", "note_script"] { + for attribute in ["account_procedure", "auth_script", "note_script", "transaction_script"] { if function.has_attribute(attribute) { procedure .attributes_mut() diff --git a/examples/auth-component-no-auth/src/lib.rs b/examples/auth-component-no-auth/src/lib.rs index 457dfd541..fecf277ef 100644 --- a/examples/auth-component-no-auth/src/lib.rs +++ b/examples/auth-component-no-auth/src/lib.rs @@ -26,7 +26,7 @@ impl AuthComponent for AuthComponentStorage { fn auth_procedure(&mut self, _arg: Word) { // translated from MASM at // https://github.com/0xMiden/miden-base/blob/e4912663276ab8eebb24b84d318417cb4ea0bba3/crates/miden-lib/asm/account_components/no_auth.masm?plain=1 - let init_comm = self.get_initial_commitment(); + let init_comm = miden::native_account::get_initial_commitment(); let curr_comm = self.compute_commitment(); // check if the account state has changed by comparing initial and final commitments if curr_comm != init_comm { diff --git a/examples/basic-wallet-tx-script/Cargo.lock b/examples/basic-wallet-tx-script/Cargo.lock index cfff98563..44458ea21 100644 --- a/examples/basic-wallet-tx-script/Cargo.lock +++ b/examples/basic-wallet-tx-script/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -129,30 +120,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -176,16 +143,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -214,39 +181,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -255,9 +228,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -266,13 +239,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -322,35 +292,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -403,9 +385,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -434,14 +416,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -452,9 +434,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -462,13 +444,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -476,14 +459,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -496,33 +480,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -565,19 +541,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -585,21 +561,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -676,7 +643,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -694,30 +660,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -725,11 +667,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -739,8 +679,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -751,12 +694,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -777,22 +720,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -819,11 +773,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -841,6 +795,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.18" @@ -889,61 +852,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1020,7 +953,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1029,9 +962,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "96eb86fc5b2954ccc81074698ab704626dc814c0e15c3f0252f1df0e2799bc6f" dependencies = [ "miden-core", "miden-crypto", @@ -1040,14 +973,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "f63c24153870bb329d2dd25f43b731d65ebc0c4cb62be77c344145cf45fb7d7a" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1055,9 +987,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "6dac28a3d1b0a39e90ef7dbdbe59cabfc9ff287ad29567f7180ccc6c52cfe541" dependencies = [ "log", "miden-assembly-syntax", @@ -1072,14 +1004,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "6f2aade47c6c4ddd97f3186b65b62086fc57a642e3a755cf6733e2135cf9c483" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1093,6 +1023,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49d1941d835598aad650297259566b87340bd9f3d02fb2cea5c17a8228412538" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1132,9 +1074,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "b20fb1d59681091b56748e27125910fdc487ea11767364fb4ecc2430fbd99dea" dependencies = [ "derive_more", "log", @@ -1144,23 +1086,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "54d39f7d3365f9ce4215fcebd4b3d2534c47de35dc6f3ba5e74ad4c031c782d0" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1169,9 +1111,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1183,25 +1125,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-goldilocks 0.6.2", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1212,9 +1152,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1222,9 +1162,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "09153b2db5b0e0e2d1dc18dc72dafd4993568ff39cf9d385222cc48e57487613" dependencies = [ "memchr", "miden-crypto", @@ -1245,12 +1185,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.2", + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", + "p3-util 0.6.2", "paste", "rand 0.10.2", "serde", @@ -1262,7 +1221,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1286,34 +1245,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.2", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-util 0.6.2", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", "serde", "thiserror", @@ -1322,10 +1282,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "f6f409600cc51231eb3ef74518c0e1001af04ee35739ff3ffccd6b4de8d5d337" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1371,9 +1332,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "1130162ca3551546a9f537d4087dac6bebc918eb72e3d21c6f5155cf6527b09b" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1387,14 +1348,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "6d2b83d82a5d0af50b1b87948164f8d65998a33ba461335ed4fb7faceffab000" dependencies = [ - "itertools", + "itertools 0.14.0", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1405,9 +1367,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "52cd061e3a707aa485c191f8430adc4a3936a31fb423aaee6d800c89b9e08c04" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1422,13 +1384,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1436,16 +1398,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1456,44 +1429,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.2", + "p3-field 0.6.2", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.2", + "p3-symmetric 0.6.2", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "d171f3a6a5c84b2334e16bf47c162cab9ba05ac59cadc362ae219fb3cff09ca9" dependencies = [ "proc-macro2", "quote", @@ -1502,11 +1485,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "3fb1931be8e09d55e8a3a0549771470ce88e2c2371b1d2420ec856c552d21d68" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1514,9 +1496,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "8dd9b306656509718fd1f4b01e717889e6960f5cb4ffdef958ff40eb641592ab" dependencies = [ "miden-crypto", "proptest", @@ -1526,9 +1508,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "7a239c1d857f762475c972dea60482d439e93778de6cced258e2620158276bac" dependencies = [ "lock_api", "loom", @@ -1538,15 +1520,15 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "e748fcfd108cfa2e165a728639b0485c9426efc1a44b9c79cacf5c933d6f058a" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", ] @@ -1561,33 +1543,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1630,17 +1597,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1697,12 +1653,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1661,24 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "6bf35abc9744a71822d6c9a95243f549986941238a52ca412631f0d2e620c1d9" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.2", + "p3-matrix 0.6.2", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "e48cf8a90522a690e1e99bedafcbea39a5708f4a8cf597e8007d192260709735" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", ] [[package]] @@ -1737,11 +1687,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be15c94c45b1c8cb343ba65675855c013e8dd88dd5cf55b8598e5d40e8f84de" +dependencies = [ + "p3-field 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-monty-31 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "tracing", ] @@ -1751,25 +1715,56 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ - "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a8476394bf799ab9d70e861a9659700bb0bf14d7bc9303311a52cf1c378986" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ - "itertools", + "itertools 0.14.0", + "num-bigint", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e879e5f44a485a949c06274c4b17e33c6e85287afb8e6ef162011a60b39f7c99" +dependencies = [ + "itertools 0.15.0", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", "paste", "rand 0.10.2", "serde", @@ -1783,27 +1778,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", ] +[[package]] +name = "p3-goldilocks" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efb05a6dbade1c97eb99e5d1e719b274d2f9d47096dcb29bf2c2f389394fab49" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-poseidon1 0.6.2", + "p3-poseidon2 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", +] + [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "4376e63b8a4c0ec8e8c8000659d9a09cddca95cfb3b948719585d9e2a3ade224" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "tiny-keccak", ] @@ -1813,10 +1829,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ - "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b721bbbae4ca8c0133cf330d5a73deef8663e0706550719874a0ec0ddb5540" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1859,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f648dac3a8af4706cfd110fc5a8d3a10237a747e4e62322d281df826978d0d3c" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5135a277e008c77700ca790abe797bdaa66c36f7c2717d839c6ab1b320ebd2b6" +dependencies = [ + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", ] @@ -1847,17 +1897,17 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ - "itertools", + "itertools 0.14.0", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1915,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c9e3c84a80a7ed5eb566486c7fedd0a8f55299187371aed9189089d8e89d55" +dependencies = [ + "itertools 0.15.0", + "num-bigint", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-mds 0.6.2", + "p3-poseidon1 0.6.2", + "p3-poseidon2 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff7da7181e42690f30009bfea6f0d4677d54e4a35f867ab14b7c970d9e93db7" +dependencies = [ + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-symmetric 0.6.2", "rand 0.10.2", ] @@ -1882,10 +1968,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03f0f8a8631454315502f58c6e299ba38e3ec5f71a4cd65abdcafdb3e2b58605" +dependencies = [ + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", ] @@ -1895,9 +1994,21 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ - "itertools", - "p3-field", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab7e700435824b43b0bf59191f862da259eb5b30f6bac13715c4c53aaaf51fd0" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-util 0.6.2", "serde", ] @@ -1911,6 +2022,15 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284186adf438d2fa2615ca06af661db80bce861a33653f8e510f70edf0d03d6b" +dependencies = [ + "serde", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2061,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2074,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2084,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2116,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2126,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2181,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2228,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2238,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2254,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2278,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2347,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2408,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2467,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2531,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2580,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2621,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2695,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2929,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2958,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2977,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3074,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5d39d1a984eb7ae37afa348f058216d62a6d5f71640f4113a8114386c2a812a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3205,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/examples/basic-wallet-tx-script/src/lib.rs b/examples/basic-wallet-tx-script/src/lib.rs index d933eb76f..f905fd571 100644 --- a/examples/basic-wallet-tx-script/src/lib.rs +++ b/examples/basic-wallet-tx-script/src/lib.rs @@ -35,7 +35,7 @@ fn run(arg: Word, account: &mut Wallet) { let tag = input[TAG_INDEX]; let note_type = input[NOTE_TYPE_INDEX]; let recipient: [Felt; 4] = input[RECIPIENT_START..RECIPIENT_END].try_into().unwrap(); - let note_idx = output_note::create(tag.into(), note_type.into(), recipient.into()); + let note_idx = account.create_note(tag.into(), note_type.into(), recipient.into()); let asset: [Felt; 8] = input[ASSET_START..ASSET_END].try_into().unwrap(); let asset_key: [Felt; 4] = asset[..4].try_into().unwrap(); let asset_value: [Felt; 4] = asset[4..].try_into().unwrap(); diff --git a/examples/basic-wallet/src/lib.rs b/examples/basic-wallet/src/lib.rs index 7bf7ba04d..3f572bc79 100644 --- a/examples/basic-wallet/src/lib.rs +++ b/examples/basic-wallet/src/lib.rs @@ -7,7 +7,7 @@ // // extern crate alloc; -use miden::{Asset, NoteIdx, component, component_storage, output_note}; +use miden::{Asset, NoteIdx, NoteType, Recipient, Tag, component, component_storage, output_note}; #[component_storage] struct BasicWalletStorage; @@ -21,6 +21,7 @@ trait BasicWallet { /// /// # Arguments /// * `asset` - The asset to be added to the account + #[account_procedure] fn receive_asset(&mut self, asset: Asset); /// Moves an asset from the account to a note. @@ -31,7 +32,20 @@ trait BasicWallet { /// # Arguments /// * `asset` - The asset to move from the account to the note /// * `note_idx` - The index of the note to receive the asset + #[account_procedure] fn move_asset_to_note(&mut self, asset: Asset, note_idx: NoteIdx); + + /// Creates an output note and returns its index. + /// + /// `output_note::create` may only be called from an account component + /// context, so transaction scripts must create notes through this method. + /// + /// # Arguments + /// * `tag` - The note tag + /// * `note_type` - The note type (public/private/encrypted) + /// * `recipient` - The note recipient digest + #[account_procedure] + fn create_note(&mut self, tag: Tag, note_type: NoteType, recipient: Recipient) -> NoteIdx; } #[component] @@ -44,4 +58,8 @@ impl BasicWallet for BasicWalletStorage { self.remove_asset(asset); output_note::add_asset(asset, note_idx); } + + fn create_note(&mut self, tag: Tag, note_type: NoteType, recipient: Recipient) -> NoteIdx { + output_note::create(tag, note_type, recipient) + } } diff --git a/examples/counter-contract/src/lib.rs b/examples/counter-contract/src/lib.rs index ef4757ae4..fbcd87d73 100644 --- a/examples/counter-contract/src/lib.rs +++ b/examples/counter-contract/src/lib.rs @@ -21,8 +21,10 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the current counter value stored in the contract's storage map. + #[account_procedure] fn get_count(&self) -> Felt; /// Increments the counter value stored in the contract's storage map by one. + #[account_procedure] fn increment_count(&mut self) -> Felt; } diff --git a/examples/p2id-note/Cargo.lock b/examples/p2id-note/Cargo.lock index 4064ae2e0..bac5e1872 100644 --- a/examples/p2id-note/Cargo.lock +++ b/examples/p2id-note/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -259,13 +232,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -315,35 +285,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -396,9 +378,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -427,14 +409,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -445,9 +427,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -455,13 +437,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -469,14 +452,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -489,33 +473,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -558,19 +534,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -578,21 +554,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -669,7 +636,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -687,30 +653,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -718,11 +660,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -732,8 +672,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -744,12 +687,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -770,22 +713,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -812,11 +766,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -834,6 +788,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.18" @@ -882,61 +845,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1013,7 +946,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1022,9 +955,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "96eb86fc5b2954ccc81074698ab704626dc814c0e15c3f0252f1df0e2799bc6f" dependencies = [ "miden-core", "miden-crypto", @@ -1033,14 +966,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "f63c24153870bb329d2dd25f43b731d65ebc0c4cb62be77c344145cf45fb7d7a" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1048,9 +980,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "6dac28a3d1b0a39e90ef7dbdbe59cabfc9ff287ad29567f7180ccc6c52cfe541" dependencies = [ "log", "miden-assembly-syntax", @@ -1065,14 +997,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "6f2aade47c6c4ddd97f3186b65b62086fc57a642e3a755cf6733e2135cf9c483" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1086,6 +1016,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49d1941d835598aad650297259566b87340bd9f3d02fb2cea5c17a8228412538" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1125,9 +1067,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "b20fb1d59681091b56748e27125910fdc487ea11767364fb4ecc2430fbd99dea" dependencies = [ "derive_more", "log", @@ -1137,23 +1079,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "54d39f7d3365f9ce4215fcebd4b3d2534c47de35dc6f3ba5e74ad4c031c782d0" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1162,9 +1104,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1176,25 +1118,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-goldilocks 0.6.2", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1205,9 +1145,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1215,9 +1155,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "09153b2db5b0e0e2d1dc18dc72dafd4993568ff39cf9d385222cc48e57487613" dependencies = [ "memchr", "miden-crypto", @@ -1238,12 +1178,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.2", + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", + "p3-util 0.6.2", "paste", "rand 0.10.2", "serde", @@ -1255,7 +1214,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1279,34 +1238,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.2", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-util 0.6.2", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", "serde", "thiserror", @@ -1315,10 +1275,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "f6f409600cc51231eb3ef74518c0e1001af04ee35739ff3ffccd6b4de8d5d337" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1364,9 +1325,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "1130162ca3551546a9f537d4087dac6bebc918eb72e3d21c6f5155cf6527b09b" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1380,14 +1341,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "6d2b83d82a5d0af50b1b87948164f8d65998a33ba461335ed4fb7faceffab000" dependencies = [ - "itertools", + "itertools 0.14.0", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1398,9 +1360,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "52cd061e3a707aa485c191f8430adc4a3936a31fb423aaee6d800c89b9e08c04" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1415,13 +1377,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1429,16 +1391,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1449,44 +1422,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.2", + "p3-field 0.6.2", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.2", + "p3-symmetric 0.6.2", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "d171f3a6a5c84b2334e16bf47c162cab9ba05ac59cadc362ae219fb3cff09ca9" dependencies = [ "proc-macro2", "quote", @@ -1495,11 +1478,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "3fb1931be8e09d55e8a3a0549771470ce88e2c2371b1d2420ec856c552d21d68" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1507,9 +1489,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "8dd9b306656509718fd1f4b01e717889e6960f5cb4ffdef958ff40eb641592ab" dependencies = [ "miden-crypto", "proptest", @@ -1519,9 +1501,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "7a239c1d857f762475c972dea60482d439e93778de6cced258e2620158276bac" dependencies = [ "lock_api", "loom", @@ -1531,15 +1513,15 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "e748fcfd108cfa2e165a728639b0485c9426efc1a44b9c79cacf5c933d6f058a" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", ] @@ -1554,33 +1536,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1623,17 +1590,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1690,12 +1646,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1661,24 @@ dependencies = [ [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "6bf35abc9744a71822d6c9a95243f549986941238a52ca412631f0d2e620c1d9" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.2", + "p3-matrix 0.6.2", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "e48cf8a90522a690e1e99bedafcbea39a5708f4a8cf597e8007d192260709735" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", ] [[package]] @@ -1737,11 +1687,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be15c94c45b1c8cb343ba65675855c013e8dd88dd5cf55b8598e5d40e8f84de" +dependencies = [ + "p3-field 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-monty-31 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "tracing", ] @@ -1751,25 +1715,56 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ - "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a8476394bf799ab9d70e861a9659700bb0bf14d7bc9303311a52cf1c378986" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ - "itertools", + "itertools 0.14.0", + "num-bigint", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e879e5f44a485a949c06274c4b17e33c6e85287afb8e6ef162011a60b39f7c99" +dependencies = [ + "itertools 0.15.0", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", "paste", "rand 0.10.2", "serde", @@ -1783,27 +1778,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", ] +[[package]] +name = "p3-goldilocks" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efb05a6dbade1c97eb99e5d1e719b274d2f9d47096dcb29bf2c2f389394fab49" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-poseidon1 0.6.2", + "p3-poseidon2 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", +] + [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "4376e63b8a4c0ec8e8c8000659d9a09cddca95cfb3b948719585d9e2a3ade224" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "tiny-keccak", ] @@ -1813,10 +1829,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ - "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b721bbbae4ca8c0133cf330d5a73deef8663e0706550719874a0ec0ddb5540" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1859,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f648dac3a8af4706cfd110fc5a8d3a10237a747e4e62322d281df826978d0d3c" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5135a277e008c77700ca790abe797bdaa66c36f7c2717d839c6ab1b320ebd2b6" +dependencies = [ + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", ] @@ -1847,17 +1897,17 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ - "itertools", + "itertools 0.14.0", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1915,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c9e3c84a80a7ed5eb566486c7fedd0a8f55299187371aed9189089d8e89d55" +dependencies = [ + "itertools 0.15.0", + "num-bigint", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-mds 0.6.2", + "p3-poseidon1 0.6.2", + "p3-poseidon2 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff7da7181e42690f30009bfea6f0d4677d54e4a35f867ab14b7c970d9e93db7" +dependencies = [ + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-symmetric 0.6.2", "rand 0.10.2", ] @@ -1882,10 +1968,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03f0f8a8631454315502f58c6e299ba38e3ec5f71a4cd65abdcafdb3e2b58605" +dependencies = [ + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", ] @@ -1895,9 +1994,21 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ - "itertools", - "p3-field", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab7e700435824b43b0bf59191f862da259eb5b30f6bac13715c4c53aaaf51fd0" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-util 0.6.2", "serde", ] @@ -1911,6 +2022,15 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284186adf438d2fa2615ca06af661db80bce861a33653f8e510f70edf0d03d6b" +dependencies = [ + "serde", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2061,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2074,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2084,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2116,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2126,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2181,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2228,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2238,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2254,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2278,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2347,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2408,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2467,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2531,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2580,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2621,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2695,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2929,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2958,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2977,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3074,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5d39d1a984eb7ae37afa348f058216d62a6d5f71640f4113a8114386c2a812a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3205,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/examples/p2id-note/src/lib.rs b/examples/p2id-note/src/lib.rs index 3d979117c..3a09c2a2e 100644 --- a/examples/p2id-note/src/lib.rs +++ b/examples/p2id-note/src/lib.rs @@ -21,7 +21,7 @@ impl P2idNote { let current_account = account.get_id(); assert_eq!(current_account, self.target_account_id); - let assets = active_note::get_assets(); + let assets = active_note::get_initial_assets(); for asset in assets { account.receive_asset(asset); } diff --git a/examples/p2ide-note/Cargo.lock b/examples/p2ide-note/Cargo.lock index 316ae1909..2984fe122 100644 --- a/examples/p2ide-note/Cargo.lock +++ b/examples/p2ide-note/Cargo.lock @@ -4,12 +4,12 @@ version = 4 [[package]] name = "aead" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" dependencies = [ "crypto-common", - "generic-array", + "inout", ] [[package]] @@ -89,15 +89,6 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "ascii-canvas" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" -dependencies = [ - "term", -] - [[package]] name = "autocfg" version = "1.5.1" @@ -106,9 +97,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base16ct" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" [[package]] name = "base64ct" @@ -122,30 +113,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - [[package]] name = "bitflags" version = "1.3.2" @@ -169,16 +136,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -207,39 +174,45 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chacha20" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpufeatures", + "rand_core 0.10.1", ] [[package]] name = "chacha20poly1305" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +checksum = "9b89e1c441e926b9c82a8d023f6e1b7ae0adcfaa7d621814e4d60789bac751cb" dependencies = [ "aead", "chacha20", "cipher", "poly1305", - "zeroize", ] [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ + "block-buffer", "crypto-common", "inout", - "zeroize", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.5" @@ -248,9 +221,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] name = "constant_time_eq" @@ -259,13 +232,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] -name = "cpufeatures" -version = "0.2.17" +name = "cpubits" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" [[package]] name = "cpufeatures" @@ -315,35 +285,47 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.5.5" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" dependencies = [ - "generic-array", - "rand_core 0.6.4", + "cpubits", + "ctutils", + "hybrid-array", + "num-traits", + "rand_core 0.10.1", "subtle", "zeroize", ] [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", + "hybrid-array", + "rand_core 0.10.1", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", + "subtle", ] [[package]] name = "curve25519-dalek" -version = "4.1.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -396,9 +378,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.10" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" dependencies = [ "const-oid", "zeroize", @@ -427,14 +409,14 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "const-oid", "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -445,9 +427,9 @@ checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] name = "ecdsa" -version = "0.16.9" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ "der", "digest", @@ -455,13 +437,14 @@ dependencies = [ "rfc6979", "signature", "spki", + "zeroize", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" dependencies = [ "pkcs8", "signature", @@ -469,14 +452,15 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" dependencies = [ "curve25519-dalek", "ed25519", "serde", "sha2", + "signature", "subtle", "zeroize", ] @@ -489,33 +473,25 @@ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "elliptic-curve" -version = "0.13.8" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" dependencies = [ "base16ct", "crypto-bigint", + "crypto-common", "digest", "ff", - "generic-array", "group", "hkdf", + "hybrid-array", "pkcs8", - "rand_core 0.6.4", + "rand_core 0.10.1", "sec1", "subtle", "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "env_filter" version = "2.0.0" @@ -558,19 +534,19 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] [[package]] name = "fiat-crypto" -version = "0.2.9" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" [[package]] name = "find-msvc-tools" @@ -578,21 +554,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", "spin 0.9.8", ] @@ -669,7 +636,6 @@ dependencies = [ "futures-sink", "futures-task", "pin-project-lite", - "slab", ] [[package]] @@ -687,30 +653,6 @@ dependencies = [ "windows-result", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -718,11 +660,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -732,8 +672,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -744,12 +687,12 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core 0.10.1", "subtle", ] @@ -770,22 +713,33 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ "digest", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "id-arena" version = "2.3.0" @@ -812,11 +766,11 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -834,6 +788,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.18" @@ -882,61 +845,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", - "futures-util", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.4" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8" dependencies = [ - "cfg-if", + "cpubits", "ecdsa", "elliptic-curve", - "once_cell", + "primeorder", "sha2", - "signature", + "wnaf", ] [[package]] name = "keccak" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" -dependencies = [ - "cpufeatures 0.2.17", -] - -[[package]] -name = "lalrpop" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "sha3", - "string_cache", - "term", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.22.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +checksum = "9e24a010dd405bd7ed803e5253182815b41bf2e6a80cc3bfc066658e03a198aa" dependencies = [ - "rustversion", + "cfg-if", + "cpufeatures", ] [[package]] @@ -1013,7 +946,7 @@ dependencies = [ "miden-base", "miden-base-macros", "miden-base-sys", - "miden-field", + "miden-field 0.25.1", "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", @@ -1022,9 +955,9 @@ dependencies = [ [[package]] name = "miden-ace-codegen" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87598d43cfca4a8c0ecb29cecdc2c9b67e6e99aac91ca108ce0413dfaeec25ab" +checksum = "96eb86fc5b2954ccc81074698ab704626dc814c0e15c3f0252f1df0e2799bc6f" dependencies = [ "miden-core", "miden-crypto", @@ -1033,14 +966,13 @@ dependencies = [ [[package]] name = "miden-air" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff5d900b5d214870ed628948342aa2ddab95720371d74a754ddf406e3b67021" +checksum = "f63c24153870bb329d2dd25f43b731d65ebc0c4cb62be77c344145cf45fb7d7a" dependencies = [ "miden-ace-codegen", "miden-core", "miden-crypto", - "miden-lifted-stark", "miden-utils-indexing", "thiserror", "tracing", @@ -1048,9 +980,9 @@ dependencies = [ [[package]] name = "miden-assembly" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "174c814c212eccf944042a3409833d2d2c7c725fa077306dfb1a81c892112946" +checksum = "6dac28a3d1b0a39e90ef7dbdbe59cabfc9ff287ad29567f7180ccc6c52cfe541" dependencies = [ "log", "miden-assembly-syntax", @@ -1065,14 +997,12 @@ dependencies = [ [[package]] name = "miden-assembly-syntax" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43921711f3df77be1ac975b39fbf483dc05980760a1b932bc1554ca29c43ec81" +checksum = "6f2aade47c6c4ddd97f3186b65b62086fc57a642e3a755cf6733e2135cf9c483" dependencies = [ - "aho-corasick", - "lalrpop", - "lalrpop-util", "log", + "miden-assembly-syntax-cst", "miden-core", "miden-debug-types", "miden-utils-diagnostics", @@ -1086,6 +1016,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-assembly-syntax-cst" +version = "0.25.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49d1941d835598aad650297259566b87340bd9f3d02fb2cea5c17a8228412538" +dependencies = [ + "miden-debug-types", + "miden-rowan", + "miden-utils-diagnostics", + "thiserror", +] + [[package]] name = "miden-base" version = "0.13.1" @@ -1125,9 +1067,9 @@ dependencies = [ [[package]] name = "miden-core" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc597642fa67a111eaf177de7a8f4c3a001ac5ddafb7d1398ad8551c031e20" +checksum = "b20fb1d59681091b56748e27125910fdc487ea11767364fb4ecc2430fbd99dea" dependencies = [ "derive_more", "log", @@ -1137,23 +1079,23 @@ dependencies = [ "miden-utils-core-derive", "miden-utils-indexing", "miden-utils-sync", - "num-derive", - "num-traits", "serde", "thiserror", ] [[package]] name = "miden-core-lib" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9deb9ffbd9548b03eaa5e63ec72badcb16bb2c841a1a0bdd74e1829f18844a7e" +checksum = "54d39f7d3365f9ce4215fcebd4b3d2534c47de35dc6f3ba5e74ad4c031c782d0" dependencies = [ "env_logger", "fs-err", "miden-assembly", + "miden-assembly-syntax", "miden-core", "miden-crypto", + "miden-mast-package", "miden-package-registry", "miden-processor", "miden-utils-sync", @@ -1162,9 +1104,9 @@ dependencies = [ [[package]] name = "miden-crypto" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35198bebd353cddc25ad4aafb5f4ef9e71b283d71c787b8938c575c16974135d" +checksum = "afd70d37ade91ce0f37a0ad7b9f1709391657243857d5d209ec62a100e358d4d" dependencies = [ "blake3", "cc", @@ -1176,25 +1118,23 @@ dependencies = [ "hkdf", "k256", "miden-crypto-derive", - "miden-field", + "miden-field 0.28.0", "miden-lifted-stark", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "num", "num-complex", "once_cell", "p3-blake3", - "p3-challenger", - "p3-dft", - "p3-goldilocks", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-goldilocks 0.6.2", "p3-keccak", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", - "rand 0.9.4", - "rand_chacha", - "rand_core 0.9.5", - "rand_hc", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "rand 0.10.2", + "rand_chacha 0.10.0", "serde", "sha2", "sha3", @@ -1205,9 +1145,9 @@ dependencies = [ [[package]] name = "miden-crypto-derive" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9068c6554db0e051f62913575de9949841a46b96ae92d4b7d28e1fed5d8f052b" +checksum = "9197f2837af387b5a9b60ef3c30670cf34a453c3a8e81f9cf68df84ca3122253" dependencies = [ "quote", "syn 2.0.118", @@ -1215,9 +1155,9 @@ dependencies = [ [[package]] name = "miden-debug-types" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb406958e7e218b7d7a159e91d963baff54edf7849d48bb9b7ce612e22eb29e" +checksum = "09153b2db5b0e0e2d1dc18dc72dafd4993568ff39cf9d385222cc48e57487613" dependencies = [ "memchr", "miden-crypto", @@ -1238,12 +1178,31 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "379a39db52cd932a95d4017a18b712ee53ed0f86cfedf8c63ed72d687a18a191" dependencies = [ - "miden-serde-utils", + "miden-serde-utils 0.25.1", "num-bigint", - "p3-challenger", - "p3-field", - "p3-goldilocks", - "p3-util", + "p3-challenger 0.5.3", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "subtle", + "thiserror", +] + +[[package]] +name = "miden-field" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45929f2e6b18f6535cfa25a55f5dac8be556410a4fc5c7e003a147b678af9e18" +dependencies = [ + "miden-serde-utils 0.28.0", + "num-bigint", + "p3-challenger 0.6.2", + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", + "p3-util 0.6.2", "paste", "rand 0.10.2", "serde", @@ -1255,7 +1214,7 @@ dependencies = [ name = "miden-field-repr" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", "miden-field-repr-derive", ] @@ -1279,34 +1238,35 @@ dependencies = [ [[package]] name = "miden-lifted-air" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789e0e469d1731012d8a018057317f31580611535c20d2a47c022213228cb733" +checksum = "320d7e0f1ac4a668682146cce69585ddc8dfe1fdf6ba5dac1986233e3e48d4df" dependencies = [ "p3-air", - "p3-field", - "p3-matrix", - "p3-util", + "p3-challenger 0.6.2", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-util 0.6.2", "thiserror", ] [[package]] name = "miden-lifted-stark" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f62cca91182917b22a47e150028b7c785df620a15b2974a39c64e2b1b7a889d3" +checksum = "8075f037bb02eb763223bc2f762a55c793f3795677f88fc06e58641091fd69e0" dependencies = [ "miden-lifted-air", "miden-stark-transcript", "miden-stateful-hasher", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-symmetric", - "p3-util", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", "serde", "thiserror", @@ -1315,10 +1275,11 @@ dependencies = [ [[package]] name = "miden-mast-package" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57398cc0a3ab2e451ea6ef5df2479e822ff857c03db22063c7ae583d3cfdec5b" +checksum = "f6f409600cc51231eb3ef74518c0e1001af04ee35739ff3ffccd6b4de8d5d337" dependencies = [ + "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", @@ -1364,9 +1325,9 @@ dependencies = [ [[package]] name = "miden-package-registry" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3befe190482e68f706235f3818830487ac8ed66057aa9562c7c22326f7be4e" +checksum = "1130162ca3551546a9f537d4087dac6bebc918eb72e3d21c6f5155cf6527b09b" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1380,14 +1341,15 @@ dependencies = [ [[package]] name = "miden-processor" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538a47dca6e2c918d31a9152a14b82cc93bc1dcbfccd3a91ed61ec0dfd94c2f" +checksum = "6d2b83d82a5d0af50b1b87948164f8d65998a33ba461335ed4fb7faceffab000" dependencies = [ - "itertools", + "itertools 0.14.0", "miden-air", "miden-core", "miden-debug-types", + "miden-mast-package", "miden-utils-diagnostics", "miden-utils-indexing", "paste", @@ -1398,9 +1360,9 @@ dependencies = [ [[package]] name = "miden-project" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0082a2b6858148040d221d64f0db4b9d8e64a6aebd6a48cfad2e12bb726542b1" +checksum = "52cd061e3a707aa485c191f8430adc4a3936a31fb423aaee6d800c89b9e08c04" dependencies = [ "miden-assembly-syntax", "miden-core", @@ -1415,13 +1377,13 @@ dependencies = [ [[package]] name = "miden-protocol" -version = "0.15.3" +version = "0.16.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66340243e37da5936cb278a8dd11037813f1dc6731c2fc866703b76ed465ebc3" +checksum = "f185d7a1e0c6c05ae760281956de3f6057e6d7889daeade4c71c158d6a252748" dependencies = [ "bech32", "fs-err", - "getrandom 0.3.4", + "getrandom 0.4.3", "miden-assembly", "miden-assembly-syntax", "miden-core", @@ -1429,16 +1391,27 @@ dependencies = [ "miden-crypto", "miden-crypto-derive", "miden-mast-package", + "miden-package-registry", "miden-processor", "miden-utils-sync", "miden-verifier", - "rand 0.9.4", + "rand 0.10.2", "regex", "semver 1.0.28", "thiserror", "walkdir", ] +[[package]] +name = "miden-rowan" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13695bf99aabaa21d6572b807c66bb26251aa3d9b75e828b3c99b97a3b1ce7e" +dependencies = [ + "hashbrown", + "rustc-hash", +] + [[package]] name = "miden-sdk-alloc" version = "0.13.1" @@ -1449,44 +1422,54 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d78cd1d4fcad937312e544f7d53423485e453598aa4fb989d2b6374027a8c136" dependencies = [ - "p3-field", - "p3-goldilocks", + "p3-field 0.5.3", + "p3-goldilocks 0.5.3", +] + +[[package]] +name = "miden-serde-utils" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf6872ac0f2de384ac65968e9bdc24656b31c487ea3bb1665871095c10f11ee" +dependencies = [ + "p3-field 0.6.2", + "p3-goldilocks 0.6.2", ] [[package]] name = "miden-stark-transcript" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05901db2e30d3954243960fe21cea7fbec39f97c27774b56fd5031c28c4881ba" +checksum = "13f2f5cc37a6b24ef2ab4c8d4dfb874a8f55add5147bfad47fde901f03165a51" dependencies = [ - "p3-challenger", - "p3-field", + "p3-challenger 0.6.2", + "p3-field 0.6.2", "serde", "thiserror", ] [[package]] name = "miden-stateful-hasher" -version = "0.25.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faeb47a90c55c5d45051d23cf691588804dd531995b4582c79108b64e445a905" +checksum = "93a95d46e93b94d82e0fcc6cec67ea362a548c1b6209bfdd1211433537314b83" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.6.2", + "p3-symmetric 0.6.2", ] [[package]] name = "miden-stdlib-sys" version = "0.13.1" dependencies = [ - "miden-field", + "miden-field 0.25.1", ] [[package]] name = "miden-utils-core-derive" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e887090da62091ba39f600c0cd831fec084eb437014049c550ee1c32c1517b2e" +checksum = "d171f3a6a5c84b2334e16bf47c162cab9ba05ac59cadc362ae219fb3cff09ca9" dependencies = [ "proc-macro2", "quote", @@ -1495,11 +1478,10 @@ dependencies = [ [[package]] name = "miden-utils-diagnostics" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2444cdba48d71c3c540c9a3b268b5067f350ac9d60797d88fd92461ebd246a04" +checksum = "3fb1931be8e09d55e8a3a0549771470ce88e2c2371b1d2420ec856c552d21d68" dependencies = [ - "miden-crypto", "miden-debug-types", "miden-miette", "tracing", @@ -1507,9 +1489,9 @@ dependencies = [ [[package]] name = "miden-utils-indexing" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76500dbcd119ebc1f558f8de302f21aeead8b37b70a5a664180f6ea2f6b869f" +checksum = "8dd9b306656509718fd1f4b01e717889e6960f5cb4ffdef958ff40eb641592ab" dependencies = [ "miden-crypto", "proptest", @@ -1519,9 +1501,9 @@ dependencies = [ [[package]] name = "miden-utils-sync" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107803f349d07260dfacf96c0b583a279a49480cbd265c9b9135f7d06cbc0c55" +checksum = "7a239c1d857f762475c972dea60482d439e93778de6cced258e2620158276bac" dependencies = [ "lock_api", "loom", @@ -1531,15 +1513,15 @@ dependencies = [ [[package]] name = "miden-verifier" -version = "0.23.5" +version = "0.25.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011b9bae1321cb46bea2197f1991a1ae1a1cabd9fe1e9a1b739626881944244c" +checksum = "e748fcfd108cfa2e165a728639b0485c9426efc1a44b9c79cacf5c933d6f058a" dependencies = [ - "bincode", "miden-air", "miden-core", "miden-crypto", "serde", + "serde-wincode", "thiserror", "tracing", ] @@ -1554,33 +1536,18 @@ dependencies = [ [[package]] name = "midenc-hir-type" -version = "0.6.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff0511aa2201f7098995e38a3c97a319d379c3b2d26fb83677b21b71f61a7b4" +checksum = "f67fe32b429d499d0ae713e044b593d866b1ab51540de6ca8881413aba42e858" dependencies = [ "miden-formatting", - "miden-serde-utils", + "miden-serde-utils 0.28.0", "serde", "serde_repr", "smallvec", "thiserror", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -1623,17 +1590,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "num-integer" version = "0.1.46" @@ -1690,12 +1646,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "owo-colors" version = "4.3.0" @@ -1711,24 +1661,24 @@ dependencies = [ [[package]] name = "p3-air" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c824e8d7c7ddf208b742eac8d48e0b2d52d22fa013578a7762bf6931dbab1f46" +checksum = "6bf35abc9744a71822d6c9a95243f549986941238a52ca412631f0d2e620c1d9" dependencies = [ - "p3-field", - "p3-matrix", + "p3-field 0.6.2", + "p3-matrix 0.6.2", "tracing", ] [[package]] name = "p3-blake3" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2733229a713bd83ccf5eb749e8f8e7380c1052674394a25c0422a772204a20af" +checksum = "e48cf8a90522a690e1e99bedafcbea39a5708f4a8cf597e8007d192260709735" dependencies = [ "blake3", - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", ] [[package]] @@ -1737,11 +1687,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8972ccd1d5dc90e46cdb1f2ab4ee2bae49b3917e5e98aa533f0c2b779c010445" dependencies = [ - "p3-field", - "p3-maybe-rayon", - "p3-monty-31", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-monty-31 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "tracing", +] + +[[package]] +name = "p3-challenger" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be15c94c45b1c8cb343ba65675855c013e8dd88dd5cf55b8598e5d40e8f84de" +dependencies = [ + "p3-field 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-monty-31 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "tracing", ] @@ -1751,25 +1715,56 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17771aca44632f9cc11f2718d7ea7ec06794946c4190ef3a985bfc893f14c18a" dependencies = [ - "itertools", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", "spin 0.10.0", "tracing", ] +[[package]] +name = "p3-dft" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a8476394bf799ab9d70e861a9659700bb0bf14d7bc9303311a52cf1c378986" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-field" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f3eb24d0591fd4d282d89cbe4e4efba5571c699375006f80b2cbf53ce83461c" dependencies = [ - "itertools", + "itertools 0.14.0", + "num-bigint", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "paste", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e879e5f44a485a949c06274c4b17e33c6e85287afb8e6ef162011a60b39f7c99" +dependencies = [ + "itertools 0.15.0", "num-bigint", - "p3-maybe-rayon", - "p3-util", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", "paste", "rand 0.10.2", "serde", @@ -1783,27 +1778,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5751c6591a0d2397d726620c2c29a7436ec6c5e19d2ed74ca5d078d4fbb18eb5" dependencies = [ "num-bigint", - "p3-challenger", - "p3-dft", - "p3-field", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-challenger 0.5.3", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", ] +[[package]] +name = "p3-goldilocks" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efb05a6dbade1c97eb99e5d1e719b274d2f9d47096dcb29bf2c2f389394fab49" +dependencies = [ + "num-bigint", + "p3-challenger 0.6.2", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-poseidon1 0.6.2", + "p3-poseidon2 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", +] + [[package]] name = "p3-keccak" -version = "0.5.3" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a7df174ff0c19a8742eb4698eaa1667c5f858d018e2faf09c55f1f24a6f9c3" +checksum = "4376e63b8a4c0ec8e8c8000659d9a09cddca95cfb3b948719585d9e2a3ade224" dependencies = [ - "p3-symmetric", - "p3-util", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "tiny-keccak", ] @@ -1813,10 +1829,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea9c94c0714944e7b8a9a62e6340b1e3e1d3f8ecfd3e35c08798360200e73eff" dependencies = [ - "itertools", - "p3-field", - "p3-maybe-rayon", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", + "serde", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b721bbbae4ca8c0133cf330d5a73deef8663e0706550719874a0ec0ddb5540" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", "serde", "tracing", @@ -1828,16 +1859,35 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eebc233a34b1ab0273f35b4052fa2eeb3114b22ba4575bd7da00716e878ffb77" +[[package]] +name = "p3-maybe-rayon" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f648dac3a8af4706cfd110fc5a8d3a10237a747e4e62322d281df826978d0d3c" + [[package]] name = "p3-mds" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b5441fa8116246ec9e6c835f15273cb27777ca572960ec87476b67fef13e01e" dependencies = [ - "p3-dft", - "p3-field", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-mds" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5135a277e008c77700ca790abe797bdaa66c36f7c2717d839c6ab1b320ebd2b6" +dependencies = [ + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", ] @@ -1847,17 +1897,17 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8724f330ea6d19dd4f2436aa0f88b5fcbf88f0f55ca7fccd3fea8b736dbcddad" dependencies = [ - "itertools", + "itertools 0.14.0", "num-bigint", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-poseidon1", - "p3-poseidon2", - "p3-symmetric", - "p3-util", + "p3-dft 0.5.3", + "p3-field 0.5.3", + "p3-matrix 0.5.3", + "p3-maybe-rayon 0.5.3", + "p3-mds 0.5.3", + "p3-poseidon1 0.5.3", + "p3-poseidon2 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", "paste", "rand 0.10.2", "serde", @@ -1865,14 +1915,50 @@ dependencies = [ "tracing", ] +[[package]] +name = "p3-monty-31" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c9e3c84a80a7ed5eb566486c7fedd0a8f55299187371aed9189089d8e89d55" +dependencies = [ + "itertools 0.15.0", + "num-bigint", + "p3-dft 0.6.2", + "p3-field 0.6.2", + "p3-matrix 0.6.2", + "p3-maybe-rayon 0.6.2", + "p3-mds 0.6.2", + "p3-poseidon1 0.6.2", + "p3-poseidon2 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", + "paste", + "rand 0.10.2", + "serde", + "spin 0.12.2", + "tracing", +] + [[package]] name = "p3-poseidon1" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e2a562fea210baae390a32f9ecf0dd8724ae3f4352d1c8e413077b6f00a162" dependencies = [ - "p3-field", - "p3-symmetric", + "p3-field 0.5.3", + "p3-symmetric 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff7da7181e42690f30009bfea6f0d4677d54e4a35f867ab14b7c970d9e93db7" +dependencies = [ + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-symmetric 0.6.2", "rand 0.10.2", ] @@ -1882,10 +1968,23 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06394851c161d17e4aa4ad2aad5557d32f14cadd1dc838f965d8e1821a63b8c5" dependencies = [ - "p3-field", - "p3-mds", - "p3-symmetric", - "p3-util", + "p3-field 0.5.3", + "p3-mds 0.5.3", + "p3-symmetric 0.5.3", + "p3-util 0.5.3", + "rand 0.10.2", +] + +[[package]] +name = "p3-poseidon2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03f0f8a8631454315502f58c6e299ba38e3ec5f71a4cd65abdcafdb3e2b58605" +dependencies = [ + "p3-field 0.6.2", + "p3-mds 0.6.2", + "p3-symmetric 0.6.2", + "p3-util 0.6.2", "rand 0.10.2", ] @@ -1895,9 +1994,21 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ac1a276d421f8ef3361bb7d8c39a02c93c6b3f10eeaa559cc4c50222f9a5b82" dependencies = [ - "itertools", - "p3-field", - "p3-util", + "itertools 0.14.0", + "p3-field 0.5.3", + "p3-util 0.5.3", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab7e700435824b43b0bf59191f862da259eb5b30f6bac13715c4c53aaaf51fd0" +dependencies = [ + "itertools 0.15.0", + "p3-field 0.6.2", + "p3-util 0.6.2", "serde", ] @@ -1911,6 +2022,15 @@ dependencies = [ "transpose", ] +[[package]] +name = "p3-util" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284186adf438d2fa2615ca06af661db80bce861a33653f8e510f70edf0d03d6b" +dependencies = [ + "serde", +] + [[package]] name = "parking_lot" version = "0.12.5" @@ -1941,23 +2061,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pin-project-lite" @@ -1967,9 +2074,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs8" -version = "0.10.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der", "spki", @@ -1977,12 +2084,11 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" dependencies = [ - "cpufeatures 0.2.17", - "opaque-debug", + "cpufeatures", "universal-hash", ] @@ -2010,12 +2116,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "prettyplease" version = "0.2.37" @@ -2026,6 +2126,32 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "primefield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" +dependencies = [ + "crypto-bigint", + "crypto-common", + "ff", + "rand_core 0.10.1", + "subtle", + "zeroize", +] + +[[package]] +name = "primeorder" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" +dependencies = [ + "elliptic-curve", + "primefield", + "serdect", + "wnaf", +] + [[package]] name = "priority-queue" version = "2.7.0" @@ -2055,7 +2181,7 @@ dependencies = [ "bitflags 2.13.0", "num-traits", "rand 0.9.4", - "rand_chacha", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "unarray", @@ -2102,7 +2228,7 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "rand_chacha", + "rand_chacha 0.9.0", "rand_core 0.9.5", ] @@ -2112,6 +2238,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "chacha20", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -2126,12 +2254,13 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "rand_chacha" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "3e6af7f3e25ded52c41df4e0b1af2d047e45896c2f3281792ed68a1c243daedb" dependencies = [ - "getrandom 0.2.17", + "ppv-lite86", + "rand_core 0.10.1", ] [[package]] @@ -2149,15 +2278,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b363d4f6370f88d62bf586c80405657bde0f0e1b8945d47d2ad59b906cb4f54" -dependencies = [ - "rand_core 0.6.4", -] - [[package]] name = "rand_xorshift" version = "0.4.0" @@ -2227,12 +2347,12 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rfc6979" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" dependencies = [ + "crypto-bigint", "hmac", - "subtle", ] [[package]] @@ -2288,14 +2408,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sec1" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", + "ctutils", "der", - "generic-array", - "pkcs8", + "hybrid-array", "subtle", "zeroize", ] @@ -2347,6 +2467,17 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde-wincode" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa9d3a86c66cf10ce79df36f555a5a4c8d72a82515d9ea8ca420e02c925c30f" +dependencies = [ + "serde", + "thiserror", + "wincode", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -2400,25 +2531,36 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] [[package]] name = "sha3" -version = "0.10.9" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" dependencies = [ "digest", "keccak", + "sponge-cursor", ] [[package]] @@ -2438,26 +2580,14 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signature" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core 0.10.1", ] -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - [[package]] name = "smallvec" version = "1.15.2" @@ -2491,33 +2621,36 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8abadc99fd9c7bbb7d0ca2b31d72a067d0c0dcd7aad25ab8cac71ba91417694b" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" dependencies = [ "base64ct", "der", ] [[package]] -name = "strength_reduce" -version = "0.2.4" +name = "sponge-cursor" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" +checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" [[package]] -name = "string_cache" -version = "0.8.9" +name = "strength_reduce" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strip-ansi-escapes" @@ -2562,15 +2695,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" -[[package]] -name = "term" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" -dependencies = [ - "windows-sys", -] - [[package]] name = "termcolor" version = "1.4.1" @@ -2805,12 +2929,12 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" dependencies = [ "crypto-common", - "subtle", + "ctutils", ] [[package]] @@ -2834,12 +2958,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - [[package]] name = "vte" version = "0.14.1" @@ -2859,12 +2977,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - [[package]] name = "wasip2" version = "1.0.4+wasi-0.2.12" @@ -2962,6 +3074,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "wincode" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5d39d1a984eb7ae37afa348f058216d62a6d5f71640f4113a8114386c2a812a" +dependencies = [ + "pastey", + "proc-macro2", + "quote", + "thiserror", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -3081,14 +3205,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wnaf" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" +dependencies = [ + "ff", + "group", + "hybrid-array", +] + [[package]] name = "x25519-dalek" -version = "2.0.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "e7e8131a03190127fb2263afc72b322ecadae46b6ff8c6f399ff5d02f5559af6" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core 0.10.1", ] [[package]] diff --git a/examples/p2ide-note/src/lib.rs b/examples/p2ide-note/src/lib.rs index 812041746..fc37ecee6 100644 --- a/examples/p2ide-note/src/lib.rs +++ b/examples/p2ide-note/src/lib.rs @@ -16,7 +16,7 @@ use miden::*; pub struct Wallet; fn consume_assets(account: &mut Wallet) { - let assets = active_note::get_assets(); + let assets = active_note::get_initial_assets(); for asset in assets { account.receive_asset(asset); } diff --git a/frontend/wasm/src/component/lift_exports.rs b/frontend/wasm/src/component/lift_exports.rs index 3af17e66a..878137922 100644 --- a/frontend/wasm/src/component/lift_exports.rs +++ b/frontend/wasm/src/component/lift_exports.rs @@ -437,6 +437,14 @@ fn annotate_protocol_export( let auth_attr = context.create_attribute::(()); export_func.set_attribute("auth_script", auth_attr); } + Some(ProtocolExportKind::AccountProcedure) => { + let account_proc_attr = context.create_attribute::(()); + export_func.set_attribute("account_procedure", account_proc_attr); + } + Some(ProtocolExportKind::TxScript) => { + let tx_script_attr = context.create_attribute::(()); + export_func.set_attribute("transaction_script", tx_script_attr); + } None => {} } } diff --git a/frontend/wasm/src/component/translator.rs b/frontend/wasm/src/component/translator.rs index 5e06a6a28..e517d8168 100644 --- a/frontend/wasm/src/component/translator.rs +++ b/frontend/wasm/src/component/translator.rs @@ -67,8 +67,9 @@ pub struct ComponentTranslator<'a> { context: Rc, - /// Frontend metadata merged across all core modules that feed this component translation. - component_frontend_metadata: Option, + /// Frontend metadata entries merged across all core modules that feed this component + /// translation. + component_frontend_metadata: Vec, /// Names of component exports for which a lifting shim was emitted. lifted_export_names: FxHashSet, @@ -125,7 +126,7 @@ impl<'a> ComponentTranslator<'a> { let ns = hir2::Ident::with_empty_span(id.namespace); let name = hir2::Ident::with_empty_span(id.name); let component_frontend_metadata = - merge_frontend_metadata(nested_modules.iter().map(|(_, module)| module))?; + merge_frontend_metadata(nested_modules.iter().map(|(_, module)| module)); // If a world wasn't provided to us, create one let world_ref = match config.world { @@ -168,7 +169,7 @@ impl<'a> ComponentTranslator<'a> { } validate_lifted_frontend_metadata_exports( - self.component_frontend_metadata.as_ref(), + &self.component_frontend_metadata, &self.lifted_export_names, )?; @@ -501,8 +502,8 @@ impl<'a> ComponentTranslator<'a> { let core_export_func_path = self.core_module_export_func_path(frame, canon_lift); let protocol_export_kind: Option = self .component_frontend_metadata - .as_ref() - .and_then(|metadata| metadata.protocol_export_kind_for(name)); + .iter() + .find_map(|metadata| metadata.protocol_export_kind_for(name)); generate_export_lifting_function( &mut self.result, diff --git a/frontend/wasm/src/miden_abi/transform.rs b/frontend/wasm/src/miden_abi/transform.rs index d5dadd9ce..568858e8f 100644 --- a/frontend/wasm/src/miden_abi/transform.rs +++ b/frontend/wasm/src/miden_abi/transform.rs @@ -113,7 +113,13 @@ fn get_transform_strategy(path: &SymbolPath) -> Option { | tx_kernel::native_account::GET_ID | tx_kernel::native_account::COMPUTE_DELTA_COMMITMENT | tx_kernel::native_account::SET_STORAGE_ITEM - | tx_kernel::native_account::SET_STORAGE_MAP_ITEM => { + | tx_kernel::native_account::SET_STORAGE_MAP_ITEM + | tx_kernel::native_account::GET_INITIAL_COMMITMENT + | tx_kernel::native_account::GET_INITIAL_STORAGE_COMMITMENT + | tx_kernel::native_account::GET_INITIAL_VAULT_ROOT + | tx_kernel::native_account::GET_INITIAL_ASSET + | tx_kernel::native_account::GET_INITIAL_STORAGE_ITEM + | tx_kernel::native_account::GET_INITIAL_STORAGE_MAP_ITEM => { Some(TransformStrategy::ReturnViaPointer) } tx_kernel::native_account::INCR_NONCE @@ -150,26 +156,18 @@ fn get_transform_strategy(path: &SymbolPath) -> Option { symbols::ActiveAccount => { match components.next_if(|c| c.is_leaf())?.as_symbol_name().as_str() { tx_kernel::active_account::GET_NONCE - | tx_kernel::active_account::GET_BALANCE - | tx_kernel::active_account::GET_INITIAL_BALANCE | tx_kernel::active_account::GET_NUM_PROCEDURES - | tx_kernel::active_account::HAS_NON_FUNGIBLE_ASSET + | tx_kernel::active_account::HAS_ASSET | tx_kernel::active_account::HAS_PROCEDURE => { Some(TransformStrategy::NoTransform) } tx_kernel::active_account::GET_ID - | tx_kernel::active_account::GET_INITIAL_COMMITMENT | tx_kernel::active_account::GET_CODE_COMMITMENT | tx_kernel::active_account::COMPUTE_COMMITMENT - | tx_kernel::active_account::GET_INITIAL_STORAGE_COMMITMENT | tx_kernel::active_account::COMPUTE_STORAGE_COMMITMENT | tx_kernel::active_account::GET_STORAGE_ITEM - | tx_kernel::active_account::GET_INITIAL_STORAGE_ITEM | tx_kernel::active_account::GET_STORAGE_MAP_ITEM - | tx_kernel::active_account::GET_INITIAL_STORAGE_MAP_ITEM | tx_kernel::active_account::GET_ASSET - | tx_kernel::active_account::GET_INITIAL_ASSET - | tx_kernel::active_account::GET_INITIAL_VAULT_ROOT | tx_kernel::active_account::GET_VAULT_ROOT | tx_kernel::active_account::GET_PROCEDURE_ROOT => { Some(TransformStrategy::ReturnViaPointer) @@ -177,31 +175,18 @@ fn get_transform_strategy(path: &SymbolPath) -> Option { _ => None, } } - symbols::Asset => { - match components.next_if(|c| c.is_leaf())?.as_symbol_name().as_str() { - tx_kernel::asset::CREATE_FUNGIBLE_ASSET - | tx_kernel::asset::CREATE_NON_FUNGIBLE_ASSET => { - Some(TransformStrategy::ReturnViaPointer) - } - _ => None, - } - } symbols::Faucet => { match components.next_if(|c| c.is_leaf())?.as_symbol_name().as_str() { - tx_kernel::faucet::CREATE_FUNGIBLE_ASSET - | tx_kernel::faucet::CREATE_NON_FUNGIBLE_ASSET => { - Some(TransformStrategy::ReturnViaPointer) + tx_kernel::faucet::MINT | tx_kernel::faucet::BURN => { + Some(TransformStrategy::NoTransform) } - tx_kernel::faucet::MINT - | tx_kernel::faucet::BURN - | tx_kernel::faucet::HAS_CALLBACKS => Some(TransformStrategy::NoTransform), _ => None, } } symbols::ActiveNote => { match components.next_if(|c| c.is_leaf())?.as_symbol_name().as_str() { tx_kernel::active_note::GET_STORAGE - | tx_kernel::active_note::GET_ASSETS + | tx_kernel::active_note::GET_INITIAL_ASSETS | tx_kernel::active_note::WRITE_ATTACHMENT_COMMITMENTS_TO_MEMORY | tx_kernel::active_note::WRITE_ATTACHMENT_TO_MEMORY => { Some(TransformStrategy::NoTransform) @@ -223,12 +208,12 @@ fn get_transform_strategy(path: &SymbolPath) -> Option { } symbols::InputNote => { match components.next_if(|c| c.is_leaf())?.as_symbol_name().as_str() { - tx_kernel::input_note::GET_ASSETS + tx_kernel::input_note::GET_INITIAL_ASSETS | tx_kernel::input_note::WRITE_ATTACHMENT_COMMITMENTS_TO_MEMORY | tx_kernel::input_note::WRITE_ATTACHMENT_TO_MEMORY => { Some(TransformStrategy::NoTransform) } - tx_kernel::input_note::GET_ASSETS_INFO + tx_kernel::input_note::GET_INITIAL_ASSETS_INFO | tx_kernel::input_note::GET_RECIPIENT | tx_kernel::input_note::GET_METADATA | tx_kernel::input_note::GET_SENDER diff --git a/frontend/wasm/src/miden_abi/tx_kernel.rs b/frontend/wasm/src/miden_abi/tx_kernel.rs index e3e65e9fd..c06b5616a 100644 --- a/frontend/wasm/src/miden_abi/tx_kernel.rs +++ b/frontend/wasm/src/miden_abi/tx_kernel.rs @@ -2,7 +2,6 @@ pub(crate) mod active_account; pub(crate) mod active_note; -pub(crate) mod asset; pub(crate) mod faucet; pub(crate) mod input_note; pub(crate) mod native_account; @@ -24,7 +23,6 @@ pub(crate) fn signatures() -> &'static ModuleFunctionTypeMap { let mut m: ModuleFunctionTypeMap = Default::default(); m.extend(active_account::signatures()); m.extend(active_note::signatures()); - m.extend(asset::signatures()); m.extend(faucet::signatures()); m.extend(native_account::signatures()); m.extend(input_note::signatures()); diff --git a/frontend/wasm/src/miden_abi/tx_kernel/active_account.rs b/frontend/wasm/src/miden_abi/tx_kernel/active_account.rs index 042ea4fdf..dc8290ca7 100644 --- a/frontend/wasm/src/miden_abi/tx_kernel/active_account.rs +++ b/frontend/wasm/src/miden_abi/tx_kernel/active_account.rs @@ -15,21 +15,13 @@ pub(crate) const MODULE_PREFIX: &[SymbolNameComponent] = &[ pub const GET_ID: &str = "get_id"; pub const GET_NONCE: &str = "get_nonce"; -pub const GET_INITIAL_COMMITMENT: &str = "get_initial_commitment"; pub const GET_CODE_COMMITMENT: &str = "get_code_commitment"; pub const COMPUTE_COMMITMENT: &str = "compute_commitment"; -pub const GET_INITIAL_STORAGE_COMMITMENT: &str = "get_initial_storage_commitment"; pub const COMPUTE_STORAGE_COMMITMENT: &str = "compute_storage_commitment"; pub const GET_STORAGE_ITEM: &str = "get_item"; -pub const GET_INITIAL_STORAGE_ITEM: &str = "get_initial_item"; pub const GET_STORAGE_MAP_ITEM: &str = "get_map_item"; -pub const GET_INITIAL_STORAGE_MAP_ITEM: &str = "get_initial_map_item"; pub const GET_ASSET: &str = "get_asset"; -pub const GET_INITIAL_ASSET: &str = "get_initial_asset"; -pub const GET_BALANCE: &str = "get_balance"; -pub const GET_INITIAL_BALANCE: &str = "get_initial_balance"; -pub const HAS_NON_FUNGIBLE_ASSET: &str = "has_non_fungible_asset"; -pub const GET_INITIAL_VAULT_ROOT: &str = "get_initial_vault_root"; +pub const HAS_ASSET: &str = "has_asset"; pub const GET_VAULT_ROOT: &str = "get_vault_root"; pub const GET_NUM_PROCEDURES: &str = "get_num_procedures"; pub const GET_PROCEDURE_ROOT: &str = "get_procedure_root"; @@ -42,10 +34,6 @@ pub(crate) fn signatures() -> ModuleFunctionTypeMap { active_account .insert(Symbol::from(GET_ID), FunctionType::new(CallConv::Wasm, [], [Felt, Felt])); active_account.insert(Symbol::from(GET_NONCE), FunctionType::new(CallConv::Wasm, [], [Felt])); - active_account.insert( - Symbol::from(GET_INITIAL_COMMITMENT), - FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), - ); active_account.insert( Symbol::from(GET_CODE_COMMITMENT), FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), @@ -54,10 +42,6 @@ pub(crate) fn signatures() -> ModuleFunctionTypeMap { Symbol::from(COMPUTE_COMMITMENT), FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), ); - active_account.insert( - Symbol::from(GET_INITIAL_STORAGE_COMMITMENT), - FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), - ); active_account.insert( Symbol::from(COMPUTE_STORAGE_COMMITMENT), FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), @@ -66,10 +50,6 @@ pub(crate) fn signatures() -> ModuleFunctionTypeMap { Symbol::from(GET_STORAGE_ITEM), FunctionType::new(CallConv::Wasm, [Felt, Felt], [Felt, Felt, Felt, Felt]), ); - active_account.insert( - Symbol::from(GET_INITIAL_STORAGE_ITEM), - FunctionType::new(CallConv::Wasm, [Felt, Felt], [Felt, Felt, Felt, Felt]), - ); active_account.insert( Symbol::from(GET_STORAGE_MAP_ITEM), FunctionType::new( @@ -78,38 +58,14 @@ pub(crate) fn signatures() -> ModuleFunctionTypeMap { [Felt, Felt, Felt, Felt], ), ); - active_account.insert( - Symbol::from(GET_INITIAL_STORAGE_MAP_ITEM), - FunctionType::new( - CallConv::Wasm, - [Felt, Felt, Felt, Felt, Felt, Felt], - [Felt, Felt, Felt, Felt], - ), - ); active_account.insert( Symbol::from(GET_ASSET), FunctionType::new(CallConv::Wasm, [Felt, Felt, Felt, Felt], [Felt, Felt, Felt, Felt]), ); active_account.insert( - Symbol::from(GET_INITIAL_ASSET), - FunctionType::new(CallConv::Wasm, [Felt, Felt, Felt, Felt], [Felt, Felt, Felt, Felt]), - ); - active_account.insert( - Symbol::from(GET_BALANCE), - FunctionType::new(CallConv::Wasm, [Felt, Felt, Felt, Felt], [Felt]), - ); - active_account.insert( - Symbol::from(GET_INITIAL_BALANCE), - FunctionType::new(CallConv::Wasm, [Felt, Felt, Felt, Felt], [Felt]), - ); - active_account.insert( - Symbol::from(HAS_NON_FUNGIBLE_ASSET), + Symbol::from(HAS_ASSET), FunctionType::new(CallConv::Wasm, [Felt, Felt, Felt, Felt], [Felt]), ); - active_account.insert( - Symbol::from(GET_INITIAL_VAULT_ROOT), - FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), - ); active_account.insert( Symbol::from(GET_VAULT_ROOT), FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), diff --git a/frontend/wasm/src/miden_abi/tx_kernel/active_note.rs b/frontend/wasm/src/miden_abi/tx_kernel/active_note.rs index 63fac79ec..b9ea0115b 100644 --- a/frontend/wasm/src/miden_abi/tx_kernel/active_note.rs +++ b/frontend/wasm/src/miden_abi/tx_kernel/active_note.rs @@ -15,7 +15,7 @@ pub(crate) const MODULE_PREFIX: &[SymbolNameComponent] = &[ /// Writes the active note's inputs ("storage" in protocol v0.14+) to memory and returns the count. pub const GET_STORAGE: &str = "get_storage"; -pub const GET_ASSETS: &str = "get_assets"; +pub const GET_INITIAL_ASSETS: &str = "get_initial_assets"; pub const GET_SENDER: &str = "get_sender"; pub const GET_RECIPIENT: &str = "get_recipient"; pub const GET_SCRIPT_ROOT: &str = "get_script_root"; @@ -32,7 +32,10 @@ pub(crate) fn signatures() -> ModuleFunctionTypeMap { let mut m: ModuleFunctionTypeMap = Default::default(); let mut note: FunctionTypeMap = Default::default(); note.insert(Symbol::from(GET_STORAGE), FunctionType::new(CallConv::Wasm, [I32], [I32])); - note.insert(Symbol::from(GET_ASSETS), FunctionType::new(CallConv::Wasm, [I32], [I32])); + note.insert( + Symbol::from(GET_INITIAL_ASSETS), + FunctionType::new(CallConv::Wasm, [I32], [I32]), + ); note.insert(Symbol::from(GET_SENDER), FunctionType::new(CallConv::Wasm, [], [Felt, Felt])); note.insert( Symbol::from(GET_RECIPIENT), diff --git a/frontend/wasm/src/miden_abi/tx_kernel/asset.rs b/frontend/wasm/src/miden_abi/tx_kernel/asset.rs deleted file mode 100644 index afb502506..000000000 --- a/frontend/wasm/src/miden_abi/tx_kernel/asset.rs +++ /dev/null @@ -1,49 +0,0 @@ -use midenc_hir::{ - CallConv, FunctionType, SymbolNameComponent, SymbolPath, - Type::*, - interner::{Symbol, symbols}, -}; - -use crate::miden_abi::{FunctionTypeMap, ModuleFunctionTypeMap}; - -fn module_path() -> SymbolPath { - let parts = [ - SymbolNameComponent::Root, - SymbolNameComponent::Component(symbols::Miden), - SymbolNameComponent::Component(symbols::Protocol), - SymbolNameComponent::Component(symbols::Asset), - ]; - SymbolPath::from_iter(parts) -} - -pub const CREATE_FUNGIBLE_ASSET: &str = "create_fungible_asset"; -pub const CREATE_NON_FUNGIBLE_ASSET: &str = "create_non_fungible_asset"; - -pub(crate) fn signatures() -> ModuleFunctionTypeMap { - let mut m: ModuleFunctionTypeMap = Default::default(); - let mut funcs: FunctionTypeMap = Default::default(); - funcs.insert( - Symbol::from(CREATE_FUNGIBLE_ASSET), - FunctionType::new( - CallConv::Wasm, - [Felt, Felt, Felt, Felt], - [ - Felt, Felt, Felt, Felt, // ASSET_KEY - Felt, Felt, Felt, Felt, // ASSET_VALUE - ], - ), - ); - funcs.insert( - Symbol::from(CREATE_NON_FUNGIBLE_ASSET), - FunctionType::new( - CallConv::Wasm, - [Felt, Felt, Felt, Felt, Felt, Felt, Felt], - [ - Felt, Felt, Felt, Felt, // ASSET_KEY - Felt, Felt, Felt, Felt, // ASSET_VALUE - ], - ), - ); - m.insert(module_path(), funcs); - m -} diff --git a/frontend/wasm/src/miden_abi/tx_kernel/faucet.rs b/frontend/wasm/src/miden_abi/tx_kernel/faucet.rs index d2ea3e2b8..27ada5b9a 100644 --- a/frontend/wasm/src/miden_abi/tx_kernel/faucet.rs +++ b/frontend/wasm/src/miden_abi/tx_kernel/faucet.rs @@ -16,37 +16,12 @@ fn module_path() -> SymbolPath { SymbolPath::from_iter(parts) } -pub const CREATE_FUNGIBLE_ASSET: &str = "create_fungible_asset"; -pub const CREATE_NON_FUNGIBLE_ASSET: &str = "create_non_fungible_asset"; pub const MINT: &str = "mint"; pub const BURN: &str = "burn"; -pub const HAS_CALLBACKS: &str = "has_callbacks"; pub(crate) fn signatures() -> ModuleFunctionTypeMap { let mut m: ModuleFunctionTypeMap = Default::default(); let mut funcs: FunctionTypeMap = Default::default(); - funcs.insert( - Symbol::from(CREATE_FUNGIBLE_ASSET), - FunctionType::new( - CallConv::Wasm, - [Felt], - [ - Felt, Felt, Felt, Felt, // ASSET_KEY - Felt, Felt, Felt, Felt, // ASSET_VALUE - ], - ), - ); - funcs.insert( - Symbol::from(CREATE_NON_FUNGIBLE_ASSET), - FunctionType::new( - CallConv::Wasm, - [Felt, Felt, Felt, Felt], - [ - Felt, Felt, Felt, Felt, // ASSET_KEY - Felt, Felt, Felt, Felt, // ASSET_VALUE - ], - ), - ); funcs.insert( Symbol::from(MINT), FunctionType::new( @@ -69,7 +44,6 @@ pub(crate) fn signatures() -> ModuleFunctionTypeMap { [], ), ); - funcs.insert(Symbol::from(HAS_CALLBACKS), FunctionType::new(CallConv::Wasm, [], [Felt])); m.insert(module_path(), funcs); m } diff --git a/frontend/wasm/src/miden_abi/tx_kernel/input_note.rs b/frontend/wasm/src/miden_abi/tx_kernel/input_note.rs index 82da9cd88..680a0ed3e 100644 --- a/frontend/wasm/src/miden_abi/tx_kernel/input_note.rs +++ b/frontend/wasm/src/miden_abi/tx_kernel/input_note.rs @@ -16,8 +16,8 @@ fn module_path() -> SymbolPath { SymbolPath::from_iter(parts) } -pub const GET_ASSETS_INFO: &str = "get_assets_info"; -pub const GET_ASSETS: &str = "get_assets"; +pub const GET_INITIAL_ASSETS_INFO: &str = "get_initial_assets_info"; +pub const GET_INITIAL_ASSETS: &str = "get_initial_assets"; pub const GET_RECIPIENT: &str = "get_recipient"; pub const GET_METADATA: &str = "get_metadata"; pub const GET_SENDER: &str = "get_sender"; @@ -34,10 +34,13 @@ pub(crate) fn signatures() -> ModuleFunctionTypeMap { let mut m: ModuleFunctionTypeMap = Default::default(); let mut funcs: FunctionTypeMap = Default::default(); funcs.insert( - Symbol::from(GET_ASSETS_INFO), + Symbol::from(GET_INITIAL_ASSETS_INFO), FunctionType::new(CallConv::Wasm, [Felt], [Felt, Felt, Felt, Felt, Felt]), ); - funcs.insert(Symbol::from(GET_ASSETS), FunctionType::new(CallConv::Wasm, [I32, Felt], [I32])); + funcs.insert( + Symbol::from(GET_INITIAL_ASSETS), + FunctionType::new(CallConv::Wasm, [I32, Felt], [I32]), + ); funcs.insert( Symbol::from(GET_RECIPIENT), FunctionType::new(CallConv::Wasm, [Felt], [Felt, Felt, Felt, Felt]), diff --git a/frontend/wasm/src/miden_abi/tx_kernel/native_account.rs b/frontend/wasm/src/miden_abi/tx_kernel/native_account.rs index c3b6f68ab..3ad3f3b07 100644 --- a/frontend/wasm/src/miden_abi/tx_kernel/native_account.rs +++ b/frontend/wasm/src/miden_abi/tx_kernel/native_account.rs @@ -21,6 +21,12 @@ pub const SET_STORAGE_ITEM: &str = "set_item"; pub const SET_STORAGE_MAP_ITEM: &str = "set_map_item"; pub const INCR_NONCE: &str = "incr_nonce"; pub const WAS_PROCEDURE_CALLED: &str = "was_procedure_called"; +pub const GET_INITIAL_COMMITMENT: &str = "get_initial_commitment"; +pub const GET_INITIAL_STORAGE_COMMITMENT: &str = "get_initial_storage_commitment"; +pub const GET_INITIAL_VAULT_ROOT: &str = "get_initial_vault_root"; +pub const GET_INITIAL_ASSET: &str = "get_initial_asset"; +pub const GET_INITIAL_STORAGE_ITEM: &str = "get_initial_item"; +pub const GET_INITIAL_STORAGE_MAP_ITEM: &str = "get_initial_map_item"; pub(crate) fn signatures() -> ModuleFunctionTypeMap { let mut m: ModuleFunctionTypeMap = Default::default(); @@ -82,6 +88,34 @@ pub(crate) fn signatures() -> ModuleFunctionTypeMap { Symbol::from(WAS_PROCEDURE_CALLED), FunctionType::new(CallConv::Wasm, [Felt, Felt, Felt, Felt], [Felt]), ); + native_account.insert( + Symbol::from(GET_INITIAL_COMMITMENT), + FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), + ); + native_account.insert( + Symbol::from(GET_INITIAL_STORAGE_COMMITMENT), + FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), + ); + native_account.insert( + Symbol::from(GET_INITIAL_VAULT_ROOT), + FunctionType::new(CallConv::Wasm, [], [Felt, Felt, Felt, Felt]), + ); + native_account.insert( + Symbol::from(GET_INITIAL_ASSET), + FunctionType::new(CallConv::Wasm, [Felt, Felt, Felt, Felt], [Felt, Felt, Felt, Felt]), + ); + native_account.insert( + Symbol::from(GET_INITIAL_STORAGE_ITEM), + FunctionType::new(CallConv::Wasm, [Felt, Felt], [Felt, Felt, Felt, Felt]), + ); + native_account.insert( + Symbol::from(GET_INITIAL_STORAGE_MAP_ITEM), + FunctionType::new( + CallConv::Wasm, + [Felt, Felt, Felt, Felt, Felt, Felt], + [Felt, Felt, Felt, Felt], + ), + ); m.insert(SymbolPath::from_iter(MODULE_PREFIX.iter().copied()), native_account); m diff --git a/frontend/wasm/src/module/module_env.rs b/frontend/wasm/src/module/module_env.rs index 2304a6cce..1d118f5ad 100644 --- a/frontend/wasm/src/module/module_env.rs +++ b/frontend/wasm/src/module/module_env.rs @@ -3,7 +3,9 @@ use core::ops::Range; use std::path::PathBuf; use cranelift_entity::{PrimaryMap, packed_option::ReservedValue}; -use midenc_frontend_wasm_metadata::{FrontendMetadata, WASM_FRONTEND_METADATA_CUSTOM_SECTION_NAME}; +use midenc_frontend_wasm_metadata::{ + FrontendMetadata, WASM_FRONTEND_METADATA_CUSTOM_SECTION_NAME, decode_section, +}; use midenc_hir::{FxHashMap, FxHashSet, Ident, interner::Symbol}; use midenc_session::diagnostics::{DiagnosticsHandler, IntoDiagnostic, Report, Severity}; use wasmparser::{ @@ -84,89 +86,71 @@ pub struct ParsedModule<'data> { /// The serialized AccountComponentMetadata (name, description, storage layout, etc.) pub account_component_metadata_bytes: Option<&'data [u8]>, - /// Frontend-only component metadata emitted by SDK macros. - pub component_frontend_metadata: Option, + /// Frontend-only component metadata entries emitted by SDK macros (empty when none present). + pub component_frontend_metadata: Vec, } -/// Aggregates frontend metadata from all core modules that participate in one component. +/// Collects the frontend metadata entries emitted by all core modules of one component. +/// +/// A component's metadata is single-kind by construction: the SDK macros emit either one +/// `#[auth_script]` entry, any number of `#[account_procedure]` entries, one `#[note_script]` +/// entry, or one `#[tx_script]` entry — those kinds belong to distinct component/project kinds and +/// cannot be combined — and the linker's frontend-metadata uniqueness guard rejects a crate that +/// emits more than one metadata section. Merging is therefore a plain concatenation. pub(crate) fn merge_frontend_metadata<'data>( modules: impl Iterator>, -) -> WasmResult> { - let mut metadata = None; - for module in modules { - let Some(module_metadata) = module.component_frontend_metadata.as_ref() else { - continue; - }; - - merge_single_frontend_metadata(&mut metadata, module_metadata)?; - } - - Ok(metadata) +) -> Vec { + modules + .flat_map(|module| module.component_frontend_metadata.iter().cloned()) + .collect() } /// Verifies that metadata-selected exports were emitted as lifted component exports. pub(crate) fn validate_lifted_frontend_metadata_exports( - metadata: Option<&FrontendMetadata>, + metadata: &[FrontendMetadata], lifted_exports: &FxHashSet, ) -> WasmResult<()> { - let Some(metadata) = metadata else { - return Ok(()); - }; - - match metadata { - FrontendMetadata::AuthScript { - method_path, - export_name, - } => validate_lifted_export(method_path, export_name, "`#[auth_script]`", lifted_exports)?, - FrontendMetadata::NoteScript { - method_path, - export_name, - } => validate_lifted_export(method_path, export_name, "`#[note_script]`", lifted_exports)?, + for entry in metadata { + match entry { + FrontendMetadata::AuthScript { + method_path, + export_name, + } => validate_lifted_export( + method_path, + export_name, + "`#[auth_script]`", + lifted_exports, + )?, + FrontendMetadata::AccountProcedure { + method_path, + export_name, + } => validate_lifted_export( + method_path, + export_name, + "`#[account_procedure]`", + lifted_exports, + )?, + FrontendMetadata::NoteScript { + method_path, + export_name, + } => validate_lifted_export( + method_path, + export_name, + "`#[note_script]`", + lifted_exports, + )?, + FrontendMetadata::TxScript { + method_path, + export_name, + } => { + validate_lifted_export(method_path, export_name, "`#[tx_script]`", lifted_exports)? + } + } } Ok(()) } -/// Merges a single module's frontend metadata into the component-wide metadata view. -fn merge_single_frontend_metadata( - metadata: &mut Option, - module_metadata: &FrontendMetadata, -) -> WasmResult<()> { - match metadata { - None => { - *metadata = Some(module_metadata.clone()); - Ok(()) - } - Some(existing_metadata) => match (&*existing_metadata, module_metadata) { - (FrontendMetadata::AuthScript { .. }, FrontendMetadata::AuthScript { .. }) => { - Err(Report::from(WasmError::Unsupported(format!( - "multiple `#[auth_script]` procedures were found: `{}` and `{}`; only one is \ - allowed per project", - existing_metadata.method_path(), - module_metadata.method_path() - )))) - } - (FrontendMetadata::NoteScript { .. }, FrontendMetadata::NoteScript { .. }) => { - Err(Report::from(WasmError::Unsupported(format!( - "multiple `#[note_script]` procedures were found: `{}` and `{}`; only one is \ - allowed per project", - existing_metadata.method_path(), - module_metadata.method_path() - )))) - } - (FrontendMetadata::AuthScript { .. }, FrontendMetadata::NoteScript { .. }) - | (FrontendMetadata::NoteScript { .. }, FrontendMetadata::AuthScript { .. }) => { - Err(Report::from(WasmError::Unsupported(format!( - "both `#[auth_script]` and `#[note_script]` procedures were found: `{}` and \ - `{}`; only one kind is allowed per project", - existing_metadata.method_path(), - module_metadata.method_path() - )))) - } - }, - } -} - /// Validates that a metadata-selected export name was seen among the lifted component exports. fn validate_lifted_export( method_path: &str, @@ -330,7 +314,7 @@ impl<'a, 'data> ModuleEnvironment<'a, 'data> { self.result.account_component_metadata_bytes = Some(s.data()); } Payload::CustomSection(s) if s.name() == WASM_FRONTEND_METADATA_CUSTOM_SECTION_NAME => { - let metadata = FrontendMetadata::from_bytes(s.data()).map_err(|err| { + let metadata = decode_section(s.data()).map_err(|err| { diagnostics .diagnostic(Severity::Error) .with_message(format!( @@ -339,7 +323,7 @@ impl<'a, 'data> ModuleEnvironment<'a, 'data> { .into_report() })?; - if self.result.component_frontend_metadata.replace(metadata).is_some() { + if !self.result.component_frontend_metadata.is_empty() { return Err(diagnostics .diagnostic(Severity::Error) .with_message( @@ -348,6 +332,7 @@ impl<'a, 'data> ModuleEnvironment<'a, 'data> { ) .into_report()); } + self.result.component_frontend_metadata = metadata; } Payload::CustomSection { .. } => { // ignore any other custom sections diff --git a/frontend/wasm/src/module/module_env/tests.rs b/frontend/wasm/src/module/module_env/tests.rs index 1a6f58497..b600355f3 100644 --- a/frontend/wasm/src/module/module_env/tests.rs +++ b/frontend/wasm/src/module/module_env/tests.rs @@ -1,123 +1,83 @@ use super::*; -/// Ensures duplicate `#[auth_script]` metadata across modules is rejected at merge time. +/// Ensures the frontend metadata entries emitted across a component's core modules are collected +/// into one list — in particular the several `#[account_procedure]` entries of an account +/// component. #[test] -fn component_frontend_metadata_rejects_duplicate_auth_exports() { +fn component_frontend_metadata_collects_account_procedures() { let modules = [ ParsedModule { - component_frontend_metadata: Some(FrontendMetadata::AuthScript { - method_path: "crate::auth::AuthA::authenticate".to_string(), - export_name: "auth_a".to_string(), - }), + component_frontend_metadata: vec![FrontendMetadata::AccountProcedure { + method_path: "crate::wallet::BasicWallet::receive_asset".to_string(), + export_name: "receive-asset".to_string(), + }], ..Default::default() }, ParsedModule { - component_frontend_metadata: Some(FrontendMetadata::AuthScript { - method_path: "crate::auth::AuthB::authenticate".to_string(), - export_name: "auth_b".to_string(), - }), + component_frontend_metadata: vec![ + FrontendMetadata::AccountProcedure { + method_path: "crate::wallet::BasicWallet::move_asset_to_note".to_string(), + export_name: "move-asset-to-note".to_string(), + }, + FrontendMetadata::AccountProcedure { + method_path: "crate::wallet::BasicWallet::create_note".to_string(), + export_name: "create-note".to_string(), + }, + ], ..Default::default() }, ]; - let err = merge_frontend_metadata(modules.iter()).unwrap_err(); + let merged = merge_frontend_metadata(modules.iter()); - assert!( - err.to_string().contains("multiple `#[auth_script]` procedures were found"), - "unexpected error: {err:?}" - ); - assert!( - err.to_string().contains("crate::auth::AuthA::authenticate"), - "unexpected error: {err:?}" - ); -} - -/// Ensures duplicate `#[note_script]` metadata across modules is rejected at merge time. -#[test] -fn component_frontend_metadata_rejects_duplicate_note_script_exports() { - let modules = [ - ParsedModule { - component_frontend_metadata: Some(FrontendMetadata::NoteScript { - method_path: "crate::notes::NoteA::execute".to_string(), - export_name: "note_a".to_string(), - }), - ..Default::default() - }, - ParsedModule { - component_frontend_metadata: Some(FrontendMetadata::NoteScript { - method_path: "crate::notes::NoteB::execute".to_string(), - export_name: "note_b".to_string(), - }), - ..Default::default() - }, - ]; - - let err = merge_frontend_metadata(modules.iter()).unwrap_err(); - - assert!( - err.to_string().contains("multiple `#[note_script]` procedures were found"), - "unexpected error: {err:?}" - ); - assert!( - err.to_string().contains("crate::notes::NoteA::execute"), - "unexpected error: {err:?}" - ); + assert_eq!(merged.len(), 3); } -/// Ensures mixed frontend metadata kinds across modules are rejected at merge time. +/// Ensures metadata validation reports when an `#[auth_script]` export was not lifted into the +/// component. #[test] -fn component_frontend_metadata_rejects_mixed_export_kinds() { - let modules = [ - ParsedModule { - component_frontend_metadata: Some(FrontendMetadata::AuthScript { - method_path: "crate::auth::AuthComponent::authenticate".to_string(), - export_name: "auth".to_string(), - }), - ..Default::default() - }, - ParsedModule { - component_frontend_metadata: Some(FrontendMetadata::NoteScript { - method_path: "crate::notes::PaymentNote::execute".to_string(), - export_name: "note".to_string(), - }), - ..Default::default() - }, - ]; +fn component_frontend_metadata_reports_missing_lifted_exports() { + let metadata = [FrontendMetadata::AuthScript { + method_path: "crate::auth::AuthComponent::authenticate".to_string(), + export_name: "auth".to_string(), + }]; + let lifted_exports = FxHashSet::default(); - let err = merge_frontend_metadata(modules.iter()).unwrap_err(); + let err = validate_lifted_frontend_metadata_exports(&metadata, &lifted_exports).unwrap_err(); assert!( - err.to_string() - .contains("both `#[auth_script]` and `#[note_script]` procedures were found"), + err.to_string().contains( + "failed to find the component export marked with `#[auth_script]`: \ + `crate::auth::AuthComponent::authenticate`" + ), "unexpected error: {err:?}" ); assert!( - err.to_string().contains("crate::auth::AuthComponent::authenticate"), + err.to_string().contains("expected lifted export `auth`"), "unexpected error: {err:?}" ); } -/// Ensures metadata validation reports when a marked export was not lifted into the component. +/// Ensures metadata validation reports a missing lifted export for an `#[account_procedure]` entry. #[test] -fn component_frontend_metadata_reports_missing_lifted_exports() { - let metadata = FrontendMetadata::AuthScript { - method_path: "crate::auth::AuthComponent::authenticate".to_string(), - export_name: "auth".to_string(), - }; +fn component_frontend_metadata_reports_missing_account_procedure_export() { + let metadata = [FrontendMetadata::AccountProcedure { + method_path: "crate::wallet::BasicWallet::receive_asset".to_string(), + export_name: "receive-asset".to_string(), + }]; let lifted_exports = FxHashSet::default(); - let err = - validate_lifted_frontend_metadata_exports(Some(&metadata), &lifted_exports).unwrap_err(); + let err = validate_lifted_frontend_metadata_exports(&metadata, &lifted_exports).unwrap_err(); assert!( err.to_string().contains( - "failed to find the component export marked with `#[auth_script]`: \ - `crate::auth::AuthComponent::authenticate`" + "failed to find the component export marked with `#[account_procedure]`: \ + `crate::wallet::BasicWallet::receive_asset`" ), "unexpected error: {err:?}" ); assert!( - err.to_string().contains("expected lifted export `auth`"), + err.to_string().contains("expected lifted export `receive-asset`"), "unexpected error: {err:?}" ); } diff --git a/sdk/base-macros/src/component_macro/mod.rs b/sdk/base-macros/src/component_macro/mod.rs index 986b830f3..aa9432ad3 100644 --- a/sdk/base-macros/src/component_macro/mod.rs +++ b/sdk/base-macros/src/component_macro/mod.rs @@ -40,6 +40,10 @@ const CORE_TYPES_PACKAGE: &str = "miden:base/core-types@1.0.0"; const AUTH_SCRIPT_ATTR: &str = "auth_script"; /// Helper attribute preserved by `#[auth_script]` so `#[component]` can recognize the method. const AUTH_SCRIPT_MARKER_ATTR: &str = "miden_auth_script_requires_component"; +/// Attribute name used to mark an account-interface procedure on a component method. +const ACCOUNT_PROCEDURE_ATTR: &str = "account_procedure"; +/// Helper attribute preserved by `#[account_procedure]` so `#[component]` can recognize the method. +const ACCOUNT_PROCEDURE_MARKER_ATTR: &str = "miden_account_procedure_requires_component"; /// Name of the hidden associated constant injected into `#[component]` traits. /// /// The trait implementation expansion references this constant through the implemented trait (see @@ -259,6 +263,80 @@ pub fn expand_auth_script( quote!(#item_fn).into() } +/// Expands `#[account_procedure]`. +/// +/// This attribute must be applied to a method inside a `trait` annotated with `#[component]`. It +/// acts as a marker for `#[component]` so the macro can emit frontend metadata marking the +/// annotated export as part of the account interface without rewriting its user-defined name. +pub fn expand_account_procedure( + attr: proc_macro::TokenStream, + item: proc_macro::TokenStream, +) -> proc_macro::TokenStream { + if !attr.is_empty() { + return syn::Error::new( + Span2::call_site(), + "#[account_procedure] does not accept arguments", + ) + .into_compile_error() + .into(); + } + + let item_tokens: TokenStream2 = item.clone().into(); + let mut item_fn: TraitItemFn = match syn::parse2(item_tokens.clone()) { + Ok(item_fn) => item_fn, + Err(_) => { + if let Ok(item_fn) = syn::parse2::(item_tokens.clone()) { + return syn::Error::new( + item_fn.sig.span(), + "`#[account_procedure]` must be applied to a method inside a `#[component]` \ + `trait`, not the implementation block", + ) + .into_compile_error() + .into(); + } + + if let Ok(item_fn) = syn::parse2::(item_tokens.clone()) { + return syn::Error::new( + item_fn.sig.span(), + "`#[account_procedure]` must be applied to a method inside a `#[component]` \ + `trait`", + ) + .into_compile_error() + .into(); + } + + return syn::Error::new( + Span2::call_site(), + "`#[account_procedure]` must be applied to a method inside a `#[component]` \ + `trait`", + ) + .into_compile_error() + .into(); + } + }; + + // `TraitItemFn` parses any visibility-less method with a body (the body reads as a default), + // which is exactly what new-style impl blocks contain — so the dedicated `ImplItemFn` branch + // above is unreachable for them. A body is never valid on an `#[account_procedure]` declaration + // (component traits reject default bodies), so reject it here with the placement guidance. + if item_fn.default.is_some() { + return syn::Error::new( + item_fn.sig.span(), + "`#[account_procedure]` must be applied to a method inside a `#[component]` `trait`, \ + not the implementation block", + ) + .into_compile_error() + .into(); + } + + // Preserve a helper attribute for `#[component]` to consume. If the surrounding trait forgets + // `#[component]`, rustc rejects this unknown helper attribute instead of silently compiling a + // method that emits no account-procedure metadata. + let marker_attr = format_ident!("{}", ACCOUNT_PROCEDURE_MARKER_ATTR); + item_fn.attrs.push(syn::parse_quote!(#[#marker_attr])); + quote!(#item_fn).into() +} + /// Expands the `#[component_storage]` attribute applied to a struct by wiring storage metadata and /// link section exports. fn expand_component_storage( @@ -388,6 +466,7 @@ fn expand_component_trait( validate_namespace_matches_interface(&metadata, &package_name, &interface_name, &trait_ident)?; let mut auth_method_idents = Vec::new(); + let mut account_procedure_idents = Vec::new(); let mut method_count = 0usize; for item in &mut input_trait.items { @@ -407,8 +486,11 @@ fn expand_component_trait( } let is_auth_script = has_auth_script_marker_attr(&method.attrs); - // Strip the marker so the re-emitted trait does not carry the helper attribute. - method.attrs.retain(|attr| !is_auth_script_marker_attr(attr)); + let is_account_procedure = has_account_procedure_marker_attr(&method.attrs); + // Strip the markers so the re-emitted trait does not carry the helper attributes. + method.attrs.retain(|attr| { + !is_auth_script_marker_attr(attr) && !is_account_procedure_marker_attr(attr) + }); // Structural validation only: custom types may not be registered yet when the trait // expands, so type mapping is deferred to the implementation expansion. @@ -417,6 +499,9 @@ fn expand_component_trait( validate_auth_script_signature(&method.sig, &args)?; auth_method_idents.push(method.sig.ident.clone()); } + if is_account_procedure { + account_procedure_idents.push(method.sig.ident.clone()); + } method_count += 1; } @@ -427,6 +512,20 @@ fn expand_component_trait( )); } + // `#[auth_script]` and `#[account_procedure]` belong to different project kinds and cannot be + // combined in one component: an authentication component's `#[auth_script]` method is its + // account interface implicitly, whereas a regular account component marks its interface + // procedures with `#[account_procedure]`. + if !auth_method_idents.is_empty() && !account_procedure_idents.is_empty() { + return Err(syn::Error::new( + trait_ident.span(), + "a component cannot combine `#[auth_script]` and `#[account_procedure]`: \ + `#[auth_script]` is the interface of an authentication component (its auth method is \ + the account interface implicitly), while `#[account_procedure]` marks the interface \ + procedures of a regular account component", + )); + } + validate_auth_script_count( metadata.target.ty, metadata.requires_auth_script(), @@ -434,19 +533,26 @@ fn expand_component_trait( input_trait.span(), )?; - // `#[auth_script]` lives on the trait method because auth-ness is part of the component's - // contract, not its behavior — the API reader should see which method is the auth entrypoint. - // That placement forces the metadata to be emitted here: the impl expansion cannot know which - // method is the auth entrypoint without trait→impl state, which this design deliberately has - // none of. This is the one API-derived artifact the trait expansion emits; everything derived - // from the implementation (WIT, bindings, exports) is generated at the impl expansion. - let frontend_link_section = auth_method_idents.first().map_or_else( - || quote! {}, - |auth_ident| { - let metadata = auth_script_frontend_metadata(&trait_ident, auth_ident); - generate_frontend_link_section(&metadata) - }, - ); + // `#[auth_script]` and `#[account_procedure]` live on the trait methods because account- + // interface membership is part of the component's contract, not its behavior — the API reader + // should see which methods are account procedures. That placement forces the metadata to be + // emitted here: the impl expansion cannot know which methods are marked without trait→impl + // state, which this design deliberately has none of. This is the one API-derived artifact the + // trait expansion emits; everything derived from the implementation (WIT, bindings, exports) is + // generated at the impl expansion. + let mut frontend_metadata_entries = Vec::new(); + if let Some(auth_ident) = auth_method_idents.first() { + frontend_metadata_entries.push(auth_script_frontend_metadata(&trait_ident, auth_ident)); + } + for account_ident in &account_procedure_idents { + frontend_metadata_entries + .push(account_procedure_frontend_metadata(&trait_ident, account_ident)); + } + let frontend_link_section = if frontend_metadata_entries.is_empty() { + quote! {} + } else { + generate_frontend_link_section(&frontend_metadata_entries) + }; // Inject the hidden handshake constant consumed by the implementation expansion (see // `render_trait_marker_check`). @@ -541,9 +647,9 @@ fn expand_component_trait_impl( let ImplItem::Fn(method) = item else { continue; }; - // This outer `#[component]` expansion sees the raw `#[auth_script]` tokens before the - // standalone attribute macro would run, so stripping the marker here would silently - // discard a misplaced annotation; reject it with the same guidance instead. + // This outer `#[component]` expansion sees the raw `#[auth_script]` / `#[account_procedure]` + // tokens before the standalone attribute macros would run, so stripping the markers here + // would silently discard a misplaced annotation; reject it with the same guidance instead. if has_auth_script_marker_attr(&method.attrs) { return Err(syn::Error::new( method.sig.ident.span(), @@ -551,6 +657,13 @@ fn expand_component_trait_impl( not the implementation block", )); } + if has_account_procedure_marker_attr(&method.attrs) { + return Err(syn::Error::new( + method.sig.ident.span(), + "`#[account_procedure]` must be applied to a method inside a `#[component]` \ + `trait`, not the implementation block", + )); + } let (parsed_method, imports) = parse_component_signature(&method.sig, &method.attrs, &exported_types_by_rust)?; type_imports.extend(imports); @@ -1264,6 +1377,20 @@ fn auth_script_frontend_metadata( } } +/// Builds frontend metadata for a single `#[account_procedure]` method exported by a component. +/// +/// `method_path` is diagnostic-only (used in error messages), so the trait-qualified path is +/// sufficient; `export_name` is the WIT export name matched against the lifted component export. +fn account_procedure_frontend_metadata( + trait_ident: &syn::Ident, + account_method_ident: &syn::Ident, +) -> FrontendMetadata { + FrontendMetadata::AccountProcedure { + method_path: format!("{trait_ident}::{account_method_ident}"), + export_name: to_kebab_case(&account_method_ident.to_string()), + } +} + /// Emits the static metadata blob inside the `rodata,miden_account` link section. fn generate_link_section(metadata_bytes: &[u8]) -> proc_macro2::TokenStream { let link_section_bytes_len = metadata_bytes.len(); @@ -1286,6 +1413,17 @@ fn has_auth_script_marker_attr(attrs: &[Attribute]) -> bool { attrs.iter().any(is_auth_script_marker_attr) } +/// Returns true if any account-procedure marker attribute is present. +fn has_account_procedure_marker_attr(attrs: &[Attribute]) -> bool { + attrs.iter().any(is_account_procedure_marker_attr) +} + +/// Returns true if an attribute marks a method as an account-interface procedure. +fn is_account_procedure_marker_attr(attr: &Attribute) -> bool { + is_attr_named(attr, ACCOUNT_PROCEDURE_ATTR) + || is_attr_named(attr, ACCOUNT_PROCEDURE_MARKER_ATTR) +} + fn is_attr_named(attr: &Attribute, name: &str) -> bool { attr.path() .segments @@ -1472,7 +1610,7 @@ mod tests { let trait_ident = format_ident!("AuthComponent"); let method_ident = format_ident!("whatever_name"); let metadata = auth_script_frontend_metadata(&trait_ident, &method_ident); - let tokens = generate_frontend_link_section(&metadata).to_string(); + let tokens = generate_frontend_link_section(&[metadata]).to_string(); assert!(tokens.contains(crate::util::FRONTEND_METADATA_UNIQUENESS_GUARD_SYMBOL)); } @@ -1492,6 +1630,31 @@ mod tests { ); } + #[test] + fn account_procedure_frontend_metadata_stores_method_path() { + let trait_ident = format_ident!("BasicWallet"); + let method_ident = format_ident!("receive_asset"); + let metadata = account_procedure_frontend_metadata(&trait_ident, &method_ident); + + assert_eq!( + metadata, + FrontendMetadata::AccountProcedure { + method_path: "BasicWallet::receive_asset".into(), + export_name: "receive-asset".into(), + } + ); + } + + #[test] + fn account_procedure_marker_accepts_helper_attribute() { + let method: TraitItemFn = parse_quote! { + #[miden_account_procedure_requires_component] + fn receive_asset(&mut self, asset: Asset); + }; + + assert!(has_account_procedure_marker_attr(&method.attrs)); + } + #[test] fn authentication_components_require_exactly_one_auth_script() { let err = diff --git a/sdk/base-macros/src/lib.rs b/sdk/base-macros/src/lib.rs index daf142864..1f98b0599 100644 --- a/sdk/base-macros/src/lib.rs +++ b/sdk/base-macros/src/lib.rs @@ -263,6 +263,21 @@ pub fn auth_script( component_macro::expand_auth_script(attr, item) } +/// Marks a component method as part of the account interface (`#[account_procedure]`). +/// +/// The method must be declared within a `trait` annotated with `#[component]`. +/// Any number of methods may be annotated with `#[account_procedure]`. Only annotated methods +/// (and the `#[auth_script]` method, implicitly) become account procedures callable from +/// transaction scripts, notes, foreign procedure invocation, and sibling components; unmarked +/// methods stay exported but are not part of the account interface. +#[proc_macro_attribute] +pub fn account_procedure( + attr: proc_macro::TokenStream, + item: proc_macro::TokenStream, +) -> proc_macro::TokenStream { + component_macro::expand_account_procedure(attr, item) +} + /// Generates an equvalent type in the WIT interface. /// Required for every type mentioned in the public methods of an account component. /// diff --git a/sdk/base-macros/src/note.rs b/sdk/base-macros/src/note.rs index 457b9605c..361ad3a33 100644 --- a/sdk/base-macros/src/note.rs +++ b/sdk/base-macros/src/note.rs @@ -286,7 +286,7 @@ fn expand_note_impl(item_impl: ItemImpl) -> TokenStream2 { }; let runtime_boilerplate = runtime_boilerplate(); let frontend_metadata = note_script_frontend_metadata(¬e_ty, entrypoint_ident, &export_name); - let frontend_link_section = generate_frontend_link_section(&frontend_metadata); + let frontend_link_section = generate_frontend_link_section(&[frontend_metadata]); quote! { #runtime_boilerplate @@ -790,7 +790,7 @@ mod tests { let note_ty: syn::TypePath = parse_quote!(crate::notes::PaymentNote); let entrypoint_ident = format_ident!("execute"); let metadata = note_script_frontend_metadata(¬e_ty, &entrypoint_ident, "execute"); - let tokens = generate_frontend_link_section(&metadata).to_string(); + let tokens = generate_frontend_link_section(&[metadata]).to_string(); assert!(tokens.contains(crate::util::FRONTEND_METADATA_UNIQUENESS_GUARD_SYMBOL)); assert!(tokens.contains("execute")); diff --git a/sdk/base-macros/src/script.rs b/sdk/base-macros/src/script.rs index 6cdd79fd8..46c21b881 100644 --- a/sdk/base-macros/src/script.rs +++ b/sdk/base-macros/src/script.rs @@ -1,9 +1,11 @@ +use midenc_frontend_wasm_metadata::FrontendMetadata; use proc_macro2::{Literal, Span, TokenStream as TokenStream2}; use quote::quote; use syn::{FnArg, ItemFn, Pat, PatIdent, parse_macro_input, spanned::Spanned}; use crate::{ boilerplate::runtime_boilerplate, + util::generate_frontend_link_section, wit_builder::WitBuilder, wit_world::{ManifestPackage, write_world_block}, }; @@ -136,6 +138,14 @@ pub(crate) fn expand( None => (quote! {}, quote! { #fn_ident(arg) }), }; + // Mark the generated entrypoint export so downstream consumers can identify the + // transaction-script procedure by its `@transaction_script` attribute (e.g. + // `TransactionScript::from_library` in `miden-protocol`). + let frontend_link_section = generate_frontend_link_section(&[FrontendMetadata::TxScript { + method_path: fn_ident.to_string(), + export_name: fn_ident.to_string(), + }]); + let expanded = match expand_guest_wrapper( Span::call_site(), GuestWrapperConfig { @@ -145,7 +155,7 @@ pub(crate) fn expand( guest_struct_doc: "Guest entry point generated by the Miden script attribute.", }, quote! { #input_fn }, - quote! {}, + quote! { #frontend_link_section }, quote! { #instantiation #call; diff --git a/sdk/base-macros/src/util.rs b/sdk/base-macros/src/util.rs index 852956259..d7e4fbf1e 100644 --- a/sdk/base-macros/src/util.rs +++ b/sdk/base-macros/src/util.rs @@ -1,6 +1,8 @@ use std::{env, fs, path::PathBuf}; -use midenc_frontend_wasm_metadata::{FrontendMetadata, WASM_FRONTEND_METADATA_CUSTOM_SECTION_NAME}; +use midenc_frontend_wasm_metadata::{ + FrontendMetadata, WASM_FRONTEND_METADATA_CUSTOM_SECTION_NAME, encode_section, +}; use proc_macro2::{Literal, Span, TokenStream as TokenStream2}; use quote::{format_ident, quote}; use syn::Error; @@ -53,16 +55,19 @@ pub fn generated_wit_folder() -> Result { } /// Emits frontend-only metadata into the shared component frontend custom section. -pub(crate) fn generate_frontend_link_section(metadata: &FrontendMetadata) -> TokenStream2 { - let metadata_bytes = metadata.to_bytes().unwrap_or_else(|err| panic!("{err}")); +/// +/// A component may need several entries (an optional `#[auth_script]` entry plus one entry per +/// `#[account_procedure]` method), so the whole set is encoded as a single section payload. +pub(crate) fn generate_frontend_link_section(entries: &[FrontendMetadata]) -> TokenStream2 { + let metadata_bytes = encode_section(entries).unwrap_or_else(|err| panic!("{err}")); let metadata_len = metadata_bytes.len(); let encoded_bytes = Literal::byte_string(&metadata_bytes); let metadata_static_ident = format_ident!("{}", FRONTEND_METADATA_BYTES_STATIC_IDENT); quote! { const _: () = { - // A crate may contain exactly one frontend-marked method. Reusing a fixed symbol name - // lets the linker reject duplicates across modules or impl blocks. + // A crate may contain exactly one frontend metadata section. Reusing a fixed symbol + // name lets the linker reject duplicates across modules or impl blocks. #[doc(hidden)] #[used] #[unsafe(export_name = #FRONTEND_METADATA_UNIQUENESS_GUARD_SYMBOL)] diff --git a/sdk/base-sys/src/bindings/active_account.rs b/sdk/base-sys/src/bindings/active_account.rs index 5bba333b3..28ace07ab 100644 --- a/sdk/base-sys/src/bindings/active_account.rs +++ b/sdk/base-sys/src/bindings/active_account.rs @@ -1,6 +1,6 @@ use miden_stdlib_sys::{Felt, Word, WordAligned}; -use super::types::{AccountId, Asset, RawAccountId}; +use super::types::{AccountId, RawAccountId}; #[allow(improper_ctypes)] unsafe extern "C" { @@ -11,18 +11,12 @@ unsafe extern "C" { #[link_name = "miden::protocol::active_account::get_nonce"] fn extern_active_account_get_nonce() -> Felt; #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_account::get_initial_commitment"] - fn extern_active_account_get_initial_commitment(ptr: *mut Word); - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] #[link_name = "miden::protocol::active_account::compute_commitment"] fn extern_active_account_compute_commitment(ptr: *mut Word); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] #[link_name = "miden::protocol::active_account::get_code_commitment"] fn extern_active_account_get_code_commitment(ptr: *mut Word); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_account::get_initial_storage_commitment"] - fn extern_active_account_get_initial_storage_commitment(ptr: *mut Word); - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] #[link_name = "miden::protocol::active_account::compute_storage_commitment"] fn extern_active_account_compute_storage_commitment(ptr: *mut Word); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] @@ -35,42 +29,14 @@ unsafe extern "C" { ptr: *mut Word, ); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_account::get_initial_asset"] - fn extern_active_account_get_initial_asset( - asset_key_0: Felt, - asset_key_1: Felt, - asset_key_2: Felt, - asset_key_3: Felt, - ptr: *mut Word, - ); - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_account::get_balance"] - fn extern_active_account_get_balance( - asset_key_0: Felt, - asset_key_1: Felt, - asset_key_2: Felt, - asset_key_3: Felt, + #[link_name = "miden::protocol::active_account::has_asset"] + fn extern_active_account_has_asset( + asset_id_0: Felt, + asset_id_1: Felt, + asset_id_2: Felt, + asset_id_3: Felt, ) -> Felt; #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_account::get_initial_balance"] - fn extern_active_account_get_initial_balance( - asset_key_0: Felt, - asset_key_1: Felt, - asset_key_2: Felt, - asset_key_3: Felt, - ) -> Felt; - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_account::has_non_fungible_asset"] - fn extern_active_account_has_non_fungible_asset( - asset_0: Felt, - asset_1: Felt, - asset_2: Felt, - asset_3: Felt, - ) -> Felt; - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_account::get_initial_vault_root"] - fn extern_active_account_get_initial_vault_root(ptr: *mut Word); - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] #[link_name = "miden::protocol::active_account::get_vault_root"] fn extern_active_account_get_vault_root(ptr: *mut Word); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] @@ -104,16 +70,6 @@ pub fn get_nonce() -> Felt { unsafe { extern_active_account_get_nonce() } } -/// Returns the active account commitment at the beginning of the transaction. -#[inline] -pub fn get_initial_commitment() -> Word { - unsafe { - let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); - extern_active_account_get_initial_commitment(ret_area.as_mut_ptr()); - ret_area.into_inner().assume_init() - } -} - /// Computes and returns the commitment of the current account data. #[inline] pub fn compute_commitment() -> Word { @@ -134,16 +90,6 @@ pub fn get_code_commitment() -> Word { } } -/// Returns the initial storage commitment of the active account. -#[inline] -pub fn get_initial_storage_commitment() -> Word { - unsafe { - let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); - extern_active_account_get_initial_storage_commitment(ret_area.as_mut_ptr()); - ret_area.into_inner().assume_init() - } -} - /// Computes the latest storage commitment of the active account. #[inline] pub fn compute_storage_commitment() -> Word { @@ -169,66 +115,13 @@ pub fn get_asset(asset_key: Word) -> Word { } } -/// Returns the initial value stored under the specified `asset_key` in the active account vault. -pub fn get_initial_asset(asset_key: Word) -> Word { - unsafe { - let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); - extern_active_account_get_initial_asset( - asset_key[0], - asset_key[1], - asset_key[2], - asset_key[3], - ret_area.as_mut_ptr(), - ); - ret_area.into_inner().assume_init() - } -} - -/// Returns the balance of the fungible asset identified by `asset_key`. -/// -/// # Panics -/// -/// Propagates kernel errors if the referenced asset is non-fungible or the -/// account vault invariants are violated. -pub fn get_balance(asset_key: Word) -> Felt { - unsafe { - extern_active_account_get_balance(asset_key[0], asset_key[1], asset_key[2], asset_key[3]) - } -} - -/// Returns the initial balance of the fungible asset identified by `asset_key`. +/// Returns `true` if the active account vault currently contains an asset with the specified asset +/// id. #[inline] -pub fn get_initial_balance(asset_key: Word) -> Felt { +pub fn has_asset(asset_id: Word) -> bool { unsafe { - extern_active_account_get_initial_balance( - asset_key[0], - asset_key[1], - asset_key[2], - asset_key[3], - ) - } -} - -/// Returns `true` if the active account vault currently contains the specified non-fungible asset. -#[inline] -pub fn has_non_fungible_asset(asset: Asset) -> bool { - unsafe { - extern_active_account_has_non_fungible_asset( - asset.key[0], - asset.key[1], - asset.key[2], - asset.key[3], - ) != Felt::new(0).unwrap() - } -} - -/// Returns the vault root of the active account at the beginning of the transaction. -#[inline] -pub fn get_initial_vault_root() -> Word { - unsafe { - let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); - extern_active_account_get_initial_vault_root(ret_area.as_mut_ptr()); - ret_area.into_inner().assume_init() + extern_active_account_has_asset(asset_id[0], asset_id[1], asset_id[2], asset_id[3]) + != Felt::new(0).unwrap() } } @@ -303,13 +196,6 @@ pub trait ActiveAccount { get_nonce() } - /// Returns the active account commitment at the beginning of the transaction. - #[inline] - fn get_initial_commitment(&self) -> Word { - self.__assert_active_account(); - get_initial_commitment() - } - /// Computes and returns the commitment of the current account data. #[inline] fn compute_commitment(&self) -> Word { @@ -324,13 +210,6 @@ pub trait ActiveAccount { get_code_commitment() } - /// Returns the initial storage commitment of the active account. - #[inline] - fn get_initial_storage_commitment(&self) -> Word { - self.__assert_active_account(); - get_initial_storage_commitment() - } - /// Computes the latest storage commitment of the active account. #[inline] fn compute_storage_commitment(&self) -> Word { @@ -346,45 +225,12 @@ pub trait ActiveAccount { get_asset(asset_key) } - /// Returns the initial value stored under the specified `asset_key` in the active account - /// vault. - #[inline] - fn get_initial_asset(&self, asset_key: Word) -> Word { - self.__assert_active_account(); - get_initial_asset(asset_key) - } - - /// Returns the balance of the fungible asset identified by `asset_key`. - /// - /// # Panics - /// - /// Propagates kernel errors if the referenced asset is non-fungible or the - /// account vault invariants are violated. - #[inline] - fn get_balance(&self, asset_key: Word) -> Felt { - self.__assert_active_account(); - get_balance(asset_key) - } - - /// Returns the initial balance of the fungible asset identified by `asset_key`. - #[inline] - fn get_initial_balance(&self, asset_key: Word) -> Felt { - self.__assert_active_account(); - get_initial_balance(asset_key) - } - - /// Returns `true` if the active account vault currently contains the specified non-fungible asset. - #[inline] - fn has_non_fungible_asset(&self, asset: Asset) -> bool { - self.__assert_active_account(); - has_non_fungible_asset(asset) - } - - /// Returns the vault root of the active account at the beginning of the transaction. + /// Returns `true` if the active account vault currently contains an asset with the specified + /// asset id. #[inline] - fn get_initial_vault_root(&self) -> Word { + fn has_asset(&self, asset_id: Word) -> bool { self.__assert_active_account(); - get_initial_vault_root() + has_asset(asset_id) } /// Returns the current vault root of the active account. diff --git a/sdk/base-sys/src/bindings/active_note.rs b/sdk/base-sys/src/bindings/active_note.rs index 08fdb5bc3..fcc45f136 100644 --- a/sdk/base-sys/src/bindings/active_note.rs +++ b/sdk/base-sys/src/bindings/active_note.rs @@ -15,8 +15,8 @@ unsafe extern "C" { #[link_name = "miden::protocol::active_note::get_storage"] fn extern_note_get_storage(ptr: *mut Felt) -> usize; #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_note::get_assets"] - fn extern_note_get_assets(ptr: *mut Felt) -> usize; + #[link_name = "miden::protocol::active_note::get_initial_assets"] + fn extern_note_get_initial_assets(ptr: *mut Felt) -> usize; #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] #[link_name = "miden::protocol::active_note::get_sender"] fn extern_note_get_sender(ptr: *mut RawAccountId); @@ -87,13 +87,15 @@ pub fn get_storage() -> Vec { inputs } -/// Get the assets of the currently executing note. -pub fn get_assets() -> Vec { +/// Get the initial assets of the currently executing note. +/// +/// These are the note's assets at creation time, unaffected by in-transaction removal. +pub fn get_initial_assets() -> Vec { const MAX_INPUTS: usize = 256; let mut inputs: Vec = Vec::with_capacity(MAX_INPUTS); let num_inputs = unsafe { let ptr = (inputs.as_mut_ptr() as usize) / 4; - extern_note_get_assets(ptr as *mut Felt) + extern_note_get_initial_assets(ptr as *mut Felt) }; unsafe { inputs.set_len(num_inputs); diff --git a/sdk/base-sys/src/bindings/asset.rs b/sdk/base-sys/src/bindings/asset.rs deleted file mode 100644 index 36c3bc383..000000000 --- a/sdk/base-sys/src/bindings/asset.rs +++ /dev/null @@ -1,71 +0,0 @@ -use miden_stdlib_sys::{Felt, Word, WordAligned}; - -use super::types::{AccountId, Asset}; - -#[allow(improper_ctypes)] -unsafe extern "C" { - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::asset::create_fungible_asset"] - pub fn extern_asset_create_fungible_asset( - enable_callbacks: Felt, - faucet_id_suffix: Felt, - faucet_id_prefix: Felt, - amount: Felt, - ptr: *mut Asset, - ); - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::asset::create_non_fungible_asset"] - pub fn extern_asset_create_non_fungible_asset( - enable_callbacks: Felt, - faucet_id_suffix: Felt, - faucet_id_prefix: Felt, - data_hash_0: Felt, - data_hash_1: Felt, - data_hash_2: Felt, - data_hash_3: Felt, - ptr: *mut Asset, - ); -} - -#[inline] -fn callback_flag(enable_callbacks: bool) -> Felt { - Felt::from_u32(enable_callbacks as u32) -} - -/// Creates a fungible asset for the faucet identified by `faucet_id` and the provided `amount`. -pub fn create_fungible_asset(faucet_id: AccountId, amount: Felt, enable_callbacks: bool) -> Asset { - unsafe { - let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); - extern_asset_create_fungible_asset( - callback_flag(enable_callbacks), - faucet_id.suffix, - faucet_id.prefix, - amount, - ret_area.as_mut_ptr(), - ); - ret_area.into_inner().assume_init() - } -} - -/// Creates a non-fungible asset for the faucet identified by `faucet_id` and the provided -/// `data_hash`. -pub fn create_non_fungible_asset( - faucet_id: AccountId, - data_hash: Word, - enable_callbacks: bool, -) -> Asset { - unsafe { - let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); - extern_asset_create_non_fungible_asset( - callback_flag(enable_callbacks), - faucet_id.suffix, - faucet_id.prefix, - data_hash[0], - data_hash[1], - data_hash[2], - data_hash[3], - ret_area.as_mut_ptr(), - ); - ret_area.into_inner().assume_init() - } -} diff --git a/sdk/base-sys/src/bindings/faucet.rs b/sdk/base-sys/src/bindings/faucet.rs index e5d747112..b7d9602a8 100644 --- a/sdk/base-sys/src/bindings/faucet.rs +++ b/sdk/base-sys/src/bindings/faucet.rs @@ -1,21 +1,9 @@ -use miden_stdlib_sys::{Felt, Word, WordAligned}; +use miden_stdlib_sys::Felt; use super::types::Asset; #[allow(improper_ctypes)] unsafe extern "C" { - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::faucet::create_fungible_asset"] - pub fn extern_faucet_create_fungible_asset(amount: Felt, ptr: *mut Asset); - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::faucet::create_non_fungible_asset"] - pub fn extern_faucet_create_non_fungible_asset( - data_hash_0: Felt, - data_hash_1: Felt, - data_hash_2: Felt, - data_hash_3: Felt, - ptr: *mut Asset, - ); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] #[link_name = "miden::protocol::faucet::mint"] pub fn extern_faucet_mint( @@ -40,33 +28,6 @@ unsafe extern "C" { asset_value_2: Felt, asset_value_3: Felt, ); - #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::faucet::has_callbacks"] - pub fn extern_faucet_has_callbacks() -> Felt; -} - -/// Creates a fungible asset for the faucet bound to the current transaction. -pub fn create_fungible_asset(amount: Felt) -> Asset { - unsafe { - let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); - extern_faucet_create_fungible_asset(amount, ret_area.as_mut_ptr()); - ret_area.into_inner().assume_init() - } -} - -/// Creates a non-fungible asset for the faucet bound to the current transaction. -pub fn create_non_fungible_asset(data_hash: Word) -> Asset { - unsafe { - let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); - extern_faucet_create_non_fungible_asset( - data_hash[0], - data_hash[1], - data_hash[2], - data_hash[3], - ret_area.as_mut_ptr(), - ); - ret_area.into_inner().assume_init() - } } /// Mints the provided asset for the faucet bound to the current transaction. @@ -100,9 +61,3 @@ pub fn burn(asset: Asset) { ); } } - -/// Returns whether the current faucet has custom mint or burn callbacks. -#[inline] -pub fn has_callbacks() -> bool { - unsafe { extern_faucet_has_callbacks() != Felt::new(0).unwrap() } -} diff --git a/sdk/base-sys/src/bindings/input_note.rs b/sdk/base-sys/src/bindings/input_note.rs index 9d794d0b4..de443bb04 100644 --- a/sdk/base-sys/src/bindings/input_note.rs +++ b/sdk/base-sys/src/bindings/input_note.rs @@ -13,11 +13,11 @@ const MAX_ATTACHMENT_WORDS: usize = 256; #[allow(improper_ctypes)] unsafe extern "C" { #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::input_note::get_assets_info"] - fn extern_input_note_get_assets_info(note_index: Felt, ptr: *mut (Word, Felt)); + #[link_name = "miden::protocol::input_note::get_initial_assets_info"] + fn extern_input_note_get_initial_assets_info(note_index: Felt, ptr: *mut (Word, Felt)); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::input_note::get_assets"] - fn extern_input_note_get_assets(dest_ptr: *mut Felt, note_index: Felt) -> usize; + #[link_name = "miden::protocol::input_note::get_initial_assets"] + fn extern_input_note_get_initial_assets(dest_ptr: *mut Felt, note_index: Felt) -> usize; #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] #[link_name = "miden::protocol::input_note::get_recipient"] fn extern_input_note_get_recipient(note_index: Felt, ptr: *mut Recipient); @@ -80,11 +80,13 @@ pub struct InputNoteStorageInfo { pub num_storage_items: Felt, } -/// Returns the assets commitment and asset count for the input note at `note_index`. -pub fn get_assets_info(note_index: NoteIdx) -> InputNoteAssetsInfo { +/// Returns the initial assets commitment and asset count for the input note at `note_index`. +/// +/// These describe the note's assets at creation time, unaffected by in-transaction removal. +pub fn get_initial_assets_info(note_index: NoteIdx) -> InputNoteAssetsInfo { unsafe { let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::<(Word, Felt)>::uninit()); - extern_input_note_get_assets_info(note_index.inner, ret_area.as_mut_ptr()); + extern_input_note_get_initial_assets_info(note_index.inner, ret_area.as_mut_ptr()); let (commitment, num_assets) = ret_area.into_inner().assume_init(); InputNoteAssetsInfo { commitment, @@ -93,13 +95,15 @@ pub fn get_assets_info(note_index: NoteIdx) -> InputNoteAssetsInfo { } } -/// Returns the assets contained in the input note at `note_index`. -pub fn get_assets(note_index: NoteIdx) -> Vec { +/// Returns the initial assets contained in the input note at `note_index`. +/// +/// These are the note's assets at creation time, unaffected by in-transaction removal. +pub fn get_initial_assets(note_index: NoteIdx) -> Vec { const MAX_ASSETS: usize = 256; let mut assets: Vec = Vec::with_capacity(MAX_ASSETS); let num_assets = unsafe { let ptr = (assets.as_mut_ptr() as usize) / 4; - extern_input_note_get_assets(ptr as *mut Felt, note_index.inner) + extern_input_note_get_initial_assets(ptr as *mut Felt, note_index.inner) }; unsafe { assets.set_len(num_assets); diff --git a/sdk/base-sys/src/bindings/mod.rs b/sdk/base-sys/src/bindings/mod.rs index 5ca903e2c..b8ed1b798 100644 --- a/sdk/base-sys/src/bindings/mod.rs +++ b/sdk/base-sys/src/bindings/mod.rs @@ -10,7 +10,6 @@ pub mod active_account; pub mod active_note; -pub mod asset; pub mod faucet; pub mod input_note; pub mod native_account; diff --git a/sdk/base-sys/src/bindings/native_account.rs b/sdk/base-sys/src/bindings/native_account.rs index b0fcc1669..81015abd9 100644 --- a/sdk/base-sys/src/bindings/native_account.rs +++ b/sdk/base-sys/src/bindings/native_account.rs @@ -47,6 +47,24 @@ unsafe extern "C" { proc_root_2: Felt, proc_root_3: Felt, ) -> Felt; + #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] + #[link_name = "miden::protocol::native_account::get_initial_commitment"] + fn extern_native_account_get_initial_commitment(ptr: *mut Word); + #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] + #[link_name = "miden::protocol::native_account::get_initial_storage_commitment"] + fn extern_native_account_get_initial_storage_commitment(ptr: *mut Word); + #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] + #[link_name = "miden::protocol::native_account::get_initial_vault_root"] + fn extern_native_account_get_initial_vault_root(ptr: *mut Word); + #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] + #[link_name = "miden::protocol::native_account::get_initial_asset"] + fn extern_native_account_get_initial_asset( + asset_key_0: Felt, + asset_key_1: Felt, + asset_key_2: Felt, + asset_key_3: Felt, + ptr: *mut Word, + ); } /// Adds the specified asset to the vault and returns the resulting asset value word stored under @@ -159,6 +177,51 @@ pub fn was_procedure_called(proc_root: Word) -> bool { } } +/// Returns the native account's commitment at the beginning of the transaction. +#[inline] +pub fn get_initial_commitment() -> Word { + unsafe { + let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); + extern_native_account_get_initial_commitment(ret_area.as_mut_ptr()); + ret_area.into_inner().assume_init() + } +} + +/// Returns the native account's storage commitment at the beginning of the transaction. +#[inline] +pub fn get_initial_storage_commitment() -> Word { + unsafe { + let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); + extern_native_account_get_initial_storage_commitment(ret_area.as_mut_ptr()); + ret_area.into_inner().assume_init() + } +} + +/// Returns the native account's vault root at the beginning of the transaction. +#[inline] +pub fn get_initial_vault_root() -> Word { + unsafe { + let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); + extern_native_account_get_initial_vault_root(ret_area.as_mut_ptr()); + ret_area.into_inner().assume_init() + } +} + +/// Returns the native account's initial value stored under the specified `asset_key` in the vault. +pub fn get_initial_asset(asset_key: Word) -> Word { + unsafe { + let mut ret_area = WordAligned::new(::core::mem::MaybeUninit::::uninit()); + extern_native_account_get_initial_asset( + asset_key[0], + asset_key[1], + asset_key[2], + asset_key[3], + ret_area.as_mut_ptr(), + ); + ret_area.into_inner().assume_init() + } +} + /// Trait that provides native account operations for components. /// /// This trait is automatically implemented for the storage struct marked with the diff --git a/sdk/base-sys/src/bindings/storage.rs b/sdk/base-sys/src/bindings/storage.rs index c70cbd4da..08f1f3c05 100644 --- a/sdk/base-sys/src/bindings/storage.rs +++ b/sdk/base-sys/src/bindings/storage.rs @@ -10,7 +10,7 @@ unsafe extern "C" { #[link_name = "miden::protocol::active_account::get_item"] pub fn extern_get_storage_item(index_suffix: Felt, index_prefix: Felt, ptr: *mut Word); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_account::get_initial_item"] + #[link_name = "miden::protocol::native_account::get_initial_item"] pub fn extern_get_initial_storage_item(index_suffix: Felt, index_prefix: Felt, ptr: *mut Word); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] #[link_name = "miden::protocol::native_account::set_item"] @@ -35,7 +35,7 @@ unsafe extern "C" { ptr: *mut Word, ); #[cfg_attr(target_family = "wasm", linkage = "extern_weak")] - #[link_name = "miden::protocol::active_account::get_initial_map_item"] + #[link_name = "miden::protocol::native_account::get_initial_map_item"] pub fn extern_get_initial_storage_map_item( index_suffix: Felt, index_prefix: Felt, diff --git a/sdk/base-sys/stubs/active_account.rs b/sdk/base-sys/stubs/active_account.rs index 92906d194..030cced4e 100644 --- a/sdk/base-sys/stubs/active_account.rs +++ b/sdk/base-sys/stubs/active_account.rs @@ -14,13 +14,6 @@ pub extern "C" fn active_account_get_nonce_plain() -> f32 { unsafe { core::hint::unreachable_unchecked() } } -#[unsafe(export_name = "miden::protocol::active_account::get_initial_commitment")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn active_account_get_initial_commitment_plain(_out: *mut c_void) { - unsafe { core::hint::unreachable_unchecked() } -} - #[unsafe(export_name = "miden::protocol::active_account::compute_commitment")] #[optimize(none)] #[inline(never)] @@ -35,13 +28,6 @@ pub extern "C" fn active_account_get_code_commitment_plain(_out: *mut c_void) { unsafe { core::hint::unreachable_unchecked() } } -#[unsafe(export_name = "miden::protocol::active_account::get_initial_storage_commitment")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn active_account_get_initial_storage_commitment_plain(_out: *mut c_void) { - unsafe { core::hint::unreachable_unchecked() } -} - #[unsafe(export_name = "miden::protocol::active_account::compute_storage_commitment")] #[optimize(none)] #[inline(never)] @@ -62,19 +48,6 @@ pub extern "C" fn active_account_get_asset_plain( unsafe { core::hint::unreachable_unchecked() } } -#[unsafe(export_name = "miden::protocol::active_account::get_initial_asset")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn active_account_get_initial_asset_plain( - _asset_key_0: f32, - _asset_key_1: f32, - _asset_key_2: f32, - _asset_key_3: f32, - _out: *mut c_void, -) { - unsafe { core::hint::unreachable_unchecked() } -} - #[unsafe(export_name = "miden::protocol::active_account::get_item")] #[optimize(none)] #[inline(never)] @@ -86,17 +59,6 @@ pub extern "C" fn active_account_get_item_plain( unsafe { core::hint::unreachable_unchecked() } } -#[unsafe(export_name = "miden::protocol::active_account::get_initial_item")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn active_account_get_initial_item_plain( - _index_suffix: f32, - _index_prefix: f32, - _out: *mut c_void, -) { - unsafe { core::hint::unreachable_unchecked() } -} - #[unsafe(export_name = "miden::protocol::active_account::get_map_item")] #[optimize(none)] #[inline(never)] @@ -112,61 +74,10 @@ pub extern "C" fn active_account_get_map_item_plain( unsafe { core::hint::unreachable_unchecked() } } -#[unsafe(export_name = "miden::protocol::active_account::get_initial_map_item")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn active_account_get_initial_map_item_plain( - _index_suffix: f32, - _index_prefix: f32, - _k0: f32, - _k1: f32, - _k2: f32, - _k3: f32, - _out: *mut c_void, -) { - unsafe { core::hint::unreachable_unchecked() } -} - -#[unsafe(export_name = "miden::protocol::active_account::get_balance")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn active_account_get_balance_plain( - _asset_key_0: f32, - _asset_key_1: f32, - _asset_key_2: f32, - _asset_key_3: f32, -) -> f32 { - unsafe { core::hint::unreachable_unchecked() } -} - -#[unsafe(export_name = "miden::protocol::active_account::get_initial_balance")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn active_account_get_initial_balance_plain( - _asset_key_0: f32, - _asset_key_1: f32, - _asset_key_2: f32, - _asset_key_3: f32, -) -> f32 { - unsafe { core::hint::unreachable_unchecked() } -} - -#[unsafe(export_name = "miden::protocol::active_account::has_non_fungible_asset")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn active_account_has_non_fungible_asset_plain( - _a0: f32, - _a1: f32, - _a2: f32, - _a3: f32, -) -> f32 { - unsafe { core::hint::unreachable_unchecked() } -} - -#[unsafe(export_name = "miden::protocol::active_account::get_initial_vault_root")] +#[unsafe(export_name = "miden::protocol::active_account::has_asset")] #[optimize(none)] #[inline(never)] -pub extern "C" fn active_account_get_initial_vault_root_plain(_out: *mut c_void) { +pub extern "C" fn active_account_has_asset_plain(_a0: f32, _a1: f32, _a2: f32, _a3: f32) -> f32 { unsafe { core::hint::unreachable_unchecked() } } diff --git a/sdk/base-sys/stubs/active_note.rs b/sdk/base-sys/stubs/active_note.rs index d965dee3b..74703d200 100644 --- a/sdk/base-sys/stubs/active_note.rs +++ b/sdk/base-sys/stubs/active_note.rs @@ -9,10 +9,10 @@ pub extern "C" fn note_get_inputs_plain(_ptr: *mut c_void) -> usize { unsafe { core::hint::unreachable_unchecked() } } -#[unsafe(export_name = "miden::protocol::active_note::get_assets")] +#[unsafe(export_name = "miden::protocol::active_note::get_initial_assets")] #[optimize(none)] #[inline(never)] -pub extern "C" fn note_get_assets_plain(_ptr: *mut c_void) -> usize { +pub extern "C" fn note_get_initial_assets_plain(_ptr: *mut c_void) -> usize { unsafe { core::hint::unreachable_unchecked() } } diff --git a/sdk/base-sys/stubs/asset.rs b/sdk/base-sys/stubs/asset.rs deleted file mode 100644 index 1faf93292..000000000 --- a/sdk/base-sys/stubs/asset.rs +++ /dev/null @@ -1,30 +0,0 @@ -use core::ffi::c_void; - -#[unsafe(export_name = "miden::protocol::asset::create_fungible_asset")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn asset_create_fungible_asset_plain( - _enable_callbacks: f32, - _suffix: f32, - _prefix: f32, - _amount: f32, - _out: *mut c_void, -) { - unsafe { core::hint::unreachable_unchecked() } -} - -#[unsafe(export_name = "miden::protocol::asset::create_non_fungible_asset")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn asset_create_non_fungible_asset_plain( - _enable_callbacks: f32, - _suffix: f32, - _prefix: f32, - _h0: f32, - _h1: f32, - _h2: f32, - _h3: f32, - _out: *mut c_void, -) { - unsafe { core::hint::unreachable_unchecked() } -} diff --git a/sdk/base-sys/stubs/faucet.rs b/sdk/base-sys/stubs/faucet.rs index c0e643e6f..089a5f7ae 100644 --- a/sdk/base-sys/stubs/faucet.rs +++ b/sdk/base-sys/stubs/faucet.rs @@ -1,25 +1,3 @@ -use core::ffi::c_void; - -#[unsafe(export_name = "miden::protocol::faucet::create_fungible_asset")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn faucet_create_fungible_asset_plain(_amount: f32, _out: *mut c_void) { - unsafe { core::hint::unreachable_unchecked() } -} - -#[unsafe(export_name = "miden::protocol::faucet::create_non_fungible_asset")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn faucet_create_non_fungible_asset_plain( - _h0: f32, - _h1: f32, - _h2: f32, - _h3: f32, - _out: *mut c_void, -) { - unsafe { core::hint::unreachable_unchecked() } -} - #[unsafe(export_name = "miden::protocol::faucet::mint")] #[optimize(none)] #[inline(never)] @@ -51,10 +29,3 @@ pub extern "C" fn faucet_burn_plain( ) { unsafe { core::hint::unreachable_unchecked() } } - -#[unsafe(export_name = "miden::protocol::faucet::has_callbacks")] -#[optimize(none)] -#[inline(never)] -pub extern "C" fn faucet_has_callbacks_plain() -> f32 { - unsafe { core::hint::unreachable_unchecked() } -} diff --git a/sdk/base-sys/stubs/input_note.rs b/sdk/base-sys/stubs/input_note.rs index 4e29587dc..80598cae4 100644 --- a/sdk/base-sys/stubs/input_note.rs +++ b/sdk/base-sys/stubs/input_note.rs @@ -1,17 +1,20 @@ use core::ffi::c_void; /// Input note interface stubs -#[unsafe(export_name = "miden::protocol::input_note::get_assets_info")] +#[unsafe(export_name = "miden::protocol::input_note::get_initial_assets_info")] #[optimize(none)] #[inline(never)] -pub extern "C" fn input_note_get_assets_info_plain(_note_index: f32, _out: *mut c_void) { +pub extern "C" fn input_note_get_initial_assets_info_plain(_note_index: f32, _out: *mut c_void) { unsafe { core::hint::unreachable_unchecked() } } -#[unsafe(export_name = "miden::protocol::input_note::get_assets")] +#[unsafe(export_name = "miden::protocol::input_note::get_initial_assets")] #[optimize(none)] #[inline(never)] -pub extern "C" fn input_note_get_assets_plain(_dest_ptr: *mut c_void, _note_index: f32) -> usize { +pub extern "C" fn input_note_get_initial_assets_plain( + _dest_ptr: *mut c_void, + _note_index: f32, +) -> usize { unsafe { core::hint::unreachable_unchecked() } } diff --git a/sdk/base-sys/stubs/lib.rs b/sdk/base-sys/stubs/lib.rs index 9654d3e04..df84da399 100644 --- a/sdk/base-sys/stubs/lib.rs +++ b/sdk/base-sys/stubs/lib.rs @@ -8,7 +8,6 @@ //! the calls appropriately. They are not part of the crate sources. mod active_account; -mod asset; mod active_note; mod faucet; mod input_note; diff --git a/sdk/base-sys/stubs/native_account.rs b/sdk/base-sys/stubs/native_account.rs index df5d1b5ff..36fb0c67b 100644 --- a/sdk/base-sys/stubs/native_account.rs +++ b/sdk/base-sys/stubs/native_account.rs @@ -100,3 +100,63 @@ pub extern "C" fn native_account_was_procedure_called_plain( ) -> f32 { unsafe { core::hint::unreachable_unchecked() } } + +#[unsafe(export_name = "miden::protocol::native_account::get_initial_commitment")] +#[optimize(none)] +#[inline(never)] +pub extern "C" fn native_account_get_initial_commitment_plain(_out: *mut c_void) { + unsafe { core::hint::unreachable_unchecked() } +} + +#[unsafe(export_name = "miden::protocol::native_account::get_initial_storage_commitment")] +#[optimize(none)] +#[inline(never)] +pub extern "C" fn native_account_get_initial_storage_commitment_plain(_out: *mut c_void) { + unsafe { core::hint::unreachable_unchecked() } +} + +#[unsafe(export_name = "miden::protocol::native_account::get_initial_vault_root")] +#[optimize(none)] +#[inline(never)] +pub extern "C" fn native_account_get_initial_vault_root_plain(_out: *mut c_void) { + unsafe { core::hint::unreachable_unchecked() } +} + +#[unsafe(export_name = "miden::protocol::native_account::get_initial_asset")] +#[optimize(none)] +#[inline(never)] +pub extern "C" fn native_account_get_initial_asset_plain( + _asset_key_0: f32, + _asset_key_1: f32, + _asset_key_2: f32, + _asset_key_3: f32, + _out: *mut c_void, +) { + unsafe { core::hint::unreachable_unchecked() } +} + +#[unsafe(export_name = "miden::protocol::native_account::get_initial_item")] +#[optimize(none)] +#[inline(never)] +pub extern "C" fn native_account_get_initial_item_plain( + _index_suffix: f32, + _index_prefix: f32, + _out: *mut c_void, +) { + unsafe { core::hint::unreachable_unchecked() } +} + +#[unsafe(export_name = "miden::protocol::native_account::get_initial_map_item")] +#[optimize(none)] +#[inline(never)] +pub extern "C" fn native_account_get_initial_map_item_plain( + _index_suffix: f32, + _index_prefix: f32, + _k0: f32, + _k1: f32, + _k2: f32, + _k3: f32, + _out: *mut c_void, +) { + unsafe { core::hint::unreachable_unchecked() } +} diff --git a/sdk/sdk/CHANGELOG.md b/sdk/sdk/CHANGELOG.md index 52303af1f..e2b65afd9 100644 --- a/sdk/sdk/CHANGELOG.md +++ b/sdk/sdk/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### BREAKING +- Component methods must now be explicitly marked `#[account_procedure]` to be part of the account + interface (callable as account procedures from transaction scripts, notes, foreign procedure + invocation, and sibling components). Previously every lifted non-auth/note/tx component export was + implicitly an account procedure. Unmarked methods remain exported but are no longer part of the + account interface. Authentication components keep using `#[auth_script]` (its method is the + account interface implicitly); `#[auth_script]` and `#[account_procedure]` belong to different + component kinds and cannot be combined in one component. See the [migration guide](./MIGRATION.md). - `#[account(...)]` now generates the component methods as one trait per referenced interface (named after the interface, with the wrapper's visibility, implemented for the wrapper) instead of inherent methods on the wrapper struct. Two components that export the same method name can @@ -23,6 +30,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 a cross-module call site needs a `use` of the generated trait. Relatedly, a component method named `new` is now permitted (previously a hard error): it lives on the generated trait and coexists with the inherent `Wallet::new(account_id)` constructor #1208 +- SDK bindings updated for VM v0.25 / protocol v0.16.0-beta.1. Several tx-kernel bindings were + renamed, moved, or removed to match the protocol. See the [migration guide](./MIGRATION.md). + - Renamed `active_note::get_assets` -> `get_initial_assets`, `input_note::get_assets` -> + `get_initial_assets`, and `input_note::get_assets_info` -> `get_initial_assets_info`; these + return the note's creation-time assets, unaffected by in-transaction removal. + - `active_account::has_non_fungible_asset(asset: Asset)` (and the `ActiveAccount` trait method) + became `has_asset(asset_id: Word)`, testing any-asset membership by asset id. + - Moved `get_initial_commitment`, `get_initial_storage_commitment`, `get_initial_vault_root`, + and `get_initial_asset` from `active_account` (and the `ActiveAccount` trait) to + `native_account` free functions. `storage::{get_initial_item, get_initial_map_item}` keep + their API but now read the native account's initial state. + - Removed `active_account::{get_balance, get_initial_balance}`, + `faucet::{create_fungible_asset, create_non_fungible_asset, has_callbacks}`, and the whole + `asset` module. The kernel no longer exposes in-transaction asset construction; + `faucet::{mint, burn}` take a pre-built `Asset`. + - `output_note::create` can now only be called from account-component context (runtime-enforced); + tx/note scripts create notes through an account component wrapper method. ### Added - `#[account(...)]` references accept an `as Alias` to rename the generated trait, e.g. diff --git a/sdk/sdk/MIGRATION.md b/sdk/sdk/MIGRATION.md index 38c446520..ba1db0b3f 100644 --- a/sdk/sdk/MIGRATION.md +++ b/sdk/sdk/MIGRATION.md @@ -12,6 +12,45 @@ directly below this paragraph, above the previous one (newest first, like the ## Unreleased +### Mark account interface procedures with `#[account_procedure]` + +A component's methods are no longer implicitly part of the account interface. Mark every method that +must be callable as an account procedure — from transaction scripts, notes, foreign procedure +invocation (FPI), or sibling components — with `#[account_procedure]` on the `#[component]` **trait** +declaration (not the `impl`). Any number of methods may be marked. Unmarked methods still compile +and are still exported, but are not account procedures. + +`#[auth_script]` and `#[account_procedure]` belong to different component kinds — an authentication +component versus a regular account component — and cannot be combined in one component. An +authentication component keeps using `#[auth_script]` alone (its method is the account interface +implicitly). + +The `#[account_procedure]` marker is recognized by the surrounding `#[component]` macro, so it needs +no import (just like `#[auth_script]`). + +Before: + +```rust +use miden::{Asset, component, component_storage}; + +#[component] +trait BasicWallet { + fn receive_asset(&mut self, asset: Asset); +} +``` + +After: + +```rust +use miden::{Asset, component, component_storage}; + +#[component] +trait BasicWallet { + #[account_procedure] + fn receive_asset(&mut self, asset: Asset); +} +``` + ### `#[account(...)]` generates one trait per component In 0.13 the `#[account(...)]` macro generated each component's methods as inherent methods on the @@ -82,6 +121,61 @@ struct Remote; trait Caller: NativeAccount + CounterContract { /* ... */ } ``` +### Tx-kernel bindings: protocol 0.16.0-beta.1 + +The SDK bindings were aligned with VM v0.25 / protocol 0.16.0-beta.1. Several tx-kernel bindings +were renamed, moved, or removed to match the protocol procedures. + +**The "initial asset" getters are renamed.** They read the note's assets at creation time, +unaffected by any in-transaction removal, so the names now say so: + +```rust +// before // after +active_note::get_assets(); active_note::get_initial_assets(); +input_note::get_assets(idx); input_note::get_initial_assets(idx); +input_note::get_assets_info(idx); input_note::get_initial_assets_info(idx); +``` + +**`active_account::has_non_fungible_asset` became `has_asset`** and now takes an asset id `Word` +instead of an `Asset`, testing membership of any asset (fungible or non-fungible) by id: + +```rust +// before +if account.has_non_fungible_asset(asset) { /* ... */ } +// after +if account.has_asset(asset.key) { /* ... */ } +``` + +**The initial-state getters moved from `active_account` to `native_account`.** +`get_initial_commitment`, `get_initial_storage_commitment`, `get_initial_vault_root`, and +`get_initial_asset` are now free functions on `native_account` (they are no longer `ActiveAccount` +trait methods). `storage::{get_initial_item, get_initial_map_item}` keep their API but now read the +native account's initial state. + +```rust +// before (ActiveAccount trait method) +let init = self.get_initial_commitment(); +let asset = self.get_initial_asset(asset_key); +// after (native_account free function) +let init = miden::native_account::get_initial_commitment(); +let asset = miden::native_account::get_initial_asset(asset_key); +``` + +**In-transaction asset construction and balance getters were removed.** + +- `active_account::{get_balance, get_initial_balance}` are gone. Read the asset value word with + `active_account::get_asset` (or `native_account::get_initial_asset`) and extract the fungible + amount from the returned `AssetValue` word (see the protocol `fungible_value_into_amount` + helper). +- `faucet::{create_fungible_asset, create_non_fungible_asset, has_callbacks}` and the whole + `asset` module (`asset::{create_fungible_asset, create_non_fungible_asset}`) are gone. The kernel + no longer exposes in-transaction asset construction; `faucet::{mint, burn}` take a pre-built + `Asset`. + +**`output_note::create` is account-context only.** It can now only be called from account-component +context (runtime-enforced). Tx/note scripts must create notes through an account component wrapper +method (see the `basic-wallet` example's `create_note`). + ## 0.13.0 -> 0.13.1 ### `*_note::get_metadata` returns a single-word `NoteMetadata` diff --git a/sdk/sdk/src/lib.rs b/sdk/sdk/src/lib.rs index 356ede22b..7a4d9c711 100644 --- a/sdk/sdk/src/lib.rs +++ b/sdk/sdk/src/lib.rs @@ -5,8 +5,8 @@ pub mod debug; pub use miden_base::*; pub use miden_base_macros::{ - account, auth_script, component, component_storage, export_type, generate, note, note_script, - tx_script, + account, account_procedure, auth_script, component, component_storage, export_type, generate, + note, note_script, tx_script, }; pub use miden_base_sys::bindings::*; /// Unified `Felt` and related helpers. diff --git a/sdk/wasm-metadata/src/lib.rs b/sdk/wasm-metadata/src/lib.rs index d71211be4..d18fce703 100644 --- a/sdk/wasm-metadata/src/lib.rs +++ b/sdk/wasm-metadata/src/lib.rs @@ -26,6 +26,13 @@ pub enum FrontendMetadata { /// Name of the export marked with `#[auth_script]`. export_name: String, }, + /// Metadata for an export marked with `#[account_procedure]`. + AccountProcedure { + /// Fully-qualified Rust method path marked with `#[account_procedure]`. + method_path: String, + /// Name of the export marked with `#[account_procedure]`. + export_name: String, + }, /// Metadata for the single export marked with `#[note_script]`. NoteScript { /// Fully-qualified Rust method path marked with `#[note_script]`. @@ -33,6 +40,13 @@ pub enum FrontendMetadata { /// Name of the export marked with `#[note_script]`. export_name: String, }, + /// Metadata for the single entrypoint generated by `#[tx_script]`. + TxScript { + /// Fully-qualified Rust function path marked with `#[tx_script]`. + method_path: String, + /// Name of the export generated by `#[tx_script]`. + export_name: String, + }, } /// Semantic kind of a protocol export selected by frontend metadata. @@ -40,8 +54,12 @@ pub enum FrontendMetadata { pub enum ProtocolExportKind { /// The export is the component's authentication procedure. AuthScript, + /// The export is one of the component's account-interface procedures. + AccountProcedure, /// The export is the component's note-script entrypoint. NoteScript, + /// The export is the transaction-script entrypoint. + TxScript, } impl FrontendMetadata { @@ -49,7 +67,9 @@ impl FrontendMetadata { pub fn protocol_export_kind(&self) -> ProtocolExportKind { match self { Self::AuthScript { .. } => ProtocolExportKind::AuthScript, + Self::AccountProcedure { .. } => ProtocolExportKind::AccountProcedure, Self::NoteScript { .. } => ProtocolExportKind::NoteScript, + Self::TxScript { .. } => ProtocolExportKind::TxScript, } } @@ -61,30 +81,34 @@ impl FrontendMetadata { /// Returns the Rust method path marked by this metadata entry. pub fn method_path(&self) -> &str { match self { - Self::AuthScript { method_path, .. } | Self::NoteScript { method_path, .. } => { - method_path - } + Self::AuthScript { method_path, .. } + | Self::AccountProcedure { method_path, .. } + | Self::NoteScript { method_path, .. } + | Self::TxScript { method_path, .. } => method_path, } } /// Returns the export name marked by this metadata entry. pub fn export_name(&self) -> &str { match self { - Self::AuthScript { export_name, .. } | Self::NoteScript { export_name, .. } => { - export_name - } + Self::AuthScript { export_name, .. } + | Self::AccountProcedure { export_name, .. } + | Self::NoteScript { export_name, .. } + | Self::TxScript { export_name, .. } => export_name, } } +} - /// Encodes this metadata into the bytes stored in the frontend metadata custom section. - pub fn to_bytes(&self) -> Result, FrontendMetadataError> { - serde_json::to_vec(self) - } +/// Encodes a set of frontend metadata entries into the bytes stored in the frontend metadata custom +/// section. A component may carry several entries (e.g. an optional `#[auth_script]` entry plus one +/// entry per `#[account_procedure]` method), so the section payload is a list. +pub fn encode_section(entries: &[FrontendMetadata]) -> Result, FrontendMetadataError> { + serde_json::to_vec(entries) +} - /// Decodes frontend metadata from the bytes stored in the frontend metadata custom section. - pub fn from_bytes(bytes: &[u8]) -> Result { - serde_json::from_slice(bytes) - } +/// Decodes the frontend metadata entries stored in the frontend metadata custom section. +pub fn decode_section(bytes: &[u8]) -> Result, FrontendMetadataError> { + serde_json::from_slice(bytes) } /// Errors that can occur while encoding or decoding frontend metadata bytes. @@ -99,7 +123,7 @@ mod tests { /// Ensures the shared encoder and decoder remain synchronized for the metadata payload format. #[test] fn frontend_metadata_roundtrips_payload() { - let metadata = [ + let entries = [ FrontendMetadata::AuthScript { method_path: "crate::auth::AuthComponent::authenticate".to_string(), export_name: "auth".to_string(), @@ -110,13 +134,38 @@ mod tests { }, ]; - for metadata in metadata { - let bytes = metadata.to_bytes().unwrap(); + for entry in entries { + let entry = alloc::vec![entry]; + let bytes = encode_section(&entry).unwrap(); - assert_eq!(FrontendMetadata::from_bytes(&bytes).unwrap(), metadata); + assert_eq!(decode_section(&bytes).unwrap(), entry); } } + /// Ensures a section carrying several `#[account_procedure]` entries round-trips through the + /// section encoder and decoder. + #[test] + fn frontend_metadata_section_roundtrips_multiple_account_procedures() { + let entries = alloc::vec![ + FrontendMetadata::AccountProcedure { + method_path: "crate::wallet::BasicWallet::receive_asset".to_string(), + export_name: "receive-asset".to_string(), + }, + FrontendMetadata::AccountProcedure { + method_path: "crate::wallet::BasicWallet::move_asset_to_note".to_string(), + export_name: "move-asset-to-note".to_string(), + }, + FrontendMetadata::AccountProcedure { + method_path: "crate::wallet::BasicWallet::create_note".to_string(), + export_name: "create-note".to_string(), + }, + ]; + + let bytes = encode_section(&entries).unwrap(); + + assert_eq!(decode_section(&bytes).unwrap(), entries); + } + /// Ensures protocol-export matching preserves the semantic export kind. #[test] fn frontend_metadata_matches_protocol_export_kind() { diff --git a/tests/fixtures/components/component-macros-account/src/lib.rs b/tests/fixtures/components/component-macros-account/src/lib.rs index ab59cb089..2446c790b 100644 --- a/tests/fixtures/components/component-macros-account/src/lib.rs +++ b/tests/fixtures/components/component-macros-account/src/lib.rs @@ -55,9 +55,11 @@ struct MyAccountStorage; #[component] trait MyAccount { /// Exercises exported user-defined type and SDK type in signatures and return value. + #[account_procedure] fn test_custom_types(&self, a: StructA, asset: Asset) -> StructB; /// Exercises user-defined types in a sub-module + #[account_procedure] fn test_custom_types2(&self, a: StructA, asset: Asset) -> my_types::StructC; } diff --git a/tests/fixtures/components/issue-invalid-stack-offset-movup/src/lib.rs b/tests/fixtures/components/issue-invalid-stack-offset-movup/src/lib.rs index 95613c006..df3992d39 100644 --- a/tests/fixtures/components/issue-invalid-stack-offset-movup/src/lib.rs +++ b/tests/fixtures/components/issue-invalid-stack-offset-movup/src/lib.rs @@ -51,7 +51,7 @@ impl InvalidStackOffsetMovupNote { Word::from([inputs[12], inputs[13], inputs[14], inputs[15]]), ); - let note_assets = active_note::get_assets(); + let note_assets = active_note::get_initial_assets(); let num_assets = note_assets.len(); assert_eq(Felt::new(num_assets as u64).unwrap(), felt!(1)); diff --git a/tests/integration-network/src/mockchain/counter/basic_auth.rs b/tests/integration-network/src/mockchain/counter/basic_auth.rs index b130c9a5b..bbc54657e 100644 --- a/tests/integration-network/src/mockchain/counter/basic_auth.rs +++ b/tests/integration-network/src/mockchain/counter/basic_auth.rs @@ -65,7 +65,7 @@ pub fn counter_note_basic_auth_increments_storage() { .build_tx_context(counter_account.clone(), &[counter_note.id()], &[]) .unwrap(); let tx_measurements = execute_tx(&mut chain, tx_context_builder); - expect!["9058"].assert_eq(single_note_cycles(&tx_measurements)); + expect!["9712"].assert_eq(single_note_cycles(&tx_measurements)); // The counter contract storage value should be 2 after the note is consumed (incremented by 1). assert_counter_storage( diff --git a/tests/integration-network/src/mockchain/counter/no_auth.rs b/tests/integration-network/src/mockchain/counter/no_auth.rs index 44f0f36ab..b48b760aa 100644 --- a/tests/integration-network/src/mockchain/counter/no_auth.rs +++ b/tests/integration-network/src/mockchain/counter/no_auth.rs @@ -100,8 +100,8 @@ pub fn counter_note_no_auth_increments_storage_without_signature() { .build_tx_context(counter_account.clone(), &[counter_note.id()], &[]) .unwrap(); let tx_measurements = execute_tx(&mut chain, tx_context_builder); - expect!["1807"].assert_eq(auth_procedure_cycles(&tx_measurements)); - expect!["9058"].assert_eq(single_note_cycles(&tx_measurements)); + expect!["2087"].assert_eq(auth_procedure_cycles(&tx_measurements)); + expect!["9712"].assert_eq(single_note_cycles(&tx_measurements)); // The counter contract storage value should be 2 after the note is consumed assert_counter_storage( diff --git a/tests/integration-network/src/mockchain/counter/rpo_auth.rs b/tests/integration-network/src/mockchain/counter/rpo_auth.rs index 98db3a7b1..82d9cc38a 100644 --- a/tests/integration-network/src/mockchain/counter/rpo_auth.rs +++ b/tests/integration-network/src/mockchain/counter/rpo_auth.rs @@ -70,7 +70,7 @@ pub fn counter_rpo_auth_rejects_unauthenticated_note_creation() { let tx_context = tx_context_builder.build().unwrap(); let executed_tx = block_on(tx_context.execute()).expect("authorized client should be able to create a note"); - expect!["73748"].assert_eq(auth_procedure_cycles(executed_tx.measurements())); + expect!["74265"].assert_eq(auth_procedure_cycles(executed_tx.measurements())); assert_eq!(executed_tx.output_notes().num_notes(), 1); assert_eq!(executed_tx.output_notes().get_note(0).id(), own_note.id()); diff --git a/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs b/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs index 6af4cbec7..fefb36166 100644 --- a/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs +++ b/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs @@ -156,6 +156,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the counter value stored under the provided key. + #[account_procedure] fn get_count(&self, key: Word) -> Felt; } @@ -186,6 +187,7 @@ struct CallerAccountStorage; #[component] trait CallerAccount { /// Reads a counter value from the provided foreign account. + #[account_procedure] fn read_foreign_count(&self, callee_account_id: AccountId) -> Felt; } diff --git a/tests/integration-network/src/mockchain/fpi/common.rs b/tests/integration-network/src/mockchain/fpi/common.rs index 9ade58e65..a56f55f2f 100644 --- a/tests/integration-network/src/mockchain/fpi/common.rs +++ b/tests/integration-network/src/mockchain/fpi/common.rs @@ -503,6 +503,7 @@ struct CounterContractStorage { #[component] trait FirstCounter { /// Returns the first counter value. + #[account_procedure] fn get_count(&self) -> Felt; } @@ -538,6 +539,7 @@ struct CounterContractStorage { #[component] trait SecondCounter { /// Returns the second counter value. + #[account_procedure] fn get_count(&self) -> Felt; } diff --git a/tests/integration-network/src/mockchain/fpi/note/four_words_struct.rs b/tests/integration-network/src/mockchain/fpi/note/four_words_struct.rs index d1bf74d2a..de098aab2 100644 --- a/tests/integration-network/src/mockchain/fpi/note/four_words_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/four_words_struct.rs @@ -209,6 +209,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the sum of the counter values stored under `keys`. + #[account_procedure] fn get_count_sum_by_keys(&self, keys: KeyQuad) -> Felt; } diff --git a/tests/integration-network/src/mockchain/fpi/note/get_id_collision.rs b/tests/integration-network/src/mockchain/fpi/note/get_id_collision.rs index d092455cf..a18cc51df 100644 --- a/tests/integration-network/src/mockchain/fpi/note/get_id_collision.rs +++ b/tests/integration-network/src/mockchain/fpi/note/get_id_collision.rs @@ -109,6 +109,7 @@ struct CounterContractStorage; #[component] trait CounterContract { /// Returns a marker value distinct from the account id. + #[account_procedure] fn get_id(&self) -> Felt; } diff --git a/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs b/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs index 94f65417e..73adf77cd 100644 --- a/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs @@ -67,6 +67,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the mixed scalar record received from the caller. + #[account_procedure] fn echo_mixed_scalar_record(&self, input: MixedScalarRecord) -> MixedScalarRecord; } diff --git a/tests/integration-network/src/mockchain/fpi/note/multi_call.rs b/tests/integration-network/src/mockchain/fpi/note/multi_call.rs index 7b0d9df89..8985f8316 100644 --- a/tests/integration-network/src/mockchain/fpi/note/multi_call.rs +++ b/tests/integration-network/src/mockchain/fpi/note/multi_call.rs @@ -232,6 +232,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the sum of the first felt in the three words stored under the provided keys. + #[account_procedure] fn sum_first_elements_by_keys( &self, first_key: Word, @@ -240,6 +241,7 @@ trait CounterContract { ) -> Felt; /// Returns the counter words stored under `keys`. + #[account_procedure] fn get_count_pair_by_keys(&self, keys: KeyPair) -> WordPair; } diff --git a/tests/integration-network/src/mockchain/fpi/note/multiple_packages_aliased.rs b/tests/integration-network/src/mockchain/fpi/note/multiple_packages_aliased.rs index fae46c947..2eeb51ae4 100644 --- a/tests/integration-network/src/mockchain/fpi/note/multiple_packages_aliased.rs +++ b/tests/integration-network/src/mockchain/fpi/note/multiple_packages_aliased.rs @@ -138,6 +138,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the stored counter value. + #[account_procedure] fn get_count(&self) -> Felt; } diff --git a/tests/integration-network/src/mockchain/fpi/note/no_arg.rs b/tests/integration-network/src/mockchain/fpi/note/no_arg.rs index 12031d1d6..11f41cca5 100644 --- a/tests/integration-network/src/mockchain/fpi/note/no_arg.rs +++ b/tests/integration-network/src/mockchain/fpi/note/no_arg.rs @@ -39,6 +39,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the current counter value. + #[account_procedure] fn get_count(&self) -> Felt; } diff --git a/tests/integration-network/src/mockchain/fpi/note/signed_narrow_indirect_struct.rs b/tests/integration-network/src/mockchain/fpi/note/signed_narrow_indirect_struct.rs index ed309ff3e..3ae843599 100644 --- a/tests/integration-network/src/mockchain/fpi/note/signed_narrow_indirect_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/signed_narrow_indirect_struct.rs @@ -90,6 +90,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the signed-narrow record received from the caller. + #[account_procedure] fn echo_signed_narrow_record(&self, input: SignedNarrowRecord) -> SignedNarrowRecord; } diff --git a/tests/integration-network/src/mockchain/fpi/note/six_u64_struct.rs b/tests/integration-network/src/mockchain/fpi/note/six_u64_struct.rs index 52ce248df..2c1bf471f 100644 --- a/tests/integration-network/src/mockchain/fpi/note/six_u64_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/six_u64_struct.rs @@ -51,6 +51,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the six-`u64` record received from the caller. + #[account_procedure] fn echo_six_u64_record(&self, input: SixU64Record) -> SixU64Record; } diff --git a/tests/integration-network/src/mockchain/fpi/note/sixteen_flattened_params_struct.rs b/tests/integration-network/src/mockchain/fpi/note/sixteen_flattened_params_struct.rs index 50ce72d54..9aefde690 100644 --- a/tests/integration-network/src/mockchain/fpi/note/sixteen_flattened_params_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/sixteen_flattened_params_struct.rs @@ -89,6 +89,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the sixteen-felt record received from the caller. + #[account_procedure] fn echo_sixteen_flattened_params( &self, input: SixteenFlattenedParams, diff --git a/tests/integration-network/src/mockchain/fpi/note/ten_felts.rs b/tests/integration-network/src/mockchain/fpi/note/ten_felts.rs index badfac9bd..fe2699d82 100644 --- a/tests/integration-network/src/mockchain/fpi/note/ten_felts.rs +++ b/tests/integration-network/src/mockchain/fpi/note/ten_felts.rs @@ -49,6 +49,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the counter value plus all six extra felt arguments. + #[account_procedure] fn get_count_by_ten_felts( &self, key0: Felt, diff --git a/tests/integration-network/src/mockchain/fpi/note/three_words_struct.rs b/tests/integration-network/src/mockchain/fpi/note/three_words_struct.rs index 084f397c0..f8557e092 100644 --- a/tests/integration-network/src/mockchain/fpi/note/three_words_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/three_words_struct.rs @@ -198,6 +198,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the sum of the counter values stored under `keys`. + #[account_procedure] fn get_count_sum_by_keys(&self, keys: KeyTriple) -> Felt; } diff --git a/tests/integration-network/src/mockchain/fpi/note/two_words_struct.rs b/tests/integration-network/src/mockchain/fpi/note/two_words_struct.rs index b492cf7a4..9fcac6b39 100644 --- a/tests/integration-network/src/mockchain/fpi/note/two_words_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/two_words_struct.rs @@ -211,6 +211,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the counter words stored under `keys`. + #[account_procedure] fn get_count_pair_by_keys(&self, keys: KeyPair) -> WordPair; } diff --git a/tests/integration-network/src/mockchain/fpi/note/word_arg.rs b/tests/integration-network/src/mockchain/fpi/note/word_arg.rs index 8902f01ce..be87dbee6 100644 --- a/tests/integration-network/src/mockchain/fpi/note/word_arg.rs +++ b/tests/integration-network/src/mockchain/fpi/note/word_arg.rs @@ -49,6 +49,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the counter value stored under `key`. + #[account_procedure] fn get_count_by_key(&self, key: Word) -> Felt; } diff --git a/tests/integration-network/src/mockchain/fpi/note/word_word.rs b/tests/integration-network/src/mockchain/fpi/note/word_word.rs index 67981aefd..cde5d15fc 100644 --- a/tests/integration-network/src/mockchain/fpi/note/word_word.rs +++ b/tests/integration-network/src/mockchain/fpi/note/word_word.rs @@ -171,6 +171,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the counter word stored under `key`. + #[account_procedure] fn get_count_by_key(&self, key: Word) -> Word; } diff --git a/tests/integration-network/src/mockchain/notes/basic_wallet.rs b/tests/integration-network/src/mockchain/notes/basic_wallet.rs index 553a04781..d69ef2dc3 100644 --- a/tests/integration-network/src/mockchain/notes/basic_wallet.rs +++ b/tests/integration-network/src/mockchain/notes/basic_wallet.rs @@ -107,8 +107,8 @@ pub fn basic_wallet_p2id_transfers_asset_with_custom_tx_script() { .unwrap() .foreign_accounts(vec![faucet_inputs]); let tx_measurements = execute_tx(&mut chain, consume_tx_context_builder); - expect!["3327"].assert_eq(prologue_cycles(&tx_measurements)); - expect!["7068"].assert_eq(single_note_cycles(&tx_measurements)); + expect!["3421"].assert_eq(prologue_cycles(&tx_measurements)); + expect!["5466"].assert_eq(single_note_cycles(&tx_measurements)); eprintln!("\n=== Checking Alice's account has the minted asset ==="); let alice_account = chain.committed_account(alice_id).unwrap(); @@ -128,7 +128,7 @@ pub fn basic_wallet_p2id_transfers_asset_with_custom_tx_script() { &mut note_rng, ); let tx_measurements = execute_tx(&mut chain, alice_tx_context_builder); - expect!["6815"].assert_eq(tx_script_processing_cycles(&tx_measurements)); + expect!["5906"].assert_eq(tx_script_processing_cycles(&tx_measurements)); eprintln!("\n=== Step 4: Bob consumes p2id note ==="); let faucet_inputs = chain.get_foreign_account_inputs(faucet_id).unwrap(); @@ -137,7 +137,7 @@ pub fn basic_wallet_p2id_transfers_asset_with_custom_tx_script() { .unwrap() .foreign_accounts(vec![faucet_inputs]); let tx_measurements = execute_tx(&mut chain, consume_tx_context_builder); - expect!["7068"].assert_eq(single_note_cycles(&tx_measurements)); + expect!["5466"].assert_eq(single_note_cycles(&tx_measurements)); eprintln!("\n=== Checking Bob's account has the transferred asset ==="); let bob_account = chain.committed_account(bob_id).unwrap(); @@ -270,7 +270,7 @@ pub fn basic_wallet_p2ide_allows_recipient_claim() { .unwrap() .foreign_accounts(vec![faucet_inputs]); let tx_measurements = execute_tx(&mut chain, consume_tx_context_builder); - expect!["7357"].assert_eq(single_note_cycles(&tx_measurements)); + expect!["5765"].assert_eq(single_note_cycles(&tx_measurements)); // Step 5: verify balances let bob_account = chain.committed_account(bob_id).unwrap(); @@ -403,7 +403,7 @@ pub fn basic_wallet_p2ide_allows_sender_reclaim() { .unwrap() .foreign_accounts(vec![faucet_inputs]); let tx_measurements = execute_tx(&mut chain, reclaim_tx_context_builder); - expect!["7819"].assert_eq(single_note_cycles(&tx_measurements)); + expect!["6320"].assert_eq(single_note_cycles(&tx_measurements)); // Step 5: verify Alice has her original amount back let alice_account = chain.committed_account(alice_id).unwrap(); diff --git a/tests/integration-network/src/mockchain/sibling/multi_sibling.rs b/tests/integration-network/src/mockchain/sibling/multi_sibling.rs index 7860290a9..493cb06d5 100644 --- a/tests/integration-network/src/mockchain/sibling/multi_sibling.rs +++ b/tests/integration-network/src/mockchain/sibling/multi_sibling.rs @@ -118,6 +118,7 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Increments the counter value stored under the provided key, returning the new value. + #[account_procedure] fn increment_count(&mut self, key: Word) -> Felt; } @@ -153,6 +154,7 @@ struct SecondCounterContractStorage { #[component] trait SecondCounterContract { /// Increments the counter value stored under the provided key, returning the new value. + #[account_procedure] fn increment_second_count(&mut self, key: Word) -> Felt; } @@ -184,6 +186,7 @@ struct CallerAccountStorage; )] trait CallerAccount: NativeAccount + CounterContract + SecondCounterContract { /// Increments both sibling counters and returns the second counter's new value. + #[account_procedure] fn bump_both_counts(&mut self) -> Felt; } diff --git a/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs b/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs index bb358ecd5..fd39ca803 100644 --- a/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs +++ b/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs @@ -154,8 +154,10 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the counter value stored under the provided key. + #[account_procedure] fn get_count(&self, key: Word) -> Felt; /// Increments the counter value stored under the provided key, returning the new value. + #[account_procedure] fn increment_count(&mut self, key: Word) -> Felt; } @@ -202,6 +204,7 @@ struct CallerAccountStorage; #[component(sibling_and_fpi_counter_account::CounterContract)] trait CallerAccount: NativeAccount + CounterContract { /// Increments the local sibling counter, then reads the remote account's counter via FPI. + #[account_procedure] fn bump_local_read_remote(&mut self, remote_account_id: AccountId) -> Felt; } diff --git a/tests/integration-network/src/mockchain/sibling/single_sibling.rs b/tests/integration-network/src/mockchain/sibling/single_sibling.rs index fe2089a27..cec886a55 100644 --- a/tests/integration-network/src/mockchain/sibling/single_sibling.rs +++ b/tests/integration-network/src/mockchain/sibling/single_sibling.rs @@ -110,8 +110,10 @@ struct CounterContractStorage { #[component] trait CounterContract { /// Returns the counter value stored under the provided key. + #[account_procedure] fn get_count(&self, key: Word) -> Felt; /// Increments the counter value stored under the provided key, returning the new value. + #[account_procedure] fn increment_count(&mut self, key: Word) -> Felt; } @@ -144,6 +146,7 @@ struct CallerAccountStorage; #[component(single_sibling_counter_account::CounterContract)] trait CallerAccount: NativeAccount + CounterContract { /// Increments the sibling counter and returns the new value. + #[account_procedure] fn bump_sibling_count(&mut self) -> Felt; } diff --git a/tests/integration-network/src/mockchain/support/helpers.rs b/tests/integration-network/src/mockchain/support/helpers.rs index 8e538f012..543b81d47 100644 --- a/tests/integration-network/src/mockchain/support/helpers.rs +++ b/tests/integration-network/src/mockchain/support/helpers.rs @@ -104,7 +104,7 @@ fn transaction_script_from_package(package: &Package) -> TransactionScript { "expected a transaction-script package" ); - TransactionScript::from_package(package).expect("invalid transaction-script package") + TransactionScript::from_library(package).expect("invalid transaction-script package") } // ================================================================================================ diff --git a/tests/integration/src/end_to_end/examples/basic_wallet_package_sizes.rs b/tests/integration/src/end_to_end/examples/basic_wallet_package_sizes.rs index 2aad6ecda..53a4a0364 100644 --- a/tests/integration/src/end_to_end/examples/basic_wallet_package_sizes.rs +++ b/tests/integration/src/end_to_end/examples/basic_wallet_package_sizes.rs @@ -18,7 +18,7 @@ fn basic_wallet_and_p2id() { ); let account_package = account_test.compile_package(); assert!(account_package.is_library(), "expected library"); - expect!["12848"].assert_eq(stripped_mast_size_str(&account_package).as_str()); + expect!["13993"].assert_eq(stripped_mast_size_str(&account_package).as_str()); persist_cargo_miden_dependency("../../examples/basic-wallet", account_package.as_ref()); let mut tx_script_test = CompilerTest::rust_source_cargo_miden( @@ -28,7 +28,7 @@ fn basic_wallet_and_p2id() { ); let tx_script_package = tx_script_test.compile_package(); assert!(tx_script_package.is_library(), "expected library"); - expect!["14238"].assert_eq(stripped_mast_size_str(&tx_script_package).as_str()); + expect!["14492"].assert_eq(stripped_mast_size_str(&tx_script_package).as_str()); let mut p2id_test = CompilerTest::rust_source_cargo_miden( "../../examples/p2id-note", @@ -37,7 +37,7 @@ fn basic_wallet_and_p2id() { ); let note_package = p2id_test.compile_package(); assert!(note_package.is_library(), "expected library"); - expect!["14875"].assert_eq(stripped_mast_size_str(¬e_package).as_str()); + expect!["15092"].assert_eq(stripped_mast_size_str(¬e_package).as_str()); let mut p2ide_test = CompilerTest::rust_source_cargo_miden( "../../examples/p2ide-note", @@ -46,5 +46,5 @@ fn basic_wallet_and_p2id() { ); let p2ide_package = p2ide_test.compile_package(); assert!(p2ide_package.is_library(), "expected library"); - expect!["17252"].assert_eq(stripped_mast_size_str(&p2ide_package).as_str()); + expect!["17553"].assert_eq(stripped_mast_size_str(&p2ide_package).as_str()); } diff --git a/tests/integration/src/end_to_end/support.rs b/tests/integration/src/end_to_end/support.rs index ab02c5ee7..3d27b2402 100644 --- a/tests/integration/src/end_to_end/support.rs +++ b/tests/integration/src/end_to_end/support.rs @@ -18,7 +18,7 @@ use proptest::{ use crate::compiler_test::{sdk_alloc_crate_path, sdk_crate_path}; const INTRINSICS_ROOT: &str = - concat!(env!("CARGO_MANIFEST_DIR"), "../../codegen/masm/intrinsics/mod.masm"); + concat!(env!("CARGO_MANIFEST_DIR"), "/../../codegen/masm/intrinsics/mod.masm"); /// Assembles an executable program that wraps `procedure_body` inside a procedure that is called /// as entry point. @@ -73,9 +73,12 @@ end /// The core library registers the event handlers required to execute core helpers that rely on /// the advice provider. pub(super) fn default_host_with_core_lib() -> DefaultHost { - let core_library = CoreLibrary::default().package(); + use miden_processor::HostLibrary; + let core_library = CoreLibrary::default(); + let mut lib = HostLibrary::from(core_library.package()); + lib.handlers.extend(core_library.handlers()); let mut host = DefaultHost::default(); - host.load_library(core_library).expect("failed to load core library into host"); + host.load_library(lib).expect("failed to load core library into host"); host } @@ -168,6 +171,8 @@ pub(super) fn miden_project_toml(name: &str) -> String { version = "0.0.1" [lib] + # Core Wasm modules use the frontend's synthetic wrapper component identity. + namespace = "root_ns:root@1.0.0" path = "src/lib.rs" [dependencies] diff --git a/tests/integration/src/sdk/base/account.rs b/tests/integration/src/sdk/base/account.rs index 6edc93109..5d1d66586 100644 --- a/tests/integration/src/sdk/base/account.rs +++ b/tests/integration/src/sdk/base/account.rs @@ -90,7 +90,7 @@ fn account_get_initial_storage_commitment_binding() { run_account_binding_test( "account_get_initial_storage_commitment_binding", "pub fn binding(&self) -> Word { - self.get_initial_storage_commitment() + native_account::get_initial_storage_commitment() }", ); } @@ -135,17 +135,6 @@ fn account_native_account_get_id_binding() { ); } -#[test] -fn account_get_initial_balance_binding() { - run_account_binding_test( - "account_get_initial_balance_binding", - "pub fn binding(&self) -> Felt { - let asset_key = Word::from([Felt::new(0).unwrap(); 4]); - self.get_initial_balance(asset_key) - }", - ); -} - #[test] fn account_get_asset_binding() { run_account_binding_test( @@ -163,19 +152,18 @@ fn account_get_initial_asset_binding() { "account_get_initial_asset_binding", "pub fn binding(&self) -> Word { let asset_key = Word::from([Felt::new(0).unwrap(); 4]); - self.get_initial_asset(asset_key) + native_account::get_initial_asset(asset_key) }", ); } #[test] -fn account_has_non_fungible_asset_binding() { +fn account_has_asset_binding() { run_account_binding_test( - "account_has_non_fungible_asset_binding", + "account_has_asset_binding", "pub fn binding(&self) -> Felt { - let asset = Asset::new(Word::from([Felt::new(0).unwrap(); 4]), \ - Word::from([Felt::new(0).unwrap(); 4])); - if self.has_non_fungible_asset(asset) { + let asset_id = Word::from([Felt::new(0).unwrap(); 4]); + if self.has_asset(asset_id) { Felt::new(1).unwrap() } else { Felt::new(0).unwrap() @@ -189,7 +177,7 @@ fn account_get_initial_vault_root_binding() { run_account_binding_test( "account_get_initial_vault_root_binding", "pub fn binding(&self) -> Word { - self.get_initial_vault_root() + native_account::get_initial_vault_root() }", ); } diff --git a/tests/integration/src/sdk/base/active_note.rs b/tests/integration/src/sdk/base/active_note.rs index 15a649c7f..ad3219fc5 100644 --- a/tests/integration/src/sdk/base/active_note.rs +++ b/tests/integration/src/sdk/base/active_note.rs @@ -155,11 +155,11 @@ fn active_note_get_storage_binding() { } #[test] -fn active_note_get_assets_binding() { +fn active_note_get_initial_assets_binding() { run_active_note_binding_test( - "active_note_get_assets_binding", + "active_note_get_initial_assets_binding", "pub fn binding(&self) -> Felt { - let assets = active_note::get_assets(); + let assets = active_note::get_initial_assets(); Felt::new(assets.len() as u64).unwrap() }", ); diff --git a/tests/integration/src/sdk/base/asset.rs b/tests/integration/src/sdk/base/asset.rs deleted file mode 100644 index 8ed3dff07..000000000 --- a/tests/integration/src/sdk/base/asset.rs +++ /dev/null @@ -1,93 +0,0 @@ -use super::*; - -#[allow(clippy::uninlined_format_args)] -fn run_asset_binding_test(name: &str, method: &str) { - let component = account_component_source("TestAsset", method); - let lib_rs = format!( - r"#![no_std] -#![feature(alloc_error_handler)] - -use miden::*; - -{component} -" - ); - - let sdk_path = sdk_crate_path(); - let namespace = account_component_namespace(name, "test-asset"); - let miden_project_toml = format!( - r#" -[package] -name = "{name}" -version = "0.0.1" - -[lib] -kind = "account-component" -namespace = "{namespace}" -path = "src/lib.rs" - -[package.metadata.miden] -supported-types = ["RegularAccountUpdatableCode"] -"# - ); - let cargo_toml = format!( - r#" -[package] -name = "{name}" -version = "0.0.1" -edition = "2024" -authors = [] - -[lib] -crate-type = ["cdylib"] - -[dependencies] -miden = {{ path = "{sdk_path}" }} - -[profile.release] -opt-level = "z" -panic = "abort" -debug = false -"#, - name = name, - sdk_path = sdk_path.display(), - ); - - let cargo_proj = project(name) - .file("miden-project.toml", &miden_project_toml) - .file("Cargo.toml", &cargo_toml) - .file("src/lib.rs", &lib_rs) - .build(); - - let mut test = CompilerTestBuilder::rust_source_cargo_miden( - cargo_proj.root(), - WasmTranslationConfig::default(), - [], - ) - .build(); - - test.compile_package(); -} - -#[test] -fn account_asset_create_fungible_asset_binding() { - run_asset_binding_test( - "account_asset_create_fungible_asset_binding", - "pub fn binding(&self) -> Asset { - let faucet = AccountId { prefix: Felt::new(1).unwrap(), suffix: Felt::new(0).unwrap() }; - asset::create_fungible_asset(faucet, Felt::new(10).unwrap(), false) - }", - ); -} - -#[test] -fn account_asset_create_non_fungible_asset_binding() { - run_asset_binding_test( - "account_asset_create_non_fungible_asset_binding", - "pub fn binding(&self) -> Asset { - let faucet = AccountId { prefix: Felt::new(1).unwrap(), suffix: Felt::new(0).unwrap() }; - let hash = Word::from([Felt::new(0).unwrap(); 4]); - asset::create_non_fungible_asset(faucet, hash, false) - }", - ); -} diff --git a/tests/integration/src/sdk/base/faucet.rs b/tests/integration/src/sdk/base/faucet.rs index 0cd9f9a99..a68e19d1b 100644 --- a/tests/integration/src/sdk/base/faucet.rs +++ b/tests/integration/src/sdk/base/faucet.rs @@ -69,27 +69,6 @@ debug = false test.compile_package(); } -#[test] -fn account_faucet_create_fungible_asset_binding() { - run_faucet_binding_test( - "account_faucet_create_fungible_asset_binding", - "pub fn binding(&self) -> Asset { - faucet::create_fungible_asset(Felt::new(10).unwrap()) - }", - ); -} - -#[test] -fn account_faucet_create_non_fungible_asset_binding() { - run_faucet_binding_test( - "account_faucet_create_non_fungible_asset_binding", - "pub fn binding(&self) -> Asset { - let hash = Word::from([Felt::new(0).unwrap(); 4]); - faucet::create_non_fungible_asset(hash) - }", - ); -} - #[test] fn account_faucet_mint_binding() { run_faucet_binding_test( @@ -115,17 +94,3 @@ fn account_faucet_burn_binding() { }", ); } - -#[test] -fn account_faucet_has_callbacks_binding() { - run_faucet_binding_test( - "account_faucet_has_callbacks_binding", - "pub fn binding(&self) -> Felt { - if faucet::has_callbacks() { - Felt::new(1).unwrap() - } else { - Felt::new(0).unwrap() - } - }", - ); -} diff --git a/tests/integration/src/sdk/base/input_note.rs b/tests/integration/src/sdk/base/input_note.rs index 3d3b8a6a5..42daf6054 100644 --- a/tests/integration/src/sdk/base/input_note.rs +++ b/tests/integration/src/sdk/base/input_note.rs @@ -73,22 +73,22 @@ trim-paths = ["diagnostics", "object"] } #[test] -fn input_note_get_assets_info_binding() { +fn input_note_get_initial_assets_info_binding() { run_input_note_binding_test( - "input_note_get_assets_info_binding", + "input_note_get_initial_assets_info_binding", "pub fn binding(&self) -> Felt { - let info = input_note::get_assets_info(NoteIdx { inner: Felt::new(0).unwrap() }); + let info = input_note::get_initial_assets_info(NoteIdx { inner: Felt::new(0).unwrap() }); info.num_assets }", ); } #[test] -fn input_note_get_assets_binding() { +fn input_note_get_initial_assets_binding() { run_input_note_binding_test( - "input_note_get_assets_binding", + "input_note_get_initial_assets_binding", "pub fn binding(&self) -> Felt { - let assets = input_note::get_assets(NoteIdx { inner: Felt::new(0).unwrap() }); + let assets = input_note::get_initial_assets(NoteIdx { inner: Felt::new(0).unwrap() }); Felt::new(assets.len() as u64).unwrap() }", ); diff --git a/tests/integration/src/sdk/base/mod.rs b/tests/integration/src/sdk/base/mod.rs index 42e4a04c1..87fa76a65 100644 --- a/tests/integration/src/sdk/base/mod.rs +++ b/tests/integration/src/sdk/base/mod.rs @@ -2,7 +2,6 @@ use super::*; pub mod account; pub mod active_note; -pub mod asset; pub mod faucet; pub mod input_note; pub mod note; diff --git a/tests/integration/src/sdk/mod.rs b/tests/integration/src/sdk/mod.rs index 71877fd16..10c4a03d4 100644 --- a/tests/integration/src/sdk/mod.rs +++ b/tests/integration/src/sdk/mod.rs @@ -199,13 +199,13 @@ impl Note { let script_root = active_note::get_script_root(); let serial_number = active_note::get_serial_number(); let asset_key = Word::from([Felt::new(0).unwrap(); 4]); - let balance = active_account::get_balance(asset_key); + let asset_value = active_account::get_asset(asset_key); assert_eq!(sender.prefix, sender.prefix); assert_eq!(sender.suffix, sender.suffix); assert_eq!(script_root, script_root); assert_eq!(serial_number, serial_number); - assert_eq!(balance, balance); + assert_eq!(asset_value, asset_value); } } "#; From 7c5109cadf0d8797d720942fadfd4fcefde32e9d Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Fri, 10 Jul 2026 14:25:33 +0300 Subject: [PATCH 04/23] fix(sdk): preserve canonical interfaces in FPI bindings Plain dependency imports and #[account] bindings could describe the same canonical WIT interface differently because FPI generation added fpi-* functions in place. Component linking then depended on section ordering and could fail with an incompatible interface definition. Keep canonical dependency interfaces unchanged and place generated FPI adapters in deterministic private interfaces, using local aliases to preserve dependency-owned type identity. Native calls retain the canonical module path, foreign calls use the synthetic path, and repeated account expansions receive distinct component-type sections without changing public binding paths. --- sdk/base-macros/src/foreign_account.rs | 39 +- sdk/base-macros/src/fpi.rs | 564 +++++++++++++++--- sdk/base-macros/src/generate.rs | 324 +++++++++- sdk/sdk/CHANGELOG.md | 5 + .../integration-network/src/mockchain/fpi.rs | 1 + .../fpi/account/account_to_account.rs | 20 +- .../src/mockchain/fpi/blind_import.rs | 113 ++++ .../mockchain/fpi/note/mixed_scalar_struct.rs | 29 +- .../src/mockchain/sibling/sibling_and_fpi.rs | 40 +- 9 files changed, 1011 insertions(+), 124 deletions(-) create mode 100644 tests/integration-network/src/mockchain/fpi/blind_import.rs diff --git a/sdk/base-macros/src/foreign_account.rs b/sdk/base-macros/src/foreign_account.rs index 226a6f7b8..5d816763c 100644 --- a/sdk/base-macros/src/foreign_account.rs +++ b/sdk/base-macros/src/foreign_account.rs @@ -1,5 +1,7 @@ //! Attribute macro for explicit active and foreign account bindings. +use std::{env, fmt::Write as _}; + use heck::ToSnakeCase; use proc_macro2::{Ident, Span}; use quote::format_ident; @@ -11,7 +13,7 @@ use crate::{ select_dependencies, }, fpi, generate, manifest_paths, - wit_world::{ManifestPackage, import_world_wit}, + wit_world::ManifestPackage, }; const FOREIGN_ACCOUNT_WORLD: &str = "foreign-account-bindings"; @@ -52,8 +54,12 @@ fn expand_inner( .iter() .map(|dependency| dependency.import().to_owned()) .collect::>(); + let fpi_imports = fpi::import_specs(&imports); let with_entries = fpi::dependency_type_with_entries(&dependencies); - let inline_wit = import_world_wit(FOREIGN_ACCOUNT_WORLD, &imports); + let inline_wit = fpi::import_world_wit(FOREIGN_ACCOUNT_WORLD, &fpi_imports); + let binding_module_ident = binding_module_ident(&account_struct.ident); + let type_section_suffix = + type_section_suffix(&binding_module_ident, account_struct.ident.span()); let wit_config = manifest_paths::resolve_wit_paths(manifest_paths::ResolveOptions { allow_missing_local_wit: true, })?; @@ -61,16 +67,17 @@ fn expand_inner( &wit_config, &inline_wit, FOREIGN_ACCOUNT_WORLD, - &imports, + &fpi_imports, &with_entries, + &type_section_suffix, )?; - let binding_module_ident = binding_module_ident(&account_struct.ident); fpi::augment_foreign_account_bindings( bindings, account_struct, dependencies, &args.refs, + &fpi_imports, binding_module_ident, ) } @@ -150,6 +157,30 @@ fn binding_module_ident(account_ident: &Ident) -> Ident { format_ident!("__miden_foreign_account_{}", account_ident.to_string().to_snake_case()) } +/// Builds a per-expansion suffix for wit-bindgen's component-type custom section. +fn type_section_suffix(binding_module: &Ident, span: Span) -> String { + // The Wasm linker concatenates same-named custom sections, so even identical repeated + // `#[account]` bindings need distinct section names. The call site also distinguishes + // same-named wrappers declared in separate Rust modules. + let span = span.unwrap(); + let start = span.start(); + let end = span.end(); + let package = env::var("CARGO_PKG_NAME").unwrap_or_default(); + let seed = format!( + "{package}\0{}\0{}:{}..{}:{}", + span.file(), + start.line(), + start.column(), + end.line(), + end.column() + ); + let mut suffix = format!(":{binding_module}-x"); + for byte in seed.bytes() { + write!(suffix, "{byte:02x}").expect("writing to an in-memory string cannot fail"); + } + suffix +} + #[cfg(test)] mod tests { use super::*; diff --git a/sdk/base-macros/src/fpi.rs b/sdk/base-macros/src/fpi.rs index 2816bbe76..13ac3b823 100644 --- a/sdk/base-macros/src/fpi.rs +++ b/sdk/base-macros/src/fpi.rs @@ -2,7 +2,9 @@ use std::{ collections::{HashMap, HashSet}, - env, fs, + env, + fmt::Write as _, + fs, path::{Path, PathBuf}, }; @@ -17,7 +19,7 @@ use syn::{ }; use wit_bindgen_core::wit_parser::{ Docs, Function, FunctionKind, InterfaceId, Param, Resolve, Span as WitSpan, Type as WitType, - WorldId, WorldItem, + TypeDef, TypeDefKind, TypeId, TypeOwner, WorldId, WorldItem, WorldKey, }; #[cfg(test)] @@ -25,7 +27,8 @@ use crate::wit_world::DependencyInterface; use crate::{ dependency_ref::DependencyRef, generate::{ - collect_arg_idents, format_module_path, qualify_signature_types, should_generate_struct, + CORE_TYPES_INTERFACE, collect_arg_idents, format_module_path, qualify_signature_types, + should_generate_struct, }, wit_world::SelectedDependency, }; @@ -36,50 +39,152 @@ pub(crate) const WIT_FUNCTION_PREFIX: &str = "fpi-"; /// Rust identifier prefix generated by wit-bindgen for FPI WIT functions. pub(crate) const RUST_FUNCTION_PREFIX: &str = "fpi_"; -/// Adds `fpi-` functions to imported Miden dependency interfaces in the selected world. +/// Version of the private synthetic interface contract used for generated FPI imports. +const FPI_ABI_VERSION: &str = "v1"; + +/// Prefix for private synthetic FPI world-import keys. +const FPI_IMPORT_PREFIX: &str = "miden-fpi"; + +/// Maps one real dependency interface to its private synthetic FPI interface. +#[derive(Clone, Debug, Eq, PartialEq)] +pub(crate) struct FpiImportSpec { + /// Fully-qualified real dependency interface, including its version. + source_import: String, + /// WIT world-import key for the private synthetic interface. + synthetic_import: String, +} + +impl FpiImportSpec { + /// Creates a deterministic FPI import specification for `source_import`. + fn new(source_import: String) -> Self { + let mut synthetic_import = format!("{FPI_IMPORT_PREFIX}-{FPI_ABI_VERSION}-x"); + for byte in source_import.bytes() { + write!(synthetic_import, "{byte:02x}") + .expect("writing to an in-memory string cannot fail"); + } + Self { + source_import, + synthetic_import, + } + } + + /// Returns the fully-qualified real dependency interface. + pub(crate) fn source_import(&self) -> &str { + &self.source_import + } + + /// Returns the private synthetic WIT world-import key. + pub(crate) fn synthetic_import(&self) -> &str { + &self.synthetic_import + } + + /// Returns the Rust module path generated for the private synthetic interface. + pub(crate) fn synthetic_module_path(&self) -> String { + self.synthetic_import.to_snake_case() + } +} + +/// Builds sorted, deduplicated FPI import specifications. +pub(crate) fn import_specs(imports: &[String]) -> Vec { + let mut imports = imports.to_vec(); + imports.sort_unstable(); + imports.dedup(); + imports.into_iter().map(FpiImportSpec::new).collect() +} + +/// Renders the private import world used exclusively by `#[account]` bindings. +pub(crate) fn import_world_wit(name: &str, imports: &[FpiImportSpec]) -> String { + let mut wit = format!("package miden:{name}@1.0.0;\n\nworld {name} {{\n"); + + // The prefix added after WIT resolution references these types directly. Importing the owner + // up front keeps the world's dependency closure complete without mutating or re-elaborating it. + writeln!(wit, " import {CORE_TYPES_INTERFACE};") + .expect("writing to an in-memory string cannot fail"); + for import in imports { + if import.source_import() != CORE_TYPES_INTERFACE { + writeln!(wit, " import {};", import.source_import()) + .expect("writing to an in-memory string cannot fail"); + } + writeln!(wit, " import {}: interface {{}}", import.synthetic_import()) + .expect("writing to an in-memory string cannot fail"); + } + wit.push_str("}\n"); + wit +} + +/// Populates private synthetic interfaces with `fpi-` variants of real dependency functions. pub(crate) fn inject_imports( resolve: &mut Resolve, world_id: WorldId, - dependency_imports: &[String], + imports: &[FpiImportSpec], ) -> syn::Result<()> { - if dependency_imports.is_empty() { + if imports.is_empty() { return Ok(()); } - let dependency_imports = dependency_imports.iter().map(String::as_str).collect::>(); - let imported_interfaces = resolve.worlds[world_id] + let core_types = resolve_core_types(resolve)?; + for import in imports { + let source_id = find_source_interface(resolve, world_id, import.source_import())?; + let synthetic_id = find_synthetic_interface(resolve, world_id, import.synthetic_import())?; + + validate_reserved_fpi_namespace( + import.source_import(), + resolve.interfaces[source_id].functions.values(), + )?; + inject_functions_into_synthetic_interface(resolve, source_id, synthetic_id, core_types)?; + } + + #[cfg(debug_assertions)] + resolve.assert_valid(); + + Ok(()) +} + +/// Finds a real imported interface by its full canonical identity. +fn find_source_interface( + resolve: &Resolve, + world_id: WorldId, + source_import: &str, +) -> syn::Result { + resolve.worlds[world_id] .imports .values() .filter_map(|item| match item { WorldItem::Interface { id, .. } => Some(*id), _ => None, }) - .filter(|id| { - interface_import_path(resolve, *id) - .as_ref() - .is_some_and(|path| dependency_imports.contains(path.as_str())) + .find(|id| interface_import_path(resolve, *id).as_deref() == Some(source_import)) + .ok_or_else(|| { + Error::new( + Span::call_site(), + format!("failed to resolve FPI source interface `{source_import}` in import world"), + ) }) - .collect::>(); - - if imported_interfaces.is_empty() { - return Ok(()); - } - - for interface_id in &imported_interfaces { - let import = interface_import_path(resolve, *interface_id) - .unwrap_or_else(|| "".to_string()); - validate_reserved_fpi_namespace( - &import, - resolve.interfaces[*interface_id].functions.values(), - )?; - } - - let core_types = resolve_core_types(resolve)?; - for interface_id in imported_interfaces { - inject_functions_into_interface(resolve, interface_id, core_types); - } +} - Ok(()) +/// Finds a private inline interface by its explicit world-import key. +fn find_synthetic_interface( + resolve: &Resolve, + world_id: WorldId, + synthetic_import: &str, +) -> syn::Result { + resolve.worlds[world_id] + .imports + .iter() + .find_map(|(key, item)| match (key, item) { + (WorldKey::Name(name), WorldItem::Interface { id, .. }) if name == synthetic_import => { + Some(*id) + } + _ => None, + }) + .ok_or_else(|| { + Error::new( + Span::call_site(), + format!( + "failed to resolve private FPI interface `{synthetic_import}` in import world" + ), + ) + }) } /// Determines whether a generated free function represents an FPI WIT import. @@ -203,14 +308,14 @@ fn resolve_core_types(resolve: &Resolve) -> syn::Result { }) } -/// Injects FPI variants of every freestanding function in an imported interface. -fn inject_functions_into_interface( +/// Copies FPI variants of source functions into an empty private synthetic interface. +fn inject_functions_into_synthetic_interface( resolve: &mut Resolve, - interface_id: InterfaceId, + source_id: InterfaceId, + synthetic_id: InterfaceId, core_types: CoreTypes, -) { - let interface = &mut resolve.interfaces[interface_id]; - let functions = interface +) -> syn::Result<()> { + let functions = resolve.interfaces[source_id] .functions .values() .filter(|function| { @@ -220,16 +325,86 @@ fn inject_functions_into_interface( .cloned() .collect::>(); + let synthetic = &mut resolve.interfaces[synthetic_id]; + if !synthetic.types.is_empty() || !synthetic.functions.is_empty() { + return Err(Error::new( + Span::call_site(), + "private FPI interface must be empty before generated functions are inserted", + )); + } + + let mut aliases = HashMap::new(); + let mut interface_types = Vec::new(); + let mut fpi_functions = Vec::with_capacity(functions.len()); for function in functions { let fpi_name = format!("{WIT_FUNCTION_PREFIX}{}", function.name); - if interface.functions.contains_key(&fpi_name) { - continue; - } + let mut function = build_import_function(function, fpi_name.clone(), core_types); + alias_function_types( + resolve, + synthetic_id, + &mut function, + &mut aliases, + &mut interface_types, + ); + fpi_functions.push((fpi_name, function)); + } + + let synthetic = &mut resolve.interfaces[synthetic_id]; + for (name, id) in interface_types { + synthetic.types.insert(name, id); + } + for (name, function) in fpi_functions { + synthetic.functions.insert(name, function); + } + + Ok(()) +} - interface - .functions - .insert(fpi_name.clone(), build_import_function(function, fpi_name, core_types)); +/// Replaces cross-interface function types with local aliases to their original definitions. +fn alias_function_types( + resolve: &mut Resolve, + synthetic_id: InterfaceId, + function: &mut Function, + aliases: &mut HashMap, + interface_types: &mut Vec<(String, TypeId)>, +) { + for param in &mut function.params { + alias_wit_type(resolve, synthetic_id, &mut param.ty, aliases, interface_types); + } + if let Some(result) = &mut function.result { + alias_wit_type(resolve, synthetic_id, result, aliases, interface_types); + } +} + +/// Replaces one resolved type ID with a synthetic-interface alias. +fn alias_wit_type( + resolve: &mut Resolve, + synthetic_id: InterfaceId, + ty: &mut WitType, + aliases: &mut HashMap, + interface_types: &mut Vec<(String, TypeId)>, +) { + let WitType::Id(source_id) = ty else { + return; + }; + if let Some(alias_id) = aliases.get(source_id) { + *source_id = *alias_id; + return; } + + let source_id_value = *source_id; + let name = format!("miden-fpi-type-{}", aliases.len()); + let alias_id = resolve.types.alloc(TypeDef { + name: Some(name.clone()), + kind: TypeDefKind::Type(WitType::Id(source_id_value)), + owner: TypeOwner::Interface(synthetic_id), + docs: Docs::default(), + stability: Default::default(), + span: WitSpan::default(), + }); + aliases.insert(source_id_value, alias_id); + interface_types.push((name, alias_id)); + *source_id = alias_id; } /// Rejects dependency functions that use the namespace reserved for generated FPI imports. @@ -281,7 +456,9 @@ fn build_import_function(function: Function, fpi_name: String, core_types: CoreT params, result: function.result, docs: Docs::default(), - stability: function.stability, + // The generated function belongs to the private inline package, so source-package feature + // metadata cannot be copied across package ownership boundaries. + stability: Default::default(), span: WitSpan::default(), } } @@ -363,10 +540,12 @@ pub(crate) fn augment_foreign_account_bindings( account_struct: ItemStruct, dependencies: Vec, refs: &[DependencyRef], + fpi_imports: &[FpiImportSpec], binding_module_ident: syn::Ident, ) -> syn::Result { let file: File = syn::parse2(bindings)?; - let modules = collect_import_modules(&file.items, &is_function)?; + let native_modules = collect_import_modules(&file.items, &is_plain_import_function)?; + let foreign_modules = collect_import_modules(&file.items, &is_function)?; // Each selected reference is checked for a matching module in the per-reference loop below, so // an empty `modules` surfaces there as a specific "no callable exports" error per interface. @@ -389,8 +568,9 @@ pub(crate) fn augment_foreign_account_bindings( // has no callable exports is reported per-reference instead of being silently skipped — a // reference maps 1:1 to a generated trait, so every one must produce a module. for dependency in &dependencies { - let Some(module) = - modules.iter().find(|module| module.path_string == dependency.module_path) + let Some(native_module) = native_modules + .iter() + .find(|module| module.path_string == dependency.module_path) else { return Err(Error::new( dependency.trait_ident.span(), @@ -401,22 +581,63 @@ pub(crate) fn augment_foreign_account_bindings( ), )); }; + let import = fpi_imports + .iter() + .find(|import| import.source_import() == dependency.import) + .ok_or_else(|| { + Error::new( + dependency.trait_ident.span(), + format!( + "failed to find private FPI import metadata for `{}`", + dependency.import + ), + ) + })?; + let synthetic_module_path = import.synthetic_module_path(); + let foreign_module = foreign_modules + .iter() + .find(|module| module.path_string == synthetic_module_path) + .ok_or_else(|| { + Error::new( + dependency.trait_ident.span(), + format!( + "failed to find generated private FPI bindings for `{}`", + dependency.import + ), + ) + })?; if !include_paths.iter().any(|path| path == &dependency.package_path) { include_paths.push(dependency.package_path.clone()); } - let mut signature_module_path = Vec::with_capacity(module.module_path.len() + 1); + let mut signature_module_path = Vec::with_capacity(native_module.module_path.len() + 1); signature_module_path.push(binding_module_ident.clone()); - signature_module_path.extend(module.module_path.iter().cloned()); - - let mut methods = Vec::with_capacity(module.functions.len()); - for func in &module.functions { - let wit_name = function_wit_name(func)?; + signature_module_path.extend(native_module.module_path.iter().cloned()); + + let mut methods = Vec::with_capacity(foreign_module.functions.len()); + for foreign_func in &foreign_module.functions { + let native_ident = method_ident(foreign_func)?; + let native_func = native_module + .functions + .iter() + .find(|func| func.sig.ident == native_ident) + .ok_or_else(|| { + Error::new( + foreign_func.sig.ident.span(), + format!( + "generated private FPI function `{}` has no matching native function", + foreign_func.sig.ident + ), + ) + })?; + validate_fpi_signature(native_func, foreign_func)?; + + let wit_name = function_wit_name(foreign_func)?; let root_key = ProcedureRootKey::new(dependency.import.as_str(), wit_name.as_str()); let root = dependency.roots.get(&root_key).ok_or_else(|| { Error::new( - func.sig.ident.span(), + foreign_func.sig.ident.span(), format!( "failed to find procedure root for `{}#{wit_name}` in package '{}'", dependency.import, @@ -425,14 +646,26 @@ pub(crate) fn augment_foreign_account_bindings( ) })?; methods.push(build_wrapper_method( - func, + native_func, + foreign_func, &signature_module_path, quote!(#binding_module_ident), - &module.module_path, + &native_module.module_path, + &foreign_module.module_path, *root, )?); } + if methods.len() != native_module.functions.len() { + return Err(Error::new( + dependency.trait_ident.span(), + format!( + "generated private FPI bindings for `{}` do not match its native functions", + dependency.import + ), + )); + } + trait_items.push(build_account_trait( &account_struct.vis, &dependency.trait_ident, @@ -516,42 +749,32 @@ fn build_account_trait( /// supertrait at runtime: when set it forwards through the generated `fpi_*` import /// (`execute_foreign_procedure`); otherwise it calls the dependency's native import directly. fn build_wrapper_method( - func: &ItemFn, + native_func: &ItemFn, + foreign_func: &ItemFn, signature_module_path: &[syn::Ident], call_base_path: TokenStream2, - call_module_path: &[syn::Ident], + native_call_module_path: &[syn::Ident], + foreign_call_module_path: &[syn::Ident], procedure_root: ProcedureRoot, ) -> syn::Result { - let foreign_fn_ident = func.sig.ident.clone(); - // Stripping the `fpi_` prefix yields both the generated trait method name and the matching - // native import name generated by wit-bindgen for the same WIT function. - let native_fn_ident = method_ident(func)?; - let mut sig = func.sig.clone(); - sig.ident = native_fn_ident.clone(); - - if sig.inputs.len() < 3 { - return Err(Error::new( - sig.ident.span(), - "generated FPI function is missing account id and procedure root parameters", - )); - } - let retained_inputs = sig.inputs.iter().skip(3).cloned().collect::>(); + validate_fpi_signature(native_func, foreign_func)?; + let foreign_fn_ident = foreign_func.sig.ident.clone(); + let native_fn_ident = native_func.sig.ident.clone(); + let mut sig = native_func.sig.clone(); sig.inputs.clear(); sig.inputs.push(parse_quote!(&self)); - sig.inputs.extend(retained_inputs); + sig.inputs.extend(native_func.sig.inputs.iter().cloned()); qualify_signature_types(&mut sig, signature_module_path); - let arg_idents = collect_arg_idents(func)?.into_iter().skip(3).collect::>(); + let arg_idents = collect_arg_idents(native_func)?; let root_tokens = procedure_root_tokens(procedure_root); - let mut path_tokens = call_base_path; - for ident in call_module_path { - path_tokens = quote! { #path_tokens :: #ident }; - } + let native_path = append_module_path(call_base_path.clone(), native_call_module_path); + let foreign_path = append_module_path(call_base_path, foreign_call_module_path); let foreign_call = quote! { - #path_tokens :: #foreign_fn_ident( + #foreign_path :: #foreign_fn_ident( __miden_foreign_account_id.prefix, __miden_foreign_account_id.suffix, #root_tokens, @@ -559,7 +782,7 @@ fn build_wrapper_method( ) }; let native_call = quote! { - #path_tokens :: #native_fn_ident(#(#arg_idents),*) + #native_path :: #native_fn_ident(#(#arg_idents),*) }; // Read the binding target through `AccountBinding` (the trait's supertrait) rather than the // wrapper's private field, because a trait default method body cannot name the concrete @@ -590,6 +813,87 @@ fn build_wrapper_method( }) } +/// Appends a generated Rust module path to a tokenized base path. +fn append_module_path(mut base: TokenStream2, module_path: &[syn::Ident]) -> TokenStream2 { + for ident in module_path { + base = quote! { #base :: #ident }; + } + base +} + +/// Verifies that a private FPI binding is the native signature plus the FPI ABI prefix. +fn validate_fpi_signature(native: &ItemFn, foreign: &ItemFn) -> syn::Result<()> { + if method_ident(foreign)? != native.sig.ident { + return Err(Error::new( + foreign.sig.ident.span(), + format!( + "generated private FPI function `{}` does not match native function `{}`", + foreign.sig.ident, native.sig.ident + ), + )); + } + + let foreign_inputs = foreign.sig.inputs.iter().collect::>(); + let native_inputs = native.sig.inputs.iter().collect::>(); + if foreign_inputs.len() != native_inputs.len() + 3 { + return Err(Error::new( + foreign.sig.ident.span(), + "generated FPI function is missing account id and procedure root parameters", + )); + } + + let expected_prefix: [syn::Type; 3] = [ + parse_quote!(::miden::Felt), + parse_quote!(::miden::Felt), + parse_quote!(::miden::Word), + ]; + for (input, expected) in foreign_inputs.iter().take(3).zip(&expected_prefix) { + let syn::FnArg::Typed(input) = input else { + return Err(Error::new_spanned( + input, + "generated FPI ABI prefix cannot contain a receiver", + )); + }; + if !tokens_equal(&input.ty, expected) { + return Err(Error::new_spanned( + &input.ty, + "generated FPI ABI prefix must be `felt, felt, word`", + )); + } + } + + for (native_input, foreign_input) in native_inputs.iter().zip(foreign_inputs.iter().skip(3)) { + let (syn::FnArg::Typed(native_input), syn::FnArg::Typed(foreign_input)) = + (native_input, foreign_input) + else { + return Err(Error::new_spanned( + foreign_input, + "generated import functions cannot contain receivers", + )); + }; + if !tokens_equal(&native_input.ty, &foreign_input.ty) { + return Err(Error::new_spanned( + &foreign_input.ty, + "generated FPI parameter type does not match its native function", + )); + } + } + + if !tokens_equal(&native.sig.output, &foreign.sig.output) { + return Err(Error::new_spanned( + &foreign.sig.output, + "generated FPI result type does not match its native function", + )); + } + + Ok(()) +} + +/// Compares syntax nodes after normalizing their token formatting. +fn tokens_equal(left: &impl ToTokens, right: &impl ToTokens) -> bool { + left.to_token_stream().to_string() == right.to_token_stream().to_string() +} + /// Builds the `AccountBinding` impl that exposes the wrapper's foreign-account id to the component /// traits, so their default methods can dispatch without touching the private field. fn account_binding_impl(account_struct: &ItemStruct) -> TokenStream2 { @@ -1072,6 +1376,61 @@ fn procedure_root_from_digest(digest: &miden_protocol::Word) -> ProcedureRoot { mod tests { use super::*; + #[test] + fn fpi_import_specs_are_sorted_injective_versioned_and_wit_legal() { + let imports = vec![ + "other:shared/api@1.0.0".to_string(), + "miden:shared/api@2.0.0".to_string(), + "miden:shared/api@1.0.0".to_string(), + "miden:shared/api@1.0.0".to_string(), + ]; + + let specs = import_specs(&imports); + let sources = specs.iter().map(FpiImportSpec::source_import).collect::>(); + assert_eq!( + sources, + ["miden:shared/api@1.0.0", "miden:shared/api@2.0.0", "other:shared/api@1.0.0",] + ); + + let synthetic = specs.iter().map(FpiImportSpec::synthetic_import).collect::>(); + assert_eq!(synthetic.len(), specs.len()); + for spec in &specs { + assert!(spec.synthetic_import().starts_with("miden-fpi-v1-x")); + assert!( + spec.synthetic_import() + .bytes() + .all(|byte| byte.is_ascii_lowercase() || byte.is_ascii_digit() || byte == b'-') + ); + assert_eq!( + spec.synthetic_import().len(), + "miden-fpi-v1-x".len() + spec.source_import().len() * 2 + ); + } + + assert_eq!(import_specs(&["miden:shared/api@1.0.0".to_string()])[0], specs[0]); + assert_ne!(specs[0].synthetic_import(), specs[1].synthetic_import()); + assert_ne!(specs[0].synthetic_import(), specs[2].synthetic_import()); + } + + #[test] + fn fpi_import_world_keeps_real_imports_separate_from_private_interfaces() { + let specs = import_specs(&[ + "miden:zebra/api@1.0.0".to_string(), + "miden:alpha/api@1.0.0".to_string(), + ]); + + let wit = import_world_wit("foreign-account-bindings", &specs); + + assert_eq!(wit.matches(&format!("import {CORE_TYPES_INTERFACE};")).count(), 1); + let alpha = wit.find("import miden:alpha/api@1.0.0;").unwrap(); + let zebra = wit.find("import miden:zebra/api@1.0.0;").unwrap(); + assert!(alpha < zebra, "world imports must be deterministic: {wit}"); + for spec in &specs { + assert!(wit.contains(&format!("import {};", spec.source_import()))); + assert!(wit.contains(&format!("import {}: interface {{}}", spec.synthetic_import()))); + } + } + #[test] fn procedure_root_key_uses_full_wit_interface_component() { let path = @@ -1273,7 +1632,11 @@ mod tests { #[test] fn build_wrapper_method_dispatches_through_account_binding() { - let func: ItemFn = parse_quote! { + let native_func: ItemFn = parse_quote! { + pub fn get_count(key: ::miden::Word) -> ::miden::Felt { + } + }; + let foreign_func: ItemFn = parse_quote! { pub fn fpi_get_count( account_id_prefix: ::miden::Felt, account_id_suffix: ::miden::Felt, @@ -1282,16 +1645,20 @@ mod tests { ) -> ::miden::Felt { } }; - let module_path = vec![quote::format_ident!("counter"), quote::format_ident!("counter")]; + let native_module_path = + vec![quote::format_ident!("counter"), quote::format_ident!("counter")]; + let foreign_module_path = vec![quote::format_ident!("miden_fpi_v1_x")]; let root = ProcedureRoot { felts: [1, 2, 3, 4], }; let method = build_wrapper_method( - &func, - &module_path, + &native_func, + &foreign_func, + &native_module_path, quote!(__miden_foreign_account_wallet), - &module_path, + &native_module_path, + &foreign_module_path, root, ) .expect("trait method must build"); @@ -1308,7 +1675,8 @@ mod tests { ); assert!(!rendered.contains("self . foreign_account_id"), "rendered: {rendered}"); // Both the FPI and native call targets are present. - assert!(rendered.contains("fpi_get_count"), "rendered: {rendered}"); + assert!(rendered.contains("miden_fpi_v1_x :: fpi_get_count"), "rendered: {rendered}"); + assert!(rendered.contains("counter :: counter :: get_count"), "rendered: {rendered}"); } #[test] @@ -1316,7 +1684,11 @@ mod tests { // A component method literally named `foreign_account_id` maps to a trait method of that // name; the dispatch reads the binding through the fully-qualified `AccountBinding` path, // so the component method does not interfere with it. - let func: ItemFn = parse_quote! { + let native_func: ItemFn = parse_quote! { + pub fn foreign_account_id() -> ::miden::AccountId { + } + }; + let foreign_func: ItemFn = parse_quote! { pub fn fpi_foreign_account_id( account_id_prefix: ::miden::Felt, account_id_suffix: ::miden::Felt, @@ -1324,13 +1696,23 @@ mod tests { ) -> ::miden::AccountId { } }; - let module_path = vec![quote::format_ident!("counter"), quote::format_ident!("counter")]; + let native_module_path = + vec![quote::format_ident!("counter"), quote::format_ident!("counter")]; + let foreign_module_path = vec![quote::format_ident!("miden_fpi_v1_x")]; let root = ProcedureRoot { felts: [1, 2, 3, 4], }; - let method = - build_wrapper_method(&func, &module_path, quote!(__b), &module_path, root).unwrap(); + let method = build_wrapper_method( + &native_func, + &foreign_func, + &native_module_path, + quote!(__b), + &native_module_path, + &foreign_module_path, + root, + ) + .unwrap(); let rendered = quote!(#method).to_string(); // The generated method is named `foreign_account_id` ... diff --git a/sdk/base-macros/src/generate.rs b/sdk/base-macros/src/generate.rs index 39ced3cbb..25cdc9360 100644 --- a/sdk/base-macros/src/generate.rs +++ b/sdk/base-macros/src/generate.rs @@ -20,7 +20,7 @@ use wit_bindgen_rust::{Opts, WithOption}; use crate::{fpi, manifest_paths}; /// Fully-qualified WIT interface path for Miden SDK core types. -const CORE_TYPES_INTERFACE: &str = "miden:base/core-types@1.0.0"; +pub(crate) const CORE_TYPES_INTERFACE: &str = "miden:base/core-types@1.0.0"; #[derive(Default)] struct GenerateArgs { @@ -173,16 +173,18 @@ fn generate_bindings( world, &args.with_entries, &[], + None, ) } -/// Generates inline WIT bindings and injects FPI imports for the selected dependency interfaces. +/// Generates inline WIT bindings and populates private FPI imports for selected dependencies. pub(crate) fn generate_inline_fpi_bindings( config: &manifest_paths::ResolvedWit, inline_source: &str, world: &str, - fpi_imports: &[String], + fpi_imports: &[fpi::FpiImportSpec], with_entries: &[(String, WithOption)], + type_section_suffix: &str, ) -> Result { generate_bindings_from_sources( &config.paths, @@ -190,6 +192,7 @@ pub(crate) fn generate_inline_fpi_bindings( Some(world), with_entries, fpi_imports, + Some(type_section_suffix), ) } @@ -209,6 +212,7 @@ pub(crate) fn generate_inline_import_bindings( Some(world), with_entries, &[], + None, ) } @@ -218,7 +222,8 @@ fn generate_bindings_from_sources( inline_source: Option<&str>, world: Option<&str>, with_entries: &[(String, WithOption)], - fpi_imports: &[String], + fpi_imports: &[fpi::FpiImportSpec], + type_section_suffix: Option<&str>, ) -> Result { let mut wit_sources = load_wit_sources(paths, inline_source)?; @@ -232,6 +237,7 @@ fn generate_bindings_from_sources( generate_all: true, runtime_path: Some("::miden::wit_bindgen::rt".to_string()), default_bindings_module: Some("bindings".to_string()), + type_section_suffix: type_section_suffix.map(str::to_owned), ..Opts::default() }; push_custom_with_entries(&mut opts, with_entries); @@ -891,4 +897,314 @@ world core-type-variant-world { assert!(world_uses_miden_core_types(&resolve, world)); } + + #[test] + fn synthetic_fpi_interface_preserves_source_types_and_generated_module_paths() { + const SOURCE_IMPORT: &str = "miden:typed-dependency/api@1.2.3"; + const TYPE_PATH: &str = "crate::bindings::miden::typed_dependency::api::Payload"; + + let mut resolve = Resolve::default(); + let sdk_group = + UnresolvedPackageGroup::parse("miden.wit", manifest_paths::SDK_WIT_SOURCE).unwrap(); + resolve.push_group(sdk_group).unwrap(); + let dependency = UnresolvedPackageGroup::parse( + "typed-dependency.wit", + r#" +package miden:typed-dependency@1.2.3; + +use miden:base/core-types@1.0.0; + +interface api { + use core-types.{felt, word}; + + type scalar-alias = u32; + + record payload { + value: scalar-alias, + key: word, + } + + variant request { + none, + payload(payload), + } + + enum mode { + fast, + thorough, + } + + flags permissions { + read, + write, + } + + type maybe-request = option; + type nested-result = result; + + primitive-roundtrip: func(value: u64) -> u32; + roundtrip: func(value: payload) -> payload; + choose: func(value: request) -> request; + set-mode: func(value: mode) -> mode; + set-permissions: func(value: permissions) -> permissions; + core-roundtrip: func(value: word) -> felt; + nested-roundtrip: func(value: maybe-request) -> nested-result; +} +"#, + ) + .unwrap(); + resolve.push_group(dependency).unwrap(); + + let specs = fpi::import_specs(&[SOURCE_IMPORT.to_string()]); + let inline = fpi::import_world_wit("fpi-type-test", &specs); + let group = UnresolvedPackageGroup::parse("inline", &inline).unwrap(); + let package = resolve.push_group(group).unwrap(); + let world = resolve.select_world(&[package], None).unwrap(); + + let source_id = resolve.worlds[world] + .imports + .values() + .filter_map(|item| match item { + WorldItem::Interface { id, .. } + if interface_matches(&resolve, *id, SOURCE_IMPORT) => + { + Some(*id) + } + _ => None, + }) + .next() + .expect("source interface must be imported"); + let source_before = resolve.interfaces[source_id].clone(); + let payload = resolve.interfaces[source_id].types["payload"]; + + fpi::inject_imports(&mut resolve, world, &specs).unwrap(); + assert_eq!(resolve.interfaces[source_id], source_before); + + let synthetic_id = resolve.worlds[world] + .imports + .iter() + .find_map(|(key, item)| match (key, item) { + ( + wit_bindgen_core::wit_parser::WorldKey::Name(name), + WorldItem::Interface { id, .. }, + ) if name == specs[0].synthetic_import() => Some(*id), + _ => None, + }) + .expect("synthetic interface must be imported"); + for (name, source_function) in &resolve.interfaces[source_id].functions { + let synthetic_function = &resolve.interfaces[synthetic_id].functions + [&format!("{}{}", fpi::WIT_FUNCTION_PREFIX, name)]; + assert_eq!(synthetic_function.params.len(), source_function.params.len() + 3); + for (source, synthetic) in + source_function.params.iter().zip(synthetic_function.params.iter().skip(3)) + { + assert_synthetic_type_alias(&resolve, synthetic_id, source.ty, synthetic.ty); + } + match (source_function.result, synthetic_function.result) { + (Some(source), Some(synthetic)) => { + assert_synthetic_type_alias(&resolve, synthetic_id, source, synthetic); + } + (None, None) => {} + result => panic!("source and synthetic results differ: {result:?}"), + } + } + let fpi_function = &resolve.interfaces[synthetic_id].functions["fpi-roundtrip"]; + let WitType::Id(payload_alias) = fpi_function.params[3].ty else { + panic!("dependency-owned payload must be represented by a local alias"); + }; + assert_eq!(fpi_function.result, Some(WitType::Id(payload_alias))); + assert_eq!(resolve.types[payload_alias].kind, TypeDefKind::Type(WitType::Id(payload))); + assert_eq!(resolve.types[payload_alias].owner, TypeOwner::Interface(synthetic_id)); + assert!( + resolve.interfaces[source_id] + .functions + .keys() + .all(|name| !name.starts_with(fpi::WIT_FUNCTION_PREFIX)) + ); + resolve.assert_valid(); + + let mut opts = Opts { + generate_all: true, + runtime_path: Some("::miden::wit_bindgen::rt".to_string()), + default_bindings_module: Some("bindings".to_string()), + ..Opts::default() + }; + opts.with + .push((format!("{SOURCE_IMPORT}/payload"), WithOption::Path(TYPE_PATH.to_string()))); + push_default_with_entries(&mut opts); + + let mut generated_files = wit_bindgen_core::Files::default(); + opts.build().generate(&mut resolve, world, &mut generated_files).unwrap(); + let (_, source) = generated_files.iter().next().unwrap(); + let file: syn::File = syn::parse_str(std::str::from_utf8(source).unwrap()).unwrap(); + let native_modules = + fpi::collect_import_modules(&file.items, &fpi::is_plain_import_function).unwrap(); + let foreign_modules = fpi::collect_import_modules(&file.items, &fpi::is_function).unwrap(); + let native = native_modules + .iter() + .find(|module| module.path_string == "miden::typed_dependency::api") + .expect("real import must keep its canonical generated module path"); + let foreign = foreign_modules + .iter() + .find(|module| module.path_string == specs[0].synthetic_module_path()) + .expect("synthetic import key must determine its generated module path"); + + let native_signature = native + .functions + .iter() + .find(|function| function.sig.ident == "roundtrip") + .unwrap() + .sig + .to_token_stream() + .to_string(); + let foreign_signature = foreign + .functions + .iter() + .find(|function| function.sig.ident == "fpi_roundtrip") + .unwrap() + .sig + .to_token_stream() + .to_string(); + let mapped_type = TYPE_PATH.replace("::", " :: "); + assert!(native_signature.contains(&mapped_type), "signature: {native_signature}"); + assert!(foreign_signature.contains(&mapped_type), "signature: {foreign_signature}"); + } + + /// Asserts that a synthetic function either reuses a primitive directly or owns an alias to + /// the original dependency type. + fn assert_synthetic_type_alias( + resolve: &Resolve, + synthetic_id: InterfaceId, + source: WitType, + synthetic: WitType, + ) { + let WitType::Id(source_id) = source else { + assert_eq!(synthetic, source); + return; + }; + let WitType::Id(alias_id) = synthetic else { + panic!("dependency type must be represented by a synthetic alias"); + }; + assert_eq!(resolve.types[alias_id].kind, TypeDefKind::Type(WitType::Id(source_id))); + assert_eq!(resolve.types[alias_id].owner, TypeOwner::Interface(synthetic_id)); + } + + #[test] + fn plain_repeated_distinct_and_versioned_fpi_worlds_merge_in_both_orders() { + const FIRST_IMPORT: &str = "miden:first-dependency/api@1.0.0"; + const SECOND_IMPORT: &str = "miden:second-dependency/api@1.0.0"; + const VERSION_ONE_IMPORT: &str = "miden:versioned-dependency/api@1.0.0"; + const VERSION_TWO_IMPORT: &str = "miden:versioned-dependency/api@2.0.0"; + + let cases = [ + (None, Some(vec![FIRST_IMPORT.to_string()])), + (Some(vec![FIRST_IMPORT.to_string()]), Some(vec![FIRST_IMPORT.to_string()])), + (Some(vec![FIRST_IMPORT.to_string()]), Some(vec![SECOND_IMPORT.to_string()])), + ( + Some(vec![VERSION_ONE_IMPORT.to_string()]), + Some(vec![VERSION_TWO_IMPORT.to_string()]), + ), + ]; + + for (first, second) in cases { + for reverse in [false, true] { + let (mut resolve, worlds) = + parse_merge_test_worlds(first.as_deref(), second.as_deref()); + let (from, into) = if reverse { + (worlds[1], worlds[0]) + } else { + (worlds[0], worlds[1]) + }; + let mut clone_maps = wit_bindgen_core::wit_parser::CloneMaps::default(); + resolve.merge_worlds(from, into, &mut clone_maps).unwrap(); + resolve.assert_valid(); + } + } + } + + /// Builds two plain-or-FPI worlds in one resolver for merge-order tests. + fn parse_merge_test_worlds( + first_imports: Option<&[String]>, + second_imports: Option<&[String]>, + ) -> (Resolve, [WorldId; 2]) { + const FIRST_IMPORT: &str = "miden:first-dependency/api@1.0.0"; + + let mut resolve = Resolve::default(); + let sdk_group = + UnresolvedPackageGroup::parse("miden.wit", manifest_paths::SDK_WIT_SOURCE).unwrap(); + resolve.push_group(sdk_group).unwrap(); + for (name, source) in [ + ( + "first-dependency.wit", + r#" +package miden:first-dependency@1.0.0; +interface api { + record payload { value: u32 } + roundtrip: func(value: payload) -> payload; +} +"#, + ), + ( + "second-dependency.wit", + r#" +package miden:second-dependency@1.0.0; +interface api { + variant payload { none, value(u64) } + roundtrip: func(value: payload) -> payload; +} +"#, + ), + ( + "versioned-dependency-v1.wit", + r#" +package miden:versioned-dependency@1.0.0; +interface api { + record payload { value: u32 } + roundtrip: func(value: payload) -> payload; +} +"#, + ), + ( + "versioned-dependency-v2.wit", + r#" +package miden:versioned-dependency@2.0.0; +interface api { + record payload { value: u64 } + roundtrip: func(value: payload) -> payload; +} +"#, + ), + ] { + let group = UnresolvedPackageGroup::parse(name, source).unwrap(); + resolve.push_group(group).unwrap(); + } + + let mut worlds = Vec::with_capacity(2); + for (world_name, imports) in + [("merge-first", first_imports), ("merge-second", second_imports)] + { + let (source, specs) = match imports { + Some(imports) => { + let specs = fpi::import_specs(imports); + (fpi::import_world_wit(world_name, &specs), Some(specs)) + } + None => ( + format!( + "package miden:{world_name}@1.0.0;\n\nworld {world_name} {{\n import \ + {FIRST_IMPORT};\n}}\n" + ), + None, + ), + }; + let group = UnresolvedPackageGroup::parse("inline", &source).unwrap(); + let package = resolve.push_group(group).unwrap(); + let world = resolve.select_world(&[package], None).unwrap(); + if let Some(specs) = specs { + fpi::inject_imports(&mut resolve, world, &specs).unwrap(); + } + worlds.push(world); + } + + (resolve, [worlds[0], worlds[1]]) + } } diff --git a/sdk/sdk/CHANGELOG.md b/sdk/sdk/CHANGELOG.md index e2b65afd9..d68d8e178 100644 --- a/sdk/sdk/CHANGELOG.md +++ b/sdk/sdk/CHANGELOG.md @@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed +- `#[account(...)]` now keeps canonical dependency WIT interfaces unchanged, fixing a rare + component-link failure when plain note, transaction-script, or sibling imports of a dependency + are linked with generated FPI bindings #1276 + ### BREAKING - Component methods must now be explicitly marked `#[account_procedure]` to be part of the account interface (callable as account procedures from transaction scripts, notes, foreign procedure diff --git a/tests/integration-network/src/mockchain/fpi.rs b/tests/integration-network/src/mockchain/fpi.rs index 0722f33f6..e6e787710 100644 --- a/tests/integration-network/src/mockchain/fpi.rs +++ b/tests/integration-network/src/mockchain/fpi.rs @@ -1,6 +1,7 @@ //! Foreign procedure invocation tests on a mock chain. mod account; +mod blind_import; mod common; mod note; mod raw; diff --git a/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs b/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs index fefb36166..2e8ab0d62 100644 --- a/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs +++ b/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs @@ -142,7 +142,15 @@ const CALLEE_ACCOUNT_SOURCE: &str = r#" #![no_std] #![feature(alloc_error_handler)] -use miden::{component, component_storage, Felt, StorageMap, Word}; +use miden::{component, component_storage, export_type, Felt, StorageMap, Word}; + +/// Request record owned by the callee dependency and passed through the caller account's FPI +/// bindings. +#[export_type] +pub struct CounterRequest { + /// Storage key whose counter value should be returned. + pub key: Word, +} /// Account component whose storage map holds one counter value. #[component_storage] @@ -157,14 +165,14 @@ struct CounterContractStorage { trait CounterContract { /// Returns the counter value stored under the provided key. #[account_procedure] - fn get_count(&self, key: Word) -> Felt; + fn get_count(&self, request: CounterRequest) -> Felt; } #[component] impl CounterContract for CounterContractStorage { /// Returns the counter value stored under the provided key. - fn get_count(&self, key: Word) -> Felt { - self.count_map.get(key) + fn get_count(&self, request: CounterRequest) -> Felt { + self.count_map.get(request.key) } } "#; @@ -176,6 +184,8 @@ const CALLER_ACCOUNT_SOURCE: &str = r#" use miden::{account, component, component_storage, felt, AccountId, Felt, Word}; +use crate::bindings::miden::account_to_account_callee_account::counter_contract::CounterRequest; + #[account(account_to_account_callee_account::CounterContract)] struct CalleeAccount; @@ -197,7 +207,7 @@ impl CallerAccount for CallerAccountStorage { fn read_foreign_count(&self, callee_account_id: AccountId) -> Felt { let callee = CalleeAccount::new(callee_account_id); let key = Word::new([felt!(13), felt!(21), felt!(34), felt!(55)]); - callee.get_count(key) + callee.get_count(CounterRequest { key }) } } "#; diff --git a/tests/integration-network/src/mockchain/fpi/blind_import.rs b/tests/integration-network/src/mockchain/fpi/blind_import.rs new file mode 100644 index 000000000..7f967ed79 --- /dev/null +++ b/tests/integration-network/src/mockchain/fpi/blind_import.rs @@ -0,0 +1,113 @@ +//! Regression coverage for canonical dependency interfaces imported both plainly and through FPI. + +use midenc_frontend_wasm::WasmTranslationConfig; +use midenc_integration_test_support::{CompilerTestBuilder, project}; + +use super::super::support::{ + account_cargo_toml_for, account_miden_project_toml_with_interface, compile_rust_package, + note_cargo_toml_for_dependency, note_miden_project_toml_for_dependency, +}; + +/// Compiles a note whose plain dependency import and FPI bindings describe the same interface. +/// +/// The note macro and `#[account]` both import the account dependency into their worlds. Before +/// the regression fix, `#[account]` also added generated `fpi-*` functions to that canonical +/// interface. The `template-test` package name gives the two incompatible component-type sections +/// the uncommon linker order which exposes the mismatch. +#[test] +fn plain_dependency_import_and_fpi_bindings_are_compatible() { + const ACCOUNT_NAME: &str = "basic-wallet"; + const ACCOUNT_PACKAGE: &str = "miden:basic-wallet"; + const NOTE_NAME: &str = "template-test"; + const NOTE_PACKAGE: &str = "miden:template-test"; + + let account_project = project("plain-import-and-fpi-basic-wallet") + .file( + "miden-project.toml", + &use_regression_version(account_miden_project_toml_with_interface( + ACCOUNT_NAME, + ACCOUNT_PACKAGE, + "basic-wallet", + )), + ) + .file( + "Cargo.toml", + &use_regression_version(account_cargo_toml_for(ACCOUNT_NAME, ACCOUNT_PACKAGE)), + ) + .file("src/lib.rs", BASIC_WALLET_SOURCE) + .build(); + let _account_package = compile_rust_package(account_project.root(), true); + + let account_root = account_project.root(); + let note_project = project(NOTE_NAME) + .file( + "miden-project.toml", + &use_regression_version(note_miden_project_toml_for_dependency( + NOTE_NAME, + NOTE_PACKAGE, + ACCOUNT_PACKAGE, + &account_root, + )), + ) + .file( + "Cargo.toml", + &use_regression_version(note_cargo_toml_for_dependency( + NOTE_NAME, + NOTE_PACKAGE, + ACCOUNT_PACKAGE, + &account_root, + )), + ) + .file("src/lib.rs", TEMPLATE_TEST_NOTE_SOURCE) + .build(); + + let mut note_builder = CompilerTestBuilder::rust_source_cargo_miden( + note_project.root(), + WasmTranslationConfig::default(), + [], + ); + note_builder.with_release(false); + let mut note_test = note_builder.build(); + let _note_package = note_test.compile_package(); +} + +/// Updates generated fixture manifests to the package version which exposes the linker ordering. +fn use_regression_version(manifest: String) -> String { + manifest.replace("0.0.1", "0.1.0") +} + +/// Account component source used to produce the canonical basic-wallet interface. +const BASIC_WALLET_SOURCE: &str = include_str!("../../../../../examples/basic-wallet/src/lib.rs"); + +/// Note source containing plain and FPI views of the same basic-wallet dependency. +const TEMPLATE_TEST_NOTE_SOURCE: &str = r#" +#![no_std] +#![feature(alloc_error_handler)] + +use miden::{AccountId, Word, account, active_note, note}; + +/// Native or foreign basic-wallet account bindings. +#[account(basic_wallet::BasicWallet)] +struct Wallet; + +/// Note which receives its assets into the requested account. +#[note] +struct BlindImportNote { + /// Account allowed to consume this note. + target_account_id: AccountId, +} + +#[note] +impl BlindImportNote { + /// Checks the consumer and transfers every note asset through the wallet binding. + #[note_script] + pub fn script(self, _arg: Word, account: &mut Wallet) { + assert_eq!(account.get_id(), self.target_account_id); + + let assets = active_note::get_assets(); + for asset in assets { + account.receive_asset(asset); + } + } +} +"#; diff --git a/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs b/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs index 73adf77cd..075209de9 100644 --- a/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs @@ -92,6 +92,17 @@ use crate::bindings::miden::mixed_scalar_struct_account::counter_contract::Mixed #[account(mixed_scalar_struct_account::CounterContract)] struct Counter; +/// Holds a same-named second wrapper for the same dependency in a separate Rust module. +mod mirror { + use super::*; + + /// Second wrapper ensuring repeated private FPI imports and custom sections remain distinct. + #[account(mixed_scalar_struct_account::CounterContract as MirrorCounterContract)] + pub struct Counter; +} + +use mirror::MirrorCounterContract as _; + /// First double-word value used by the mixed scalar record FPI test. const FIRST_U64: u64 = 0x0000_0001_0000_0002; /// Second double-word value used by the mixed scalar record FPI test. @@ -121,12 +132,20 @@ impl CounterCaller { u32_value: U32_VALUE, u8_value: U8_VALUE, }); + let mirror = mirror::Counter::new(self.counter_account_id); + let mirrored = mirror.echo_mixed_scalar_record(MixedScalarRecord { + first_u64: result.first_u64, + second_u64: result.second_u64, + felt_value: result.felt_value, + u32_value: result.u32_value, + u8_value: result.u8_value, + }); - assert_u64_eq(result.first_u64, FIRST_U64); - assert_u64_eq(result.second_u64, SECOND_U64); - assert_eq(result.felt_value, felt!(77)); - assert_eq(Felt::from_u32(result.u32_value), Felt::from_u32(U32_VALUE)); - assert_eq(Felt::from_u32(result.u8_value as u32), Felt::from_u32(U8_VALUE as u32)); + assert_u64_eq(mirrored.first_u64, FIRST_U64); + assert_u64_eq(mirrored.second_u64, SECOND_U64); + assert_eq(mirrored.felt_value, felt!(77)); + assert_eq(Felt::from_u32(mirrored.u32_value), Felt::from_u32(U32_VALUE)); + assert_eq(Felt::from_u32(mirrored.u8_value as u32), Felt::from_u32(U8_VALUE as u32)); } } diff --git a/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs b/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs index fd39ca803..9bc9bf5de 100644 --- a/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs +++ b/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs @@ -5,8 +5,8 @@ //! `#[account(...)]` wrapper against a copy deployed on a second, foreign account. Because both //! macros generate a trait named after the interface, the `#[account]` reference uses an //! `as RemoteCounter` alias so its FPI trait does not collide with the sibling `CounterContract` -//! trait. This also exercises the same WIT interface being imported by the sibling bindings (plain -//! functions only) and the `#[account]` bindings (plain + `fpi-*` functions) in one crate. +//! trait. This also exercises the same canonical WIT interface being imported unchanged by both +//! sibling and `#[account]` bindings, alongside the private synthetic interface used for FPI. use miden_client::{ account::{ @@ -140,7 +140,15 @@ const COUNTER_CONTRACT_SOURCE: &str = r#" #![no_std] #![feature(alloc_error_handler)] -use miden::{component, component_storage, felt, Felt, StorageMap, Word}; +use miden::{component, component_storage, export_type, felt, Felt, StorageMap, Word}; + +/// Key record owned by the shared counter dependency and used through both sibling and FPI +/// bindings. +#[export_type] +pub struct CounterKey { + /// Storage-map key for the counter. + pub value: Word, +} /// Account component whose storage map holds one counter value. #[component_storage] @@ -155,21 +163,21 @@ struct CounterContractStorage { trait CounterContract { /// Returns the counter value stored under the provided key. #[account_procedure] - fn get_count(&self, key: Word) -> Felt; + fn get_count(&self, key: CounterKey) -> Felt; /// Increments the counter value stored under the provided key, returning the new value. #[account_procedure] - fn increment_count(&mut self, key: Word) -> Felt; + fn increment_count(&mut self, key: CounterKey) -> Felt; } #[component] impl CounterContract for CounterContractStorage { - fn get_count(&self, key: Word) -> Felt { - self.count_map.get(key) + fn get_count(&self, key: CounterKey) -> Felt { + self.count_map.get(key.value) } - fn increment_count(&mut self, key: Word) -> Felt { - let new_value = self.count_map.get(key) + felt!(1); - self.count_map.set(key, new_value); + fn increment_count(&mut self, key: CounterKey) -> Felt { + let new_value = self.count_map.get(key.value) + felt!(1); + self.count_map.set(key.value, new_value); new_value } } @@ -185,14 +193,16 @@ use miden::{ AccountId, Felt, Word, }; +use crate::bindings::miden::sibling_and_fpi_counter_account::counter_contract::CounterKey; + /// Foreign binding to a second account holding the same counter component package. /// /// The sibling `#[component(..::CounterContract)]` below already generates a `CounterContract` /// trait in this crate, so the `#[account]` reference uses an `as RemoteCounter` alias: it still /// selects the `counter-contract` interface, but names its generated FPI trait `RemoteCounter` to /// avoid the clash. Keeping the wrapper at crate scope (rather than a submodule) also keeps the -/// two `counter-contract` imports — plain for the sibling, plain + `fpi-*` for the account — -/// mergeable at componentization. +/// two canonical `counter-contract` imports identical while FPI functions live under a private +/// synthetic interface. #[account(sibling_and_fpi_counter_account::CounterContract as RemoteCounter)] struct Remote; @@ -213,12 +223,12 @@ impl CallerAccount for CallerAccountStorage { fn bump_local_read_remote(&mut self, remote_account_id: AccountId) -> Felt { let key = Word::new([felt!(13), felt!(21), felt!(34), felt!(55)]); // Intra-account sibling call through the sibling `CounterContract` trait. - let before = self.get_count(key); - let after = self.increment_count(key); + let before = self.get_count(CounterKey { value: key }); + let after = self.increment_count(CounterKey { value: key }); assert_eq(after, before + felt!(1)); // Inter-account FPI call through the aliased `RemoteCounter` trait. let remote = Remote::new(remote_account_id); - remote.get_count(key) + remote.get_count(CounterKey { value: key }) } } "#; From 4d0a087569139c74a6ec62f166f20e954c71202b Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Fri, 10 Jul 2026 16:40:01 +0300 Subject: [PATCH 05/23] fix(sdk): stabilize synthetic FPI binding identities FPI binding interfaces and component metadata need distinct identities when the same dependency is imported through multiple account wrappers. Encoding source text and positions made otherwise identical builds sensitive to harmless code movement, while opaque hexadecimal names obscured generated imports. Create readable canonical synthetic package identities and scope component metadata sections with the generated Rust module path. This preserves the original dependency interface and keeps repeated bindings distinct without coupling package output to source locations. --- sdk/base-macros/src/foreign_account.rs | 31 +- sdk/base-macros/src/fpi.rs | 335 ++++++++++++++---- sdk/base-macros/src/generate.rs | 136 ++++++- .../fpi/account/account_to_account.rs | 18 +- .../src/mockchain/fpi/blind_import.rs | 124 ++++++- .../mockchain/fpi/note/mixed_scalar_struct.rs | 29 +- .../src/mockchain/sibling/sibling_and_fpi.rs | 28 +- 7 files changed, 521 insertions(+), 180 deletions(-) diff --git a/sdk/base-macros/src/foreign_account.rs b/sdk/base-macros/src/foreign_account.rs index 5d816763c..02d2700de 100644 --- a/sdk/base-macros/src/foreign_account.rs +++ b/sdk/base-macros/src/foreign_account.rs @@ -1,7 +1,5 @@ //! Attribute macro for explicit active and foreign account bindings. -use std::{env, fmt::Write as _}; - use heck::ToSnakeCase; use proc_macro2::{Ident, Span}; use quote::format_ident; @@ -54,12 +52,10 @@ fn expand_inner( .iter() .map(|dependency| dependency.import().to_owned()) .collect::>(); - let fpi_imports = fpi::import_specs(&imports); + let fpi_imports = fpi::import_specs(&imports)?; let with_entries = fpi::dependency_type_with_entries(&dependencies); let inline_wit = fpi::import_world_wit(FOREIGN_ACCOUNT_WORLD, &fpi_imports); let binding_module_ident = binding_module_ident(&account_struct.ident); - let type_section_suffix = - type_section_suffix(&binding_module_ident, account_struct.ident.span()); let wit_config = manifest_paths::resolve_wit_paths(manifest_paths::ResolveOptions { allow_missing_local_wit: true, })?; @@ -69,7 +65,6 @@ fn expand_inner( FOREIGN_ACCOUNT_WORLD, &fpi_imports, &with_entries, - &type_section_suffix, )?; fpi::augment_foreign_account_bindings( @@ -157,30 +152,6 @@ fn binding_module_ident(account_ident: &Ident) -> Ident { format_ident!("__miden_foreign_account_{}", account_ident.to_string().to_snake_case()) } -/// Builds a per-expansion suffix for wit-bindgen's component-type custom section. -fn type_section_suffix(binding_module: &Ident, span: Span) -> String { - // The Wasm linker concatenates same-named custom sections, so even identical repeated - // `#[account]` bindings need distinct section names. The call site also distinguishes - // same-named wrappers declared in separate Rust modules. - let span = span.unwrap(); - let start = span.start(); - let end = span.end(); - let package = env::var("CARGO_PKG_NAME").unwrap_or_default(); - let seed = format!( - "{package}\0{}\0{}:{}..{}:{}", - span.file(), - start.line(), - start.column(), - end.line(), - end.column() - ); - let mut suffix = format!(":{binding_module}-x"); - for byte in seed.bytes() { - write!(suffix, "{byte:02x}").expect("writing to an in-memory string cannot fail"); - } - suffix -} - #[cfg(test)] mod tests { use super::*; diff --git a/sdk/base-macros/src/fpi.rs b/sdk/base-macros/src/fpi.rs index 13ac3b823..acde45fe9 100644 --- a/sdk/base-macros/src/fpi.rs +++ b/sdk/base-macros/src/fpi.rs @@ -13,13 +13,15 @@ use miden_assembly_syntax::ast::{Path as MasmPath, PathComponent}; use miden_mast_package::{Package, PackageExport}; use proc_macro2::{Span, TokenStream as TokenStream2}; use quote::{ToTokens, quote}; +use semver::Version; use syn::{ Attribute, Error, File, Item, ItemFn, ItemImpl, ItemStruct, ReturnType, TraitItemFn, parse_quote, }; use wit_bindgen_core::wit_parser::{ - Docs, Function, FunctionKind, InterfaceId, Param, Resolve, Span as WitSpan, Type as WitType, - TypeDef, TypeDefKind, TypeId, TypeOwner, WorldId, WorldItem, WorldKey, + Docs, Function, FunctionKind, Interface, InterfaceId, Package as WitPackage, PackageName, + Param, Resolve, Span as WitSpan, Type as WitType, TypeDef, TypeDefKind, TypeId, TypeOwner, + WorldId, WorldItem, WorldKey, }; #[cfg(test)] @@ -42,30 +44,38 @@ pub(crate) const RUST_FUNCTION_PREFIX: &str = "fpi_"; /// Version of the private synthetic interface contract used for generated FPI imports. const FPI_ABI_VERSION: &str = "v1"; -/// Prefix for private synthetic FPI world-import keys. -const FPI_IMPORT_PREFIX: &str = "miden-fpi"; +/// Prefix for private synthetic FPI package names. +const FPI_PACKAGE_PREFIX: &str = "fpi"; /// Maps one real dependency interface to its private synthetic FPI interface. #[derive(Clone, Debug, Eq, PartialEq)] pub(crate) struct FpiImportSpec { /// Fully-qualified real dependency interface, including its version. source_import: String, - /// WIT world-import key for the private synthetic interface. + /// Canonical package identity which owns the private synthetic interface. + synthetic_package: PackageName, + /// Interface name retained from the source dependency. + synthetic_interface: String, + /// Fully-qualified private synthetic interface identity. synthetic_import: String, } impl FpiImportSpec { /// Creates a deterministic FPI import specification for `source_import`. - fn new(source_import: String) -> Self { - let mut synthetic_import = format!("{FPI_IMPORT_PREFIX}-{FPI_ABI_VERSION}-x"); - for byte in source_import.bytes() { - write!(synthetic_import, "{byte:02x}") - .expect("writing to an in-memory string cannot fail"); - } - Self { + fn new(source_import: String) -> syn::Result { + let (source_package, synthetic_interface) = parse_interface_id(&source_import)?; + let synthetic_package = PackageName { + namespace: source_package.namespace, + name: format!("{FPI_PACKAGE_PREFIX}-{FPI_ABI_VERSION}-{}", source_package.name), + version: source_package.version, + }; + let synthetic_import = synthetic_package.interface_id(&synthetic_interface); + Ok(Self { source_import, + synthetic_package, + synthetic_interface, synthetic_import, - } + }) } /// Returns the fully-qualified real dependency interface. @@ -73,19 +83,49 @@ impl FpiImportSpec { &self.source_import } - /// Returns the private synthetic WIT world-import key. + /// Returns the canonical private synthetic interface identity. pub(crate) fn synthetic_import(&self) -> &str { &self.synthetic_import } /// Returns the Rust module path generated for the private synthetic interface. pub(crate) fn synthetic_module_path(&self) -> String { - self.synthetic_import.to_snake_case() + import_module_path(&self.synthetic_import) } } +/// Parses a fully-qualified WIT interface ID into its package and interface components. +fn parse_interface_id(import: &str) -> syn::Result<(PackageName, String)> { + let invalid = || { + Error::new( + Span::call_site(), + format!( + "invalid FPI dependency interface `{import}`; expected \ + `namespace:package/interface@version`" + ), + ) + }; + let (namespace, package_and_interface) = import.split_once(':').ok_or_else(invalid)?; + let (package, interface_and_version) = + package_and_interface.split_once('/').ok_or_else(invalid)?; + let (interface, version) = interface_and_version.rsplit_once('@').ok_or_else(invalid)?; + if namespace.is_empty() || package.is_empty() || interface.is_empty() || version.is_empty() { + return Err(invalid()); + } + let version = Version::parse(version).map_err(|_| invalid())?; + + Ok(( + PackageName { + namespace: namespace.to_string(), + name: package.to_string(), + version: Some(version), + }, + interface.to_string(), + )) +} + /// Builds sorted, deduplicated FPI import specifications. -pub(crate) fn import_specs(imports: &[String]) -> Vec { +pub(crate) fn import_specs(imports: &[String]) -> syn::Result> { let mut imports = imports.to_vec(); imports.sort_unstable(); imports.dedup(); @@ -105,8 +145,6 @@ pub(crate) fn import_world_wit(name: &str, imports: &[FpiImportSpec]) -> String writeln!(wit, " import {};", import.source_import()) .expect("writing to an in-memory string cannot fail"); } - writeln!(wit, " import {}: interface {{}}", import.synthetic_import()) - .expect("writing to an in-memory string cannot fail"); } wit.push_str("}\n"); wit @@ -125,13 +163,22 @@ pub(crate) fn inject_imports( let core_types = resolve_core_types(resolve)?; for import in imports { let source_id = find_source_interface(resolve, world_id, import.source_import())?; - let synthetic_id = find_synthetic_interface(resolve, world_id, import.synthetic_import())?; + let (synthetic_id, created) = ensure_synthetic_interface(resolve, import)?; validate_reserved_fpi_namespace( import.source_import(), resolve.interfaces[source_id].functions.values(), )?; - inject_functions_into_synthetic_interface(resolve, source_id, synthetic_id, core_types)?; + if created { + inject_functions_into_synthetic_interface( + resolve, + source_id, + synthetic_id, + core_types, + )?; + } + validate_synthetic_interface(resolve, source_id, synthetic_id, core_types)?; + import_synthetic_interface(resolve, world_id, synthetic_id, import.synthetic_import())?; } #[cfg(debug_assertions)] @@ -162,29 +209,71 @@ fn find_source_interface( }) } -/// Finds a private inline interface by its explicit world-import key. -fn find_synthetic_interface( - resolve: &Resolve, +/// Finds or creates the canonical private interface for one FPI dependency. +fn ensure_synthetic_interface( + resolve: &mut Resolve, + import: &FpiImportSpec, +) -> syn::Result<(InterfaceId, bool)> { + let package_id = match resolve.package_names.get(&import.synthetic_package) { + Some(id) => *id, + None => { + let id = resolve.packages.alloc(WitPackage { + name: import.synthetic_package.clone(), + docs: Docs::default(), + interfaces: Default::default(), + worlds: Default::default(), + }); + resolve.package_names.insert(import.synthetic_package.clone(), id); + id + } + }; + + if let Some(id) = resolve.packages[package_id] + .interfaces + .get(&import.synthetic_interface) + .copied() + { + return Ok((id, false)); + } + + let id = resolve.interfaces.alloc(Interface { + name: Some(import.synthetic_interface.clone()), + types: Default::default(), + functions: Default::default(), + docs: Docs::default(), + stability: Default::default(), + package: Some(package_id), + span: WitSpan::default(), + clone_of: None, + }); + resolve.packages[package_id] + .interfaces + .insert(import.synthetic_interface.clone(), id); + Ok((id, true)) +} + +/// Imports one canonical synthetic interface into the generated binding world. +fn import_synthetic_interface( + resolve: &mut Resolve, world_id: WorldId, + synthetic_id: InterfaceId, synthetic_import: &str, -) -> syn::Result { - resolve.worlds[world_id] - .imports - .iter() - .find_map(|(key, item)| match (key, item) { - (WorldKey::Name(name), WorldItem::Interface { id, .. }) if name == synthetic_import => { - Some(*id) - } - _ => None, - }) - .ok_or_else(|| { - Error::new( - Span::call_site(), - format!( - "failed to resolve private FPI interface `{synthetic_import}` in import world" - ), - ) - }) +) -> syn::Result<()> { + let previous = resolve.worlds[world_id].imports.insert( + WorldKey::Interface(synthetic_id), + WorldItem::Interface { + id: synthetic_id, + stability: Default::default(), + span: WitSpan::default(), + }, + ); + if previous.is_some() { + return Err(Error::new( + Span::call_site(), + format!("duplicate private FPI interface `{synthetic_import}` in import world"), + )); + } + Ok(()) } /// Determines whether a generated free function represents an FPI WIT import. @@ -360,6 +449,126 @@ fn inject_functions_into_synthetic_interface( Ok(()) } +/// Verifies that a reused canonical FPI interface matches its source dependency. +fn validate_synthetic_interface( + resolve: &Resolve, + source_id: InterfaceId, + synthetic_id: InterfaceId, + core_types: CoreTypes, +) -> syn::Result<()> { + let source_functions = resolve.interfaces[source_id] + .functions + .values() + .filter(|function| { + matches!(function.kind, FunctionKind::Freestanding) + && !function.name.starts_with(WIT_FUNCTION_PREFIX) + }) + .collect::>(); + let synthetic = &resolve.interfaces[synthetic_id]; + let invalid = || { + Error::new( + Span::call_site(), + format!( + "canonical private FPI interface `{}` is incompatible with source interface `{}`", + interface_import_path(resolve, synthetic_id) + .unwrap_or_else(|| "".to_string()), + interface_import_path(resolve, source_id) + .unwrap_or_else(|| "".to_string()) + ), + ) + }; + + if synthetic.functions.len() != source_functions.len() { + return Err(invalid()); + } + + let expected_prefix = [ + ("account-id-prefix", core_types.felt), + ("account-id-suffix", core_types.felt), + ("foreign-proc-root", core_types.word), + ]; + let mut aliases = HashMap::new(); + for source in source_functions { + let name = format!("{WIT_FUNCTION_PREFIX}{}", source.name); + let Some(function) = synthetic.functions.get(&name) else { + return Err(invalid()); + }; + if !matches!(function.kind, FunctionKind::Freestanding) + || function.params.len() != source.params.len() + expected_prefix.len() + { + return Err(invalid()); + } + for (param, (name, ty)) in function.params.iter().zip(expected_prefix).take(3) { + if param.name != name + || !synthetic_type_matches(resolve, synthetic_id, ty, param.ty, &mut aliases) + { + return Err(invalid()); + } + } + for (source, generated) in source.params.iter().zip(function.params.iter().skip(3)) { + if source.name != generated.name + || !synthetic_type_matches( + resolve, + synthetic_id, + source.ty, + generated.ty, + &mut aliases, + ) + { + return Err(invalid()); + } + } + match (source.result, function.result) { + (Some(source), Some(generated)) + if synthetic_type_matches( + resolve, + synthetic_id, + source, + generated, + &mut aliases, + ) => {} + (None, None) => {} + _ => return Err(invalid()), + } + } + + let alias_ids = aliases.values().copied().collect::>(); + if synthetic.types.len() != alias_ids.len() + || synthetic.types.values().any(|id| !alias_ids.contains(id)) + { + return Err(invalid()); + } + + Ok(()) +} + +/// Checks that a generated type is either unchanged or aliases its dependency-owned source type. +fn synthetic_type_matches( + resolve: &Resolve, + synthetic_id: InterfaceId, + source: WitType, + generated: WitType, + aliases: &mut HashMap, +) -> bool { + let WitType::Id(source_id) = source else { + return source == generated; + }; + let WitType::Id(alias_id) = generated else { + return false; + }; + if aliases.get(&source_id).is_some_and(|expected| *expected != alias_id) { + return false; + } + let alias = &resolve.types[alias_id]; + if alias.owner != TypeOwner::Interface(synthetic_id) + || alias.kind != TypeDefKind::Type(WitType::Id(source_id)) + { + return false; + } + aliases.insert(source_id, alias_id); + true +} + /// Replaces cross-interface function types with local aliases to their original definitions. fn alias_function_types( resolve: &mut Resolve, @@ -456,8 +665,8 @@ fn build_import_function(function: Function, fpi_name: String, core_types: CoreT params, result: function.result, docs: Docs::default(), - // The generated function belongs to the private inline package, so source-package feature - // metadata cannot be copied across package ownership boundaries. + // The generated function belongs to a private synthetic package, so source-package + // feature metadata cannot be copied across package ownership boundaries. stability: Default::default(), span: WitSpan::default(), } @@ -1376,8 +1585,9 @@ fn procedure_root_from_digest(digest: &miden_protocol::Word) -> ProcedureRoot { mod tests { use super::*; + /// Builds readable canonical FPI identities without conflating packages or versions. #[test] - fn fpi_import_specs_are_sorted_injective_versioned_and_wit_legal() { + fn fpi_import_specs_are_sorted_readable_injective_and_versioned() { let imports = vec![ "other:shared/api@1.0.0".to_string(), "miden:shared/api@2.0.0".to_string(), @@ -1385,7 +1595,7 @@ mod tests { "miden:shared/api@1.0.0".to_string(), ]; - let specs = import_specs(&imports); + let specs = import_specs(&imports).unwrap(); let sources = specs.iter().map(FpiImportSpec::source_import).collect::>(); assert_eq!( sources, @@ -1394,30 +1604,28 @@ mod tests { let synthetic = specs.iter().map(FpiImportSpec::synthetic_import).collect::>(); assert_eq!(synthetic.len(), specs.len()); - for spec in &specs { - assert!(spec.synthetic_import().starts_with("miden-fpi-v1-x")); - assert!( - spec.synthetic_import() - .bytes() - .all(|byte| byte.is_ascii_lowercase() || byte.is_ascii_digit() || byte == b'-') - ); - assert_eq!( - spec.synthetic_import().len(), - "miden-fpi-v1-x".len() + spec.source_import().len() * 2 - ); - } + assert_eq!( + specs.iter().map(FpiImportSpec::synthetic_import).collect::>(), + [ + "miden:fpi-v1-shared/api@1.0.0", + "miden:fpi-v1-shared/api@2.0.0", + "other:fpi-v1-shared/api@1.0.0", + ] + ); - assert_eq!(import_specs(&["miden:shared/api@1.0.0".to_string()])[0], specs[0]); + assert_eq!(import_specs(&["miden:shared/api@1.0.0".to_string()]).unwrap()[0], specs[0]); assert_ne!(specs[0].synthetic_import(), specs[1].synthetic_import()); assert_ne!(specs[0].synthetic_import(), specs[2].synthetic_import()); } + /// Keeps canonical source imports in WIT while synthetic packages are injected after resolve. #[test] fn fpi_import_world_keeps_real_imports_separate_from_private_interfaces() { let specs = import_specs(&[ "miden:zebra/api@1.0.0".to_string(), "miden:alpha/api@1.0.0".to_string(), - ]); + ]) + .unwrap(); let wit = import_world_wit("foreign-account-bindings", &specs); @@ -1427,10 +1635,17 @@ mod tests { assert!(alpha < zebra, "world imports must be deterministic: {wit}"); for spec in &specs { assert!(wit.contains(&format!("import {};", spec.source_import()))); - assert!(wit.contains(&format!("import {}: interface {{}}", spec.synthetic_import()))); + assert!(!wit.contains(spec.synthetic_import())); } } + /// Rejects dependency identifiers which cannot define a canonical synthetic package. + #[test] + fn fpi_import_specs_reject_noncanonical_interfaces() { + let error = import_specs(&["miden:wallet/api".to_string()]).unwrap_err(); + assert!(error.to_string().contains("namespace:package/interface@version")); + } + #[test] fn procedure_root_key_uses_full_wit_interface_component() { let path = diff --git a/sdk/base-macros/src/generate.rs b/sdk/base-macros/src/generate.rs index 25cdc9360..af31fad81 100644 --- a/sdk/base-macros/src/generate.rs +++ b/sdk/base-macros/src/generate.rs @@ -5,6 +5,7 @@ use quote::{ToTokens, quote}; use syn::{ Error, FnArg, Item, ItemFn, LitStr, Pat, Token, TypePath, parse::{Parse, ParseStream}, + parse_quote, spanned::Spanned, visit_mut::VisitMut, }; @@ -173,7 +174,7 @@ fn generate_bindings( world, &args.with_entries, &[], - None, + false, ) } @@ -184,7 +185,6 @@ pub(crate) fn generate_inline_fpi_bindings( world: &str, fpi_imports: &[fpi::FpiImportSpec], with_entries: &[(String, WithOption)], - type_section_suffix: &str, ) -> Result { generate_bindings_from_sources( &config.paths, @@ -192,7 +192,7 @@ pub(crate) fn generate_inline_fpi_bindings( Some(world), with_entries, fpi_imports, - Some(type_section_suffix), + true, ) } @@ -212,7 +212,7 @@ pub(crate) fn generate_inline_import_bindings( Some(world), with_entries, &[], - None, + false, ) } @@ -223,7 +223,7 @@ fn generate_bindings_from_sources( world: Option<&str>, with_entries: &[(String, WithOption)], fpi_imports: &[fpi::FpiImportSpec], - type_section_suffix: Option<&str>, + scope_component_type_sections: bool, ) -> Result { let mut wit_sources = load_wit_sources(paths, inline_source)?; @@ -237,7 +237,6 @@ fn generate_bindings_from_sources( generate_all: true, runtime_path: Some("::miden::wit_bindgen::rt".to_string()), default_bindings_module: Some("bindings".to_string()), - type_section_suffix: type_section_suffix.map(str::to_owned), ..Opts::default() }; push_custom_with_entries(&mut opts, with_entries); @@ -257,9 +256,12 @@ fn generate_bindings_from_sources( .ok_or_else(|| Error::new(Span::call_site(), "wit-bindgen emitted no bindings"))?; let src = std::str::from_utf8(src_bytes) .map_err(|err| Error::new(Span::call_site(), format!("invalid UTF-8: {err}")))?; - let mut tokens: TokenStream2 = src - .parse() + let mut file = syn::parse_file(src) .map_err(|err| Error::new(Span::call_site(), format!("failed to parse bindings: {err}")))?; + if scope_component_type_sections { + append_module_path_to_component_type_sections(&mut file)?; + } + let mut tokens = file.into_token_stream(); // Include a dummy `include_bytes!` for any files we read so rustc knows that // we depend on the contents of those files. @@ -278,6 +280,73 @@ fn generate_bindings_from_sources( Ok(tokens) } +/// Appends the generated binding module path to every component-metadata section name. +fn append_module_path_to_component_type_sections(file: &mut syn::File) -> Result<(), Error> { + /// Rewrites generated component-metadata attributes in place. + struct SectionVisitor { + rewritten: usize, + error: Option, + } + + impl VisitMut for SectionVisitor { + fn visit_attribute_mut(&mut self, attribute: &mut syn::Attribute) { + if self.error.is_some() || !attribute.path().is_ident("unsafe") { + return; + } + let syn::Meta::List(unsafe_meta) = &attribute.meta else { + return; + }; + let Ok(syn::Meta::NameValue(link_section)) = + syn::parse2::(unsafe_meta.tokens.clone()) + else { + return; + }; + if !link_section.path.is_ident("link_section") { + return; + } + let syn::Expr::Lit(value) = &link_section.value else { + self.error = Some(Error::new_spanned( + &link_section.value, + "wit-bindgen component metadata section name must be a string literal", + )); + return; + }; + let syn::Lit::Str(section_name) = &value.lit else { + self.error = Some(Error::new_spanned( + &value.lit, + "wit-bindgen component metadata section name must be a string literal", + )); + return; + }; + if !section_name.value().starts_with("component-type") { + return; + } + + let section_name = section_name.clone(); + attribute.meta = parse_quote! { + unsafe(link_section = concat!(#section_name, ":", module_path!())) + }; + self.rewritten += 1; + } + } + + let mut visitor = SectionVisitor { + rewritten: 0, + error: None, + }; + visitor.visit_file_mut(file); + if let Some(error) = visitor.error { + return Err(error); + } + if visitor.rewritten == 0 { + return Err(Error::new( + Span::call_site(), + "wit-bindgen emitted no component metadata section to scope to the account binding", + )); + } + Ok(()) +} + /// Result of loading and parsing WIT sources from file paths and optional inline content. struct LoadedWitSources { /// The resolved WIT definitions containing all types, interfaces, and worlds. @@ -668,6 +737,36 @@ pub(crate) fn format_module_path(path: &[syn::Ident]) -> String { mod tests { use super::*; + /// Rewrites component metadata to use semantic Rust module identity. + #[test] + fn component_type_sections_use_the_stable_rust_module_path() { + let mut file: syn::File = syn::parse_quote! { + #[unsafe(link_section = "component-type:wit-bindgen:test")] + static COMPONENT_TYPE: [u8; 1] = [0]; + }; + + append_module_path_to_component_type_sections(&mut file).unwrap(); + + let Item::Static(item) = &file.items[0] else { + panic!("fixture must remain a static item"); + }; + let syn::Meta::List(unsafe_meta) = &item.attrs[0].meta else { + panic!("link section must remain wrapped in an unsafe attribute"); + }; + let syn::Meta::NameValue(link_section) = + syn::parse2::(unsafe_meta.tokens.clone()).unwrap() + else { + panic!("unsafe attribute must contain link_section metadata"); + }; + let syn::Expr::Macro(section_name) = &link_section.value else { + panic!("link section must be assembled by concat!"); + }; + assert!(section_name.mac.path.is_ident("concat")); + let tokens = section_name.mac.tokens.to_string(); + assert!(tokens.contains("component-type:wit-bindgen:test")); + assert!(tokens.contains("module_path")); + } + #[test] fn test_should_generate_struct_empty_path() { let empty_items: Vec = vec![]; @@ -898,6 +997,7 @@ world core-type-variant-world { assert!(world_uses_miden_core_types(&resolve, world)); } + /// Preserves dependency-owned types across canonical source and synthetic FPI interfaces. #[test] fn synthetic_fpi_interface_preserves_source_types_and_generated_module_paths() { const SOURCE_IMPORT: &str = "miden:typed-dependency/api@1.2.3"; @@ -955,7 +1055,7 @@ interface api { .unwrap(); resolve.push_group(dependency).unwrap(); - let specs = fpi::import_specs(&[SOURCE_IMPORT.to_string()]); + let specs = fpi::import_specs(&[SOURCE_IMPORT.to_string()]).unwrap(); let inline = fpi::import_world_wit("fpi-type-test", &specs); let group = UnresolvedPackageGroup::parse("inline", &inline).unwrap(); let package = resolve.push_group(group).unwrap(); @@ -982,12 +1082,13 @@ interface api { let synthetic_id = resolve.worlds[world] .imports - .iter() - .find_map(|(key, item)| match (key, item) { - ( - wit_bindgen_core::wit_parser::WorldKey::Name(name), - WorldItem::Interface { id, .. }, - ) if name == specs[0].synthetic_import() => Some(*id), + .values() + .find_map(|item| match item { + WorldItem::Interface { id, .. } + if interface_matches(&resolve, *id, specs[0].synthetic_import()) => + { + Some(*id) + } _ => None, }) .expect("synthetic interface must be imported"); @@ -1047,7 +1148,7 @@ interface api { let foreign = foreign_modules .iter() .find(|module| module.path_string == specs[0].synthetic_module_path()) - .expect("synthetic import key must determine its generated module path"); + .expect("canonical synthetic import must determine its generated module path"); let native_signature = native .functions @@ -1089,6 +1190,7 @@ interface api { assert_eq!(resolve.types[alias_id].owner, TypeOwner::Interface(synthetic_id)); } + /// Merges plain and FPI worlds independently of order, repetition, package, or version. #[test] fn plain_repeated_distinct_and_versioned_fpi_worlds_merge_in_both_orders() { const FIRST_IMPORT: &str = "miden:first-dependency/api@1.0.0"; @@ -1185,7 +1287,7 @@ interface api { { let (source, specs) = match imports { Some(imports) => { - let specs = fpi::import_specs(imports); + let specs = fpi::import_specs(imports).unwrap(); (fpi::import_world_wit(world_name, &specs), Some(specs)) } None => ( diff --git a/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs b/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs index 2e8ab0d62..33704d1ba 100644 --- a/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs +++ b/tests/integration-network/src/mockchain/fpi/account/account_to_account.rs @@ -142,15 +142,7 @@ const CALLEE_ACCOUNT_SOURCE: &str = r#" #![no_std] #![feature(alloc_error_handler)] -use miden::{component, component_storage, export_type, Felt, StorageMap, Word}; - -/// Request record owned by the callee dependency and passed through the caller account's FPI -/// bindings. -#[export_type] -pub struct CounterRequest { - /// Storage key whose counter value should be returned. - pub key: Word, -} +use miden::{component, component_storage, Felt, StorageMap, Word}; /// Account component whose storage map holds one counter value. #[component_storage] @@ -171,8 +163,8 @@ trait CounterContract { #[component] impl CounterContract for CounterContractStorage { /// Returns the counter value stored under the provided key. - fn get_count(&self, request: CounterRequest) -> Felt { - self.count_map.get(request.key) + fn get_count(&self, key: Word) -> Felt { + self.count_map.get(key) } } "#; @@ -184,8 +176,6 @@ const CALLER_ACCOUNT_SOURCE: &str = r#" use miden::{account, component, component_storage, felt, AccountId, Felt, Word}; -use crate::bindings::miden::account_to_account_callee_account::counter_contract::CounterRequest; - #[account(account_to_account_callee_account::CounterContract)] struct CalleeAccount; @@ -207,7 +197,7 @@ impl CallerAccount for CallerAccountStorage { fn read_foreign_count(&self, callee_account_id: AccountId) -> Felt { let callee = CalleeAccount::new(callee_account_id); let key = Word::new([felt!(13), felt!(21), felt!(34), felt!(55)]); - callee.get_count(CounterRequest { key }) + callee.get_count(key) } } "#; diff --git a/tests/integration-network/src/mockchain/fpi/blind_import.rs b/tests/integration-network/src/mockchain/fpi/blind_import.rs index 7f967ed79..46edd4249 100644 --- a/tests/integration-network/src/mockchain/fpi/blind_import.rs +++ b/tests/integration-network/src/mockchain/fpi/blind_import.rs @@ -1,13 +1,18 @@ //! Regression coverage for canonical dependency interfaces imported both plainly and through FPI. use midenc_frontend_wasm::WasmTranslationConfig; -use midenc_integration_test_support::{CompilerTestBuilder, project}; +use midenc_integration_test_support::{CompilerTestBuilder, Project, project}; use super::super::support::{ account_cargo_toml_for, account_miden_project_toml_with_interface, compile_rust_package, note_cargo_toml_for_dependency, note_miden_project_toml_for_dependency, }; +/// Cargo package name of the dependency shared by the regression fixtures. +const ACCOUNT_NAME: &str = "basic-wallet"; +/// WIT package name of the dependency shared by the regression fixtures. +const ACCOUNT_PACKAGE: &str = "miden:basic-wallet"; + /// Compiles a note whose plain dependency import and FPI bindings describe the same interface. /// /// The note macro and `#[account]` both import the account dependency into their worlds. Before @@ -16,12 +21,43 @@ use super::super::support::{ /// the uncommon linker order which exposes the mismatch. #[test] fn plain_dependency_import_and_fpi_bindings_are_compatible() { - const ACCOUNT_NAME: &str = "basic-wallet"; - const ACCOUNT_PACKAGE: &str = "miden:basic-wallet"; const NOTE_NAME: &str = "template-test"; const NOTE_PACKAGE: &str = "miden:template-test"; - let account_project = project("plain-import-and-fpi-basic-wallet") + let account_project = build_basic_wallet_project("plain-import-and-fpi-basic-wallet"); + let note_project = build_note_project( + NOTE_NAME, + NOTE_NAME, + NOTE_PACKAGE, + &account_project, + TEMPLATE_TEST_NOTE_SOURCE, + ); + compile_debug_note(¬e_project); +} + +/// Compiles same-named account wrappers in distinct Rust modules. +/// +/// Each wrapper emits a complete component-metadata payload for the same binding world. Their +/// section names must remain distinct without incorporating source file names or positions. +#[test] +fn same_named_account_wrappers_have_distinct_stable_metadata_sections() { + const NOTE_NAME: &str = "repeated-account-bindings"; + const NOTE_PACKAGE: &str = "miden:repeated-account-bindings"; + + let account_project = build_basic_wallet_project("repeated-bindings-basic-wallet"); + let note_project = build_note_project( + NOTE_NAME, + NOTE_NAME, + NOTE_PACKAGE, + &account_project, + REPEATED_BINDINGS_NOTE_SOURCE, + ); + compile_debug_note(¬e_project); +} + +/// Builds the basic-wallet dependency used by one regression fixture. +fn build_basic_wallet_project(folder_name: &str) -> Project { + let project = project(folder_name) .file( "miden-project.toml", &use_regression_version(account_miden_project_toml_with_interface( @@ -36,15 +72,25 @@ fn plain_dependency_import_and_fpi_bindings_are_compatible() { ) .file("src/lib.rs", BASIC_WALLET_SOURCE) .build(); - let _account_package = compile_rust_package(account_project.root(), true); + let _account_package = compile_rust_package(project.root(), true); + project +} +/// Builds a note project with the supplied basic-wallet dependency and source. +fn build_note_project( + folder_name: &str, + note_name: &str, + note_package: &str, + account_project: &Project, + source: &str, +) -> Project { let account_root = account_project.root(); - let note_project = project(NOTE_NAME) + project(folder_name) .file( "miden-project.toml", &use_regression_version(note_miden_project_toml_for_dependency( - NOTE_NAME, - NOTE_PACKAGE, + note_name, + note_package, ACCOUNT_PACKAGE, &account_root, )), @@ -52,23 +98,26 @@ fn plain_dependency_import_and_fpi_bindings_are_compatible() { .file( "Cargo.toml", &use_regression_version(note_cargo_toml_for_dependency( - NOTE_NAME, - NOTE_PACKAGE, + note_name, + note_package, ACCOUNT_PACKAGE, &account_root, )), ) - .file("src/lib.rs", TEMPLATE_TEST_NOTE_SOURCE) - .build(); + .file("src/lib.rs", source) + .build() +} - let mut note_builder = CompilerTestBuilder::rust_source_cargo_miden( +/// Compiles one generated note project in the debug profile used by the original failure. +fn compile_debug_note(note_project: &Project) { + let mut builder = CompilerTestBuilder::rust_source_cargo_miden( note_project.root(), WasmTranslationConfig::default(), [], ); - note_builder.with_release(false); - let mut note_test = note_builder.build(); - let _note_package = note_test.compile_package(); + builder.with_release(false); + let mut test = builder.build(); + let _note_package = test.compile_package(); } /// Updates generated fixture manifests to the package version which exposes the linker ordering. @@ -111,3 +160,46 @@ impl BlindImportNote { } } "#; + +/// Note source containing same-named account wrappers under distinct semantic module paths. +const REPEATED_BINDINGS_NOTE_SOURCE: &str = r#" +#![no_std] +#![feature(alloc_error_handler)] + +use miden::{AccountId, Word, note}; + +/// First semantic owner of a wrapper named `Wallet`. +mod first { + use miden::account; + + /// First basic-wallet binding. + #[account(basic_wallet::BasicWallet as FirstBasicWallet)] + pub struct Wallet; +} + +/// Second semantic owner of a wrapper with the same Rust item name. +mod second { + use miden::account; + + /// Second basic-wallet binding. + #[account(basic_wallet::BasicWallet as SecondBasicWallet)] + pub struct Wallet; +} + +/// Note carrying the account used to construct both foreign bindings. +#[note] +struct RepeatedBindingsNote { + /// Foreign account selected by both wrappers. + foreign_account_id: AccountId, +} + +#[note] +impl RepeatedBindingsNote { + /// Constructs both wrappers so their generated bindings remain part of the linked artifact. + #[note_script] + pub fn script(self, _arg: Word) { + let _first = first::Wallet::new(self.foreign_account_id); + let _second = second::Wallet::new(self.foreign_account_id); + } +} +"#; diff --git a/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs b/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs index 075209de9..73adf77cd 100644 --- a/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs +++ b/tests/integration-network/src/mockchain/fpi/note/mixed_scalar_struct.rs @@ -92,17 +92,6 @@ use crate::bindings::miden::mixed_scalar_struct_account::counter_contract::Mixed #[account(mixed_scalar_struct_account::CounterContract)] struct Counter; -/// Holds a same-named second wrapper for the same dependency in a separate Rust module. -mod mirror { - use super::*; - - /// Second wrapper ensuring repeated private FPI imports and custom sections remain distinct. - #[account(mixed_scalar_struct_account::CounterContract as MirrorCounterContract)] - pub struct Counter; -} - -use mirror::MirrorCounterContract as _; - /// First double-word value used by the mixed scalar record FPI test. const FIRST_U64: u64 = 0x0000_0001_0000_0002; /// Second double-word value used by the mixed scalar record FPI test. @@ -132,20 +121,12 @@ impl CounterCaller { u32_value: U32_VALUE, u8_value: U8_VALUE, }); - let mirror = mirror::Counter::new(self.counter_account_id); - let mirrored = mirror.echo_mixed_scalar_record(MixedScalarRecord { - first_u64: result.first_u64, - second_u64: result.second_u64, - felt_value: result.felt_value, - u32_value: result.u32_value, - u8_value: result.u8_value, - }); - assert_u64_eq(mirrored.first_u64, FIRST_U64); - assert_u64_eq(mirrored.second_u64, SECOND_U64); - assert_eq(mirrored.felt_value, felt!(77)); - assert_eq(Felt::from_u32(mirrored.u32_value), Felt::from_u32(U32_VALUE)); - assert_eq(Felt::from_u32(mirrored.u8_value as u32), Felt::from_u32(U8_VALUE as u32)); + assert_u64_eq(result.first_u64, FIRST_U64); + assert_u64_eq(result.second_u64, SECOND_U64); + assert_eq(result.felt_value, felt!(77)); + assert_eq(Felt::from_u32(result.u32_value), Felt::from_u32(U32_VALUE)); + assert_eq(Felt::from_u32(result.u8_value as u32), Felt::from_u32(U8_VALUE as u32)); } } diff --git a/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs b/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs index 9bc9bf5de..b6e093012 100644 --- a/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs +++ b/tests/integration-network/src/mockchain/sibling/sibling_and_fpi.rs @@ -140,15 +140,7 @@ const COUNTER_CONTRACT_SOURCE: &str = r#" #![no_std] #![feature(alloc_error_handler)] -use miden::{component, component_storage, export_type, felt, Felt, StorageMap, Word}; - -/// Key record owned by the shared counter dependency and used through both sibling and FPI -/// bindings. -#[export_type] -pub struct CounterKey { - /// Storage-map key for the counter. - pub value: Word, -} +use miden::{component, component_storage, felt, Felt, StorageMap, Word}; /// Account component whose storage map holds one counter value. #[component_storage] @@ -171,13 +163,13 @@ trait CounterContract { #[component] impl CounterContract for CounterContractStorage { - fn get_count(&self, key: CounterKey) -> Felt { - self.count_map.get(key.value) + fn get_count(&self, key: Word) -> Felt { + self.count_map.get(key) } - fn increment_count(&mut self, key: CounterKey) -> Felt { - let new_value = self.count_map.get(key.value) + felt!(1); - self.count_map.set(key.value, new_value); + fn increment_count(&mut self, key: Word) -> Felt { + let new_value = self.count_map.get(key) + felt!(1); + self.count_map.set(key, new_value); new_value } } @@ -193,8 +185,6 @@ use miden::{ AccountId, Felt, Word, }; -use crate::bindings::miden::sibling_and_fpi_counter_account::counter_contract::CounterKey; - /// Foreign binding to a second account holding the same counter component package. /// /// The sibling `#[component(..::CounterContract)]` below already generates a `CounterContract` @@ -223,12 +213,12 @@ impl CallerAccount for CallerAccountStorage { fn bump_local_read_remote(&mut self, remote_account_id: AccountId) -> Felt { let key = Word::new([felt!(13), felt!(21), felt!(34), felt!(55)]); // Intra-account sibling call through the sibling `CounterContract` trait. - let before = self.get_count(CounterKey { value: key }); - let after = self.increment_count(CounterKey { value: key }); + let before = self.get_count(key); + let after = self.increment_count(key); assert_eq(after, before + felt!(1)); // Inter-account FPI call through the aliased `RemoteCounter` trait. let remote = Remote::new(remote_account_id); - remote.get_count(CounterKey { value: key }) + remote.get_count(key) } } "#; From adfa3d6c74f366b3882db56e11eed22362cf9d0b Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 13 Jul 2026 11:35:01 +0300 Subject: [PATCH 06/23] refactor(sdk): centralize FPI binding invariants FPI prefix structure and source-function selection were duplicated across generation and validation, which made the two paths easy to drift apart. Generated Rust signatures were also validated twice. Share the ABI parameter definition and source-function predicate, give the generated-function filter an explicit name, and retain one Rust-signature validation point. --- sdk/base-macros/src/fpi.rs | 100 +++++++++++++++++--------------- sdk/base-macros/src/generate.rs | 3 +- 2 files changed, 56 insertions(+), 47 deletions(-) diff --git a/sdk/base-macros/src/fpi.rs b/sdk/base-macros/src/fpi.rs index acde45fe9..ffdc46c40 100644 --- a/sdk/base-macros/src/fpi.rs +++ b/sdk/base-macros/src/fpi.rs @@ -47,6 +47,13 @@ const FPI_ABI_VERSION: &str = "v1"; /// Prefix for private synthetic FPI package names. const FPI_PACKAGE_PREFIX: &str = "fpi"; +/// Number of parameters prepended by the FPI calling convention. +const FPI_ABI_PARAM_COUNT: usize = 3; + +/// Names of the parameters prepended by the FPI calling convention. +const FPI_ABI_PARAM_NAMES: [&str; FPI_ABI_PARAM_COUNT] = + ["account-id-prefix", "account-id-suffix", "foreign-proc-root"]; + /// Maps one real dependency interface to its private synthetic FPI interface. #[derive(Clone, Debug, Eq, PartialEq)] pub(crate) struct FpiImportSpec { @@ -277,7 +284,7 @@ fn import_synthetic_interface( } /// Determines whether a generated free function represents an FPI WIT import. -pub(crate) fn is_function(func: &ItemFn) -> bool { +pub(crate) fn is_fpi_import_function(func: &ItemFn) -> bool { matches!(func.vis, syn::Visibility::Public(_)) && func.sig.unsafety.is_none() && func.sig.ident.to_string().starts_with(RUST_FUNCTION_PREFIX) @@ -285,12 +292,13 @@ pub(crate) fn is_function(func: &ItemFn) -> bool { /// Determines whether a generated free function represents a plain (non-FPI) WIT import. /// -/// Unlike [`is_function`], which keys on the synthesized `fpi_` prefix, this is a negative filter: -/// it accepts any safe, public free function in a generated leaf import module that is not an FPI -/// import. That relies on wit-bindgen emitting exactly the interface's functions as plain public -/// free functions in those modules — it does not emit auxiliary public free functions there. If a -/// future wit-bindgen version changes that, such functions would be picked up as sibling methods -/// and this predicate would need to narrow (e.g. by the interface's declared function set). +/// Unlike [`is_fpi_import_function`], which keys on the synthesized `fpi_` prefix, this is a +/// negative filter: it accepts any safe, public free function in a generated leaf import module +/// that is not an FPI import. That relies on wit-bindgen emitting exactly the interface's functions +/// as plain public free functions in those modules — it does not emit auxiliary public free +/// functions there. If a future wit-bindgen version changes that, such functions would be picked +/// up as sibling methods and this predicate would need to narrow (e.g. by the interface's declared +/// function set). pub(crate) fn is_plain_import_function(func: &ItemFn) -> bool { matches!(func.vis, syn::Visibility::Public(_)) && func.sig.unsafety.is_none() @@ -397,6 +405,12 @@ fn resolve_core_types(resolve: &Resolve) -> syn::Result { }) } +/// Returns whether a dependency function receives a generated FPI companion. +fn is_fpi_source_function(function: &Function) -> bool { + matches!(function.kind, FunctionKind::Freestanding) + && !function.name.starts_with(WIT_FUNCTION_PREFIX) +} + /// Copies FPI variants of source functions into an empty private synthetic interface. fn inject_functions_into_synthetic_interface( resolve: &mut Resolve, @@ -407,10 +421,7 @@ fn inject_functions_into_synthetic_interface( let functions = resolve.interfaces[source_id] .functions .values() - .filter(|function| { - matches!(function.kind, FunctionKind::Freestanding) - && !function.name.starts_with(WIT_FUNCTION_PREFIX) - }) + .filter(|function| is_fpi_source_function(function)) .cloned() .collect::>(); @@ -449,7 +460,10 @@ fn inject_functions_into_synthetic_interface( Ok(()) } -/// Verifies that a reused canonical FPI interface matches its source dependency. +/// Verifies that a canonical FPI interface structurally matches its source dependency. +/// +/// This validates resolved WIT identity before Rust generation, including interfaces reused while +/// processing multiple imports from one synthetic package. fn validate_synthetic_interface( resolve: &Resolve, source_id: InterfaceId, @@ -459,10 +473,7 @@ fn validate_synthetic_interface( let source_functions = resolve.interfaces[source_id] .functions .values() - .filter(|function| { - matches!(function.kind, FunctionKind::Freestanding) - && !function.name.starts_with(WIT_FUNCTION_PREFIX) - }) + .filter(|function| is_fpi_source_function(function)) .collect::>(); let synthetic = &resolve.interfaces[synthetic_id]; let invalid = || { @@ -482,11 +493,7 @@ fn validate_synthetic_interface( return Err(invalid()); } - let expected_prefix = [ - ("account-id-prefix", core_types.felt), - ("account-id-suffix", core_types.felt), - ("foreign-proc-root", core_types.word), - ]; + let expected_prefix = fpi_abi_params(core_types); let mut aliases = HashMap::new(); for source in source_functions { let name = format!("{WIT_FUNCTION_PREFIX}{}", source.name); @@ -498,14 +505,16 @@ fn validate_synthetic_interface( { return Err(invalid()); } - for (param, (name, ty)) in function.params.iter().zip(expected_prefix).take(3) { + for (param, (name, ty)) in function.params.iter().zip(expected_prefix) { if param.name != name || !synthetic_type_matches(resolve, synthetic_id, ty, param.ty, &mut aliases) { return Err(invalid()); } } - for (source, generated) in source.params.iter().zip(function.params.iter().skip(3)) { + for (source, generated) in + source.params.iter().zip(function.params.iter().skip(FPI_ABI_PARAM_COUNT)) + { if source.name != generated.name || !synthetic_type_matches( resolve, @@ -641,22 +650,12 @@ fn validate_reserved_fpi_namespace<'a>( /// Builds the caller-side WIT import that forwards through `execute_foreign_procedure`. fn build_import_function(function: Function, fpi_name: String, core_types: CoreTypes) -> Function { - let mut params = Vec::with_capacity(function.params.len() + 3); - params.push(Param { - name: "account-id-prefix".to_string(), - ty: core_types.felt, + let mut params = Vec::with_capacity(function.params.len() + FPI_ABI_PARAM_COUNT); + params.extend(fpi_abi_params(core_types).map(|(name, ty)| Param { + name: name.to_string(), + ty, span: WitSpan::default(), - }); - params.push(Param { - name: "account-id-suffix".to_string(), - ty: core_types.felt, - span: WitSpan::default(), - }); - params.push(Param { - name: "foreign-proc-root".to_string(), - ty: core_types.word, - span: WitSpan::default(), - }); + })); params.extend(function.params); Function { @@ -672,6 +671,15 @@ fn build_import_function(function: Function, fpi_name: String, core_types: CoreT } } +/// Returns the WIT parameters prepended by the FPI calling convention. +fn fpi_abi_params(core_types: CoreTypes) -> [(&'static str, WitType); FPI_ABI_PARAM_COUNT] { + [ + (FPI_ABI_PARAM_NAMES[0], core_types.felt), + (FPI_ABI_PARAM_NAMES[1], core_types.felt), + (FPI_ABI_PARAM_NAMES[2], core_types.word), + ] +} + /// Walks generated bindings and collects the import-module functions selected by `filter`. pub(crate) fn collect_import_modules( items: &[Item], @@ -754,10 +762,10 @@ pub(crate) fn augment_foreign_account_bindings( ) -> syn::Result { let file: File = syn::parse2(bindings)?; let native_modules = collect_import_modules(&file.items, &is_plain_import_function)?; - let foreign_modules = collect_import_modules(&file.items, &is_function)?; + let foreign_modules = collect_import_modules(&file.items, &is_fpi_import_function)?; - // Each selected reference is checked for a matching module in the per-reference loop below, so - // an empty `modules` surfaces there as a specific "no callable exports" error per interface. + // Each selected reference is checked against both module sets in the per-reference loop below, + // so a missing module surfaces there as a specific "no callable exports" error per interface. // `dependencies` was selected from `refs` in order, so zip them here rather than threading a // separate parallel vector — the reference is the one source of the generated trait name. let dependencies = dependencies @@ -840,8 +848,6 @@ pub(crate) fn augment_foreign_account_bindings( ), ) })?; - validate_fpi_signature(native_func, foreign_func)?; - let wit_name = function_wit_name(foreign_func)?; let root_key = ProcedureRootKey::new(dependency.import.as_str(), wit_name.as_str()); let root = dependency.roots.get(&root_key).ok_or_else(|| { @@ -1044,19 +1050,21 @@ fn validate_fpi_signature(native: &ItemFn, foreign: &ItemFn) -> syn::Result<()> let foreign_inputs = foreign.sig.inputs.iter().collect::>(); let native_inputs = native.sig.inputs.iter().collect::>(); - if foreign_inputs.len() != native_inputs.len() + 3 { + if foreign_inputs.len() != native_inputs.len() + FPI_ABI_PARAM_COUNT { return Err(Error::new( foreign.sig.ident.span(), "generated FPI function is missing account id and procedure root parameters", )); } - let expected_prefix: [syn::Type; 3] = [ + // These paths are the Rust representations installed for `felt` and `word` by + // `generate::push_default_with_entries`. + let expected_prefix: [syn::Type; FPI_ABI_PARAM_COUNT] = [ parse_quote!(::miden::Felt), parse_quote!(::miden::Felt), parse_quote!(::miden::Word), ]; - for (input, expected) in foreign_inputs.iter().take(3).zip(&expected_prefix) { + for (input, expected) in foreign_inputs.iter().take(FPI_ABI_PARAM_COUNT).zip(&expected_prefix) { let syn::FnArg::Typed(input) = input else { return Err(Error::new_spanned( input, diff --git a/sdk/base-macros/src/generate.rs b/sdk/base-macros/src/generate.rs index af31fad81..a171aea0c 100644 --- a/sdk/base-macros/src/generate.rs +++ b/sdk/base-macros/src/generate.rs @@ -1140,7 +1140,8 @@ interface api { let file: syn::File = syn::parse_str(std::str::from_utf8(source).unwrap()).unwrap(); let native_modules = fpi::collect_import_modules(&file.items, &fpi::is_plain_import_function).unwrap(); - let foreign_modules = fpi::collect_import_modules(&file.items, &fpi::is_function).unwrap(); + let foreign_modules = + fpi::collect_import_modules(&file.items, &fpi::is_fpi_import_function).unwrap(); let native = native_modules .iter() .find(|module| module.path_string == "miden::typed_dependency::api") From 6feef4dc5b60873bcd06d094f243e8a8d248bc09 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 13 Jul 2026 11:38:56 +0300 Subject: [PATCH 07/23] fix(sdk): preserve semantic FPI signature types Synthetic FPI interfaces treated every resolved type ID as a named interface type and compared generated aliases by Rust token spelling. Anonymous compounds could produce invalid resolves, while sibling-interface use aliases were rejected despite naming the same semantic type. Rebuild anonymous constructors recursively and validate resolved WIT identity before relying on Rust type checking for transparent alias compatibility. --- sdk/base-macros/src/fpi.rs | 287 ++++++++++++++++++++++++++++---- sdk/base-macros/src/generate.rs | 160 ++++++++++++++++++ sdk/sdk/CHANGELOG.md | 3 +- 3 files changed, 412 insertions(+), 38 deletions(-) diff --git a/sdk/base-macros/src/fpi.rs b/sdk/base-macros/src/fpi.rs index ffdc46c40..22250a347 100644 --- a/sdk/base-macros/src/fpi.rs +++ b/sdk/base-macros/src/fpi.rs @@ -19,9 +19,9 @@ use syn::{ parse_quote, }; use wit_bindgen_core::wit_parser::{ - Docs, Function, FunctionKind, Interface, InterfaceId, Package as WitPackage, PackageName, - Param, Resolve, Span as WitSpan, Type as WitType, TypeDef, TypeDefKind, TypeId, TypeOwner, - WorldId, WorldItem, WorldKey, + Docs, Function, FunctionKind, Handle, Interface, InterfaceId, Package as WitPackage, + PackageName, Param, Resolve, Span as WitSpan, Type as WitType, TypeDef, TypeDefKind, TypeId, + TypeOwner, WorldId, WorldItem, WorldKey, }; #[cfg(test)] @@ -541,7 +541,11 @@ fn validate_synthetic_interface( } } - let alias_ids = aliases.values().copied().collect::>(); + let alias_ids = aliases + .values() + .copied() + .filter(|id| resolve.types[*id].owner == TypeOwner::Interface(synthetic_id)) + .collect::>(); if synthetic.types.len() != alias_ids.len() || synthetic.types.values().any(|id| !alias_ids.contains(id)) { @@ -565,19 +569,156 @@ fn synthetic_type_matches( let WitType::Id(alias_id) = generated else { return false; }; - if aliases.get(&source_id).is_some_and(|expected| *expected != alias_id) { - return false; + if let Some(expected) = aliases.get(&source_id) { + return *expected == alias_id; + } + + let source_type = &resolve.types[source_id]; + let generated_type = &resolve.types[alias_id]; + if source_type.name.is_none() && source_type.owner == TypeOwner::None { + if generated_type.name.is_some() || generated_type.owner != TypeOwner::None { + return false; + } + aliases.insert(source_id, alias_id); + return synthetic_type_def_kind_matches( + resolve, + synthetic_id, + &source_type.kind, + &generated_type.kind, + aliases, + ); } - let alias = &resolve.types[alias_id]; - if alias.owner != TypeOwner::Interface(synthetic_id) - || alias.kind != TypeDefKind::Type(WitType::Id(source_id)) + + if generated_type.owner != TypeOwner::Interface(synthetic_id) + || generated_type.kind != TypeDefKind::Type(WitType::Id(source_id)) { return false; } + aliases.insert(source_id, alias_id); true } +/// Compares anonymous type constructors while following their nested synthetic aliases. +fn synthetic_type_def_kind_matches( + resolve: &Resolve, + synthetic_id: InterfaceId, + source: &TypeDefKind, + generated: &TypeDefKind, + aliases: &mut HashMap, +) -> bool { + match (source, generated) { + (TypeDefKind::Record(source), TypeDefKind::Record(generated)) => { + source.fields.len() == generated.fields.len() + && source.fields.iter().zip(&generated.fields).all(|(source, generated)| { + source.name == generated.name + && synthetic_type_matches( + resolve, + synthetic_id, + source.ty, + generated.ty, + aliases, + ) + }) + } + (TypeDefKind::Resource, TypeDefKind::Resource) => true, + (TypeDefKind::Handle(source), TypeDefKind::Handle(generated)) => { + synthetic_handle_matches(resolve, synthetic_id, *source, *generated, aliases) + } + (TypeDefKind::Flags(source), TypeDefKind::Flags(generated)) => source == generated, + (TypeDefKind::Tuple(source), TypeDefKind::Tuple(generated)) => { + source.types.len() == generated.types.len() + && source.types.iter().zip(&generated.types).all(|(source, generated)| { + synthetic_type_matches(resolve, synthetic_id, *source, *generated, aliases) + }) + } + (TypeDefKind::Variant(source), TypeDefKind::Variant(generated)) => { + source.cases.len() == generated.cases.len() + && source.cases.iter().zip(&generated.cases).all(|(source, generated)| { + source.name == generated.name + && synthetic_optional_type_matches( + resolve, + synthetic_id, + source.ty, + generated.ty, + aliases, + ) + }) + } + (TypeDefKind::Enum(source), TypeDefKind::Enum(generated)) => source == generated, + (TypeDefKind::Option(source), TypeDefKind::Option(generated)) + | (TypeDefKind::List(source), TypeDefKind::List(generated)) + | (TypeDefKind::Type(source), TypeDefKind::Type(generated)) => { + synthetic_type_matches(resolve, synthetic_id, *source, *generated, aliases) + } + (TypeDefKind::Result(source), TypeDefKind::Result(generated)) => { + synthetic_optional_type_matches(resolve, synthetic_id, source.ok, generated.ok, aliases) + && synthetic_optional_type_matches( + resolve, + synthetic_id, + source.err, + generated.err, + aliases, + ) + } + (TypeDefKind::Map(source_key, source_value), TypeDefKind::Map(key, value)) => { + synthetic_type_matches(resolve, synthetic_id, *source_key, *key, aliases) + && synthetic_type_matches(resolve, synthetic_id, *source_value, *value, aliases) + } + ( + TypeDefKind::FixedLengthList(source, source_len), + TypeDefKind::FixedLengthList(generated, generated_len), + ) => { + source_len == generated_len + && synthetic_type_matches(resolve, synthetic_id, *source, *generated, aliases) + } + (TypeDefKind::Future(source), TypeDefKind::Future(generated)) + | (TypeDefKind::Stream(source), TypeDefKind::Stream(generated)) => { + synthetic_optional_type_matches(resolve, synthetic_id, *source, *generated, aliases) + } + (TypeDefKind::Unknown, TypeDefKind::Unknown) => true, + _ => false, + } +} + +/// Compares optional nested types in anonymous WIT constructors. +fn synthetic_optional_type_matches( + resolve: &Resolve, + synthetic_id: InterfaceId, + source: Option, + generated: Option, + aliases: &mut HashMap, +) -> bool { + match (source, generated) { + (Some(source), Some(generated)) => { + synthetic_type_matches(resolve, synthetic_id, source, generated, aliases) + } + (None, None) => true, + _ => false, + } +} + +/// Compares resource handles in anonymous WIT constructors. +fn synthetic_handle_matches( + resolve: &Resolve, + synthetic_id: InterfaceId, + source: Handle, + generated: Handle, + aliases: &mut HashMap, +) -> bool { + match (source, generated) { + (Handle::Own(source), Handle::Own(generated)) + | (Handle::Borrow(source), Handle::Borrow(generated)) => synthetic_type_matches( + resolve, + synthetic_id, + WitType::Id(source), + WitType::Id(generated), + aliases, + ), + _ => false, + } +} + /// Replaces cross-interface function types with local aliases to their original definitions. fn alias_function_types( resolve: &mut Resolve, @@ -594,7 +735,7 @@ fn alias_function_types( } } -/// Replaces one resolved type ID with a synthetic-interface alias. +/// Replaces one resolved type ID with a valid synthetic representation. fn alias_wit_type( resolve: &mut Resolve, synthetic_id: InterfaceId, @@ -611,7 +752,24 @@ fn alias_wit_type( } let source_id_value = *source_id; - let name = format!("miden-fpi-type-{}", aliases.len()); + let source_type = resolve.types[source_id_value].clone(); + if source_type.name.is_none() && source_type.owner == TypeOwner::None { + let mut kind = source_type.kind; + alias_type_def_kind(resolve, synthetic_id, &mut kind, aliases, interface_types); + let clone_id = resolve.types.alloc(TypeDef { + name: None, + kind, + owner: TypeOwner::None, + docs: source_type.docs, + stability: source_type.stability, + span: source_type.span, + }); + aliases.insert(source_id_value, clone_id); + *source_id = clone_id; + return; + } + + let name = format!("miden-fpi-type-{}", interface_types.len()); let alias_id = resolve.types.alloc(TypeDef { name: Some(name.clone()), kind: TypeDefKind::Type(WitType::Id(source_id_value)), @@ -625,6 +783,81 @@ fn alias_wit_type( *source_id = alias_id; } +/// Rewrites every nested type reference in one cloned anonymous WIT constructor. +fn alias_type_def_kind( + resolve: &mut Resolve, + synthetic_id: InterfaceId, + kind: &mut TypeDefKind, + aliases: &mut HashMap, + interface_types: &mut Vec<(String, TypeId)>, +) { + match kind { + TypeDefKind::Record(record) => { + for field in &mut record.fields { + alias_wit_type(resolve, synthetic_id, &mut field.ty, aliases, interface_types); + } + } + TypeDefKind::Handle(handle) => { + alias_handle(resolve, synthetic_id, handle, aliases, interface_types); + } + TypeDefKind::Tuple(tuple) => { + for ty in &mut tuple.types { + alias_wit_type(resolve, synthetic_id, ty, aliases, interface_types); + } + } + TypeDefKind::Variant(variant) => { + for case in &mut variant.cases { + if let Some(ty) = &mut case.ty { + alias_wit_type(resolve, synthetic_id, ty, aliases, interface_types); + } + } + } + TypeDefKind::Option(ty) | TypeDefKind::List(ty) | TypeDefKind::Type(ty) => { + alias_wit_type(resolve, synthetic_id, ty, aliases, interface_types); + } + TypeDefKind::Result(result) => { + for ty in [&mut result.ok, &mut result.err].into_iter().flatten() { + alias_wit_type(resolve, synthetic_id, ty, aliases, interface_types); + } + } + TypeDefKind::Map(key, value) => { + alias_wit_type(resolve, synthetic_id, key, aliases, interface_types); + alias_wit_type(resolve, synthetic_id, value, aliases, interface_types); + } + TypeDefKind::FixedLengthList(ty, _) => { + alias_wit_type(resolve, synthetic_id, ty, aliases, interface_types); + } + TypeDefKind::Future(ty) | TypeDefKind::Stream(ty) => { + if let Some(ty) = ty { + alias_wit_type(resolve, synthetic_id, ty, aliases, interface_types); + } + } + TypeDefKind::Resource + | TypeDefKind::Flags(_) + | TypeDefKind::Enum(_) + | TypeDefKind::Unknown => {} + } +} + +/// Rewrites the resource type referenced by one cloned anonymous handle. +fn alias_handle( + resolve: &mut Resolve, + synthetic_id: InterfaceId, + handle: &mut Handle, + aliases: &mut HashMap, + interface_types: &mut Vec<(String, TypeId)>, +) { + let id = match handle { + Handle::Own(id) | Handle::Borrow(id) => id, + }; + let mut ty = WitType::Id(*id); + alias_wit_type(resolve, synthetic_id, &mut ty, aliases, interface_types); + let WitType::Id(alias) = ty else { + unreachable!("resource handles always reference a resolved type ID"); + }; + *id = alias; +} + /// Rejects dependency functions that use the namespace reserved for generated FPI imports. fn validate_reserved_fpi_namespace<'a>( import: &str, @@ -1036,8 +1269,12 @@ fn append_module_path(mut base: TokenStream2, module_path: &[syn::Ident]) -> Tok base } -/// Verifies that a private FPI binding is the native signature plus the FPI ABI prefix. -fn validate_fpi_signature(native: &ItemFn, foreign: &ItemFn) -> syn::Result<()> { +/// Verifies that a private FPI binding has the native function name and FPI ABI prefix. +/// +/// Resolved WIT types are compared by [`validate_synthetic_interface`]. Rust aliases may render +/// with different token spellings, so this layer checks only properties introduced by wit-bindgen +/// and leaves alias compatibility to Rust's type checker. +pub(crate) fn validate_fpi_signature(native: &ItemFn, foreign: &ItemFn) -> syn::Result<()> { if method_ident(foreign)? != native.sig.ident { return Err(Error::new( foreign.sig.ident.span(), @@ -1079,30 +1316,6 @@ fn validate_fpi_signature(native: &ItemFn, foreign: &ItemFn) -> syn::Result<()> } } - for (native_input, foreign_input) in native_inputs.iter().zip(foreign_inputs.iter().skip(3)) { - let (syn::FnArg::Typed(native_input), syn::FnArg::Typed(foreign_input)) = - (native_input, foreign_input) - else { - return Err(Error::new_spanned( - foreign_input, - "generated import functions cannot contain receivers", - )); - }; - if !tokens_equal(&native_input.ty, &foreign_input.ty) { - return Err(Error::new_spanned( - &foreign_input.ty, - "generated FPI parameter type does not match its native function", - )); - } - } - - if !tokens_equal(&native.sig.output, &foreign.sig.output) { - return Err(Error::new_spanned( - &foreign.sig.output, - "generated FPI result type does not match its native function", - )); - } - Ok(()) } diff --git a/sdk/base-macros/src/generate.rs b/sdk/base-macros/src/generate.rs index a171aea0c..3b7bc29ce 100644 --- a/sdk/base-macros/src/generate.rs +++ b/sdk/base-macros/src/generate.rs @@ -1172,6 +1172,166 @@ interface api { assert!(foreign_signature.contains(&mapped_type), "signature: {foreign_signature}"); } + /// Rebuilds anonymous compound types without creating cross-owner aliases. + #[test] + fn synthetic_fpi_interface_preserves_anonymous_compound_types() { + const SOURCE_IMPORT: &str = "miden:anonymous-dependency/api@1.0.0"; + + let mut resolve = Resolve::default(); + let sdk_group = + UnresolvedPackageGroup::parse("miden.wit", manifest_paths::SDK_WIT_SOURCE).unwrap(); + resolve.push_group(sdk_group).unwrap(); + let dependency = UnresolvedPackageGroup::parse( + "anonymous-dependency.wit", + r#" +package miden:anonymous-dependency@1.0.0; + +use miden:base/core-types@1.0.0; + +interface api { + use core-types.{felt, word}; + + record payload { + value: u32, + key: word, + } + + many: func(values: list) -> list; + find: func(key: word) -> option; + try-get: func(flag: bool) -> result; + pair: func() -> tuple; + words: func(values: list) -> u32; +} +"#, + ) + .unwrap(); + resolve.push_group(dependency).unwrap(); + + let specs = fpi::import_specs(&[SOURCE_IMPORT.to_string()]).unwrap(); + let inline = fpi::import_world_wit("fpi-anonymous-test", &specs); + let group = UnresolvedPackageGroup::parse("inline", &inline).unwrap(); + let package = resolve.push_group(group).unwrap(); + let world = resolve.select_world(&[package], None).unwrap(); + + fpi::inject_imports(&mut resolve, world, &specs).unwrap(); + resolve.assert_valid(); + + let mut opts = Opts { + generate_all: true, + runtime_path: Some("::miden::wit_bindgen::rt".to_string()), + default_bindings_module: Some("bindings".to_string()), + ..Opts::default() + }; + push_default_with_entries(&mut opts); + + let mut generated_files = wit_bindgen_core::Files::default(); + opts.build().generate(&mut resolve, world, &mut generated_files).unwrap(); + let (_, source) = generated_files.iter().next().unwrap(); + let file: syn::File = syn::parse_str(std::str::from_utf8(source).unwrap()).unwrap(); + let native_modules = + fpi::collect_import_modules(&file.items, &fpi::is_plain_import_function).unwrap(); + let foreign_modules = + fpi::collect_import_modules(&file.items, &fpi::is_fpi_import_function).unwrap(); + let native = native_modules + .iter() + .find(|module| module.path_string == "miden::anonymous_dependency::api") + .expect("native anonymous-type bindings"); + let foreign = foreign_modules + .iter() + .find(|module| module.path_string == specs[0].synthetic_module_path()) + .expect("synthetic anonymous-type bindings"); + + assert_eq!(native.functions.len(), 5); + assert_eq!(foreign.functions.len(), native.functions.len()); + } + + /// Preserves aliases imported from a sibling WIT interface. + #[test] + fn synthetic_fpi_interface_preserves_cross_interface_use_aliases() { + const SOURCE_IMPORT: &str = "miden:shared-types-dependency/api@1.0.0"; + + let mut resolve = Resolve::default(); + let sdk_group = + UnresolvedPackageGroup::parse("miden.wit", manifest_paths::SDK_WIT_SOURCE).unwrap(); + resolve.push_group(sdk_group).unwrap(); + let dependency = UnresolvedPackageGroup::parse( + "shared-types-dependency.wit", + r#" +package miden:shared-types-dependency@1.0.0; + +interface types { + record payload { + value: u32, + } +} + +interface api { + use types.{payload}; + roundtrip: func(value: payload) -> payload; +} +"#, + ) + .unwrap(); + resolve.push_group(dependency).unwrap(); + + let specs = fpi::import_specs(&[SOURCE_IMPORT.to_string()]).unwrap(); + let inline = fpi::import_world_wit("fpi-use-alias-test", &specs); + let group = UnresolvedPackageGroup::parse("inline", &inline).unwrap(); + let package = resolve.push_group(group).unwrap(); + let world = resolve.select_world(&[package], None).unwrap(); + + fpi::inject_imports(&mut resolve, world, &specs).unwrap(); + resolve.assert_valid(); + + let mut generated_files = wit_bindgen_core::Files::default(); + let mut opts = Opts { + generate_all: true, + runtime_path: Some("::miden::wit_bindgen::rt".to_string()), + default_bindings_module: Some("bindings".to_string()), + ..Opts::default() + }; + push_default_with_entries(&mut opts); + opts.build().generate(&mut resolve, world, &mut generated_files).unwrap(); + let (_, source) = generated_files.iter().next().unwrap(); + let file: syn::File = syn::parse_str(std::str::from_utf8(source).unwrap()).unwrap(); + let native_modules = + fpi::collect_import_modules(&file.items, &fpi::is_plain_import_function).unwrap(); + let foreign_modules = + fpi::collect_import_modules(&file.items, &fpi::is_fpi_import_function).unwrap(); + + let native = native_modules + .iter() + .find(|module| module.path_string == "miden::shared_types_dependency::api") + .expect("native cross-interface alias bindings"); + let foreign = foreign_modules + .iter() + .find(|module| module.path_string == specs[0].synthetic_module_path()) + .expect("synthetic cross-interface alias bindings"); + let native_function = native + .functions + .iter() + .find(|function| function.sig.ident == "roundtrip") + .expect("native roundtrip binding"); + let foreign_function = foreign + .functions + .iter() + .find(|function| function.sig.ident == "fpi_roundtrip") + .expect("synthetic roundtrip binding"); + let FnArg::Typed(native_input) = &native_function.sig.inputs[0] else { + panic!("generated WIT imports cannot contain receivers"); + }; + let FnArg::Typed(foreign_input) = &foreign_function.sig.inputs[3] else { + panic!("generated WIT imports cannot contain receivers"); + }; + + assert_ne!( + native_input.ty.to_token_stream().to_string(), + foreign_input.ty.to_token_stream().to_string(), + "fixture must exercise semantically equal aliases with different Rust spellings" + ); + fpi::validate_fpi_signature(native_function, foreign_function).unwrap(); + } + /// Asserts that a synthetic function either reuses a primitive directly or owns an alias to /// the original dependency type. fn assert_synthetic_type_alias( diff --git a/sdk/sdk/CHANGELOG.md b/sdk/sdk/CHANGELOG.md index d68d8e178..ec9b360b6 100644 --- a/sdk/sdk/CHANGELOG.md +++ b/sdk/sdk/CHANGELOG.md @@ -9,7 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - `#[account(...)]` now keeps canonical dependency WIT interfaces unchanged, fixing a rare component-link failure when plain note, transaction-script, or sibling imports of a dependency - are linked with generated FPI bindings #1276 + are linked with generated FPI bindings. FPI bindings now also preserve anonymous compound types + #1276 ### BREAKING - Component methods must now be explicitly marked `#[account_procedure]` to be part of the account From 1f2fa7991f1dcafc6bd7594c3e7b6ee81be28ab4 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 13 Jul 2026 11:41:40 +0300 Subject: [PATCH 08/23] fix(sdk): distinguish FPI binding import worlds Every account wrapper previously emitted the same package and world identity even when its selected dependency set differed. Merging separately encoded component metadata then treated incompatible worlds as duplicate definitions. Derive the binding identity from the sorted canonical import set and FPI ABI version. Equal views remain merge-compatible, while different views receive distinct stable identities. --- sdk/base-macros/src/foreign_account.rs | 5 +- sdk/base-macros/src/fpi.rs | 47 +++++-- sdk/base-macros/src/generate.rs | 62 ++++----- sdk/base-macros/src/wit_world.rs | 4 +- sdk/sdk/CHANGELOG.md | 2 +- .../src/mockchain/fpi/blind_import.rs | 130 ++++++++++++++++-- 6 files changed, 187 insertions(+), 63 deletions(-) diff --git a/sdk/base-macros/src/foreign_account.rs b/sdk/base-macros/src/foreign_account.rs index 02d2700de..ea64184c9 100644 --- a/sdk/base-macros/src/foreign_account.rs +++ b/sdk/base-macros/src/foreign_account.rs @@ -54,7 +54,8 @@ fn expand_inner( .collect::>(); let fpi_imports = fpi::import_specs(&imports)?; let with_entries = fpi::dependency_type_with_entries(&dependencies); - let inline_wit = fpi::import_world_wit(FOREIGN_ACCOUNT_WORLD, &fpi_imports); + let world_name = fpi::import_world_name(FOREIGN_ACCOUNT_WORLD, &fpi_imports); + let inline_wit = fpi::import_world_wit(&world_name, &fpi_imports); let binding_module_ident = binding_module_ident(&account_struct.ident); let wit_config = manifest_paths::resolve_wit_paths(manifest_paths::ResolveOptions { allow_missing_local_wit: true, @@ -62,7 +63,7 @@ fn expand_inner( let bindings = generate::generate_inline_fpi_bindings( &wit_config, &inline_wit, - FOREIGN_ACCOUNT_WORLD, + &world_name, &fpi_imports, &with_entries, )?; diff --git a/sdk/base-macros/src/fpi.rs b/sdk/base-macros/src/fpi.rs index 22250a347..1255431c4 100644 --- a/sdk/base-macros/src/fpi.rs +++ b/sdk/base-macros/src/fpi.rs @@ -11,6 +11,7 @@ use std::{ use heck::{ToKebabCase, ToSnakeCase}; use miden_assembly_syntax::ast::{Path as MasmPath, PathComponent}; use miden_mast_package::{Package, PackageExport}; +use miden_protocol::{crypto::hash::blake::Blake3_256, utils::serde::Deserializable}; use proc_macro2::{Span, TokenStream as TokenStream2}; use quote::{ToTokens, quote}; use semver::Version; @@ -32,7 +33,7 @@ use crate::{ CORE_TYPES_INTERFACE, collect_arg_idents, format_module_path, qualify_signature_types, should_generate_struct, }, - wit_world::SelectedDependency, + wit_world::{self, SelectedDependency}, }; /// WIT function prefix reserved for generated foreign procedure imports. @@ -139,22 +140,33 @@ pub(crate) fn import_specs(imports: &[String]) -> syn::Result imports.into_iter().map(FpiImportSpec::new).collect() } +/// Derives a stable binding-world name from its canonical imports and FPI ABI version. +pub(crate) fn import_world_name(name: &str, imports: &[FpiImportSpec]) -> String { + let mut identity = format!("{FPI_ABI_VERSION}\0"); + for import in imports { + write!(identity, "{}:", import.source_import().len()) + .expect("writing to an in-memory string cannot fail"); + identity.push_str(import.source_import()); + } + let digest = Blake3_256::hash(identity.as_bytes()); + let mut fingerprint = String::with_capacity(32); + for byte in &digest.as_bytes()[..16] { + write!(fingerprint, "{byte:02x}").expect("writing to an in-memory string cannot fail"); + } + format!("{name}-{fingerprint}") +} + /// Renders the private import world used exclusively by `#[account]` bindings. pub(crate) fn import_world_wit(name: &str, imports: &[FpiImportSpec]) -> String { - let mut wit = format!("package miden:{name}@1.0.0;\n\nworld {name} {{\n"); - // The prefix added after WIT resolution references these types directly. Importing the owner // up front keeps the world's dependency closure complete without mutating or re-elaborating it. - writeln!(wit, " import {CORE_TYPES_INTERFACE};") - .expect("writing to an in-memory string cannot fail"); + let mut source_imports = vec![CORE_TYPES_INTERFACE.to_string()]; for import in imports { if import.source_import() != CORE_TYPES_INTERFACE { - writeln!(wit, " import {};", import.source_import()) - .expect("writing to an in-memory string cannot fail"); + source_imports.push(import.source_import().to_string()); } } - wit.push_str("}\n"); - wit + wit_world::import_world_wit(name, &source_imports) } /// Populates private synthetic interfaces with `fpi-` variants of real dependency functions. @@ -1839,6 +1851,23 @@ mod tests { assert_ne!(specs[0].synthetic_import(), specs[2].synthetic_import()); } + /// Keeps binding-world identity stable for equal imports and distinct for different imports. + #[test] + fn fpi_import_world_names_follow_the_canonical_import_set() { + let first = import_specs(&["miden:first/api@1.0.0".to_string()]).unwrap(); + let first_repeated = import_specs(&[ + "miden:first/api@1.0.0".to_string(), + "miden:first/api@1.0.0".to_string(), + ]) + .unwrap(); + let second = import_specs(&["miden:second/api@1.0.0".to_string()]).unwrap(); + + let first_name = import_world_name("foreign-account-bindings", &first); + assert_eq!(first_name, import_world_name("foreign-account-bindings", &first_repeated)); + assert_ne!(first_name, import_world_name("foreign-account-bindings", &second)); + assert!(first_name.starts_with("foreign-account-bindings-")); + } + /// Keeps canonical source imports in WIT while synthetic packages are injected after resolve. #[test] fn fpi_import_world_keeps_real_imports_separate_from_private_interfaces() { diff --git a/sdk/base-macros/src/generate.rs b/sdk/base-macros/src/generate.rs index 3b7bc29ce..97d33c30a 100644 --- a/sdk/base-macros/src/generate.rs +++ b/sdk/base-macros/src/generate.rs @@ -1371,13 +1371,15 @@ interface api { for (first, second) in cases { for reverse in [false, true] { - let (mut resolve, worlds) = - parse_merge_test_worlds(first.as_deref(), second.as_deref()); - let (from, into) = if reverse { - (worlds[1], worlds[0]) + let first = parse_merge_test_world(first.as_deref()); + let second = parse_merge_test_world(second.as_deref()); + let ((mut resolve, into), (other, from)) = if reverse { + (second, first) } else { - (worlds[0], worlds[1]) + (first, second) }; + let remap = resolve.merge(other).unwrap(); + let from = remap.map_world(from, Default::default()).unwrap(); let mut clone_maps = wit_bindgen_core::wit_parser::CloneMaps::default(); resolve.merge_worlds(from, into, &mut clone_maps).unwrap(); resolve.assert_valid(); @@ -1385,11 +1387,8 @@ interface api { } } - /// Builds two plain-or-FPI worlds in one resolver for merge-order tests. - fn parse_merge_test_worlds( - first_imports: Option<&[String]>, - second_imports: Option<&[String]>, - ) -> (Resolve, [WorldId; 2]) { + /// Builds one independently encoded plain-or-FPI world for metadata merge tests. + fn parse_merge_test_world(imports: Option<&[String]>) -> (Resolve, WorldId) { const FIRST_IMPORT: &str = "miden:first-dependency/api@1.0.0"; let mut resolve = Resolve::default(); @@ -1442,32 +1441,27 @@ interface api { resolve.push_group(group).unwrap(); } - let mut worlds = Vec::with_capacity(2); - for (world_name, imports) in - [("merge-first", first_imports), ("merge-second", second_imports)] - { - let (source, specs) = match imports { - Some(imports) => { - let specs = fpi::import_specs(imports).unwrap(); - (fpi::import_world_wit(world_name, &specs), Some(specs)) - } - None => ( - format!( - "package miden:{world_name}@1.0.0;\n\nworld {world_name} {{\n import \ - {FIRST_IMPORT};\n}}\n" - ), - None, - ), - }; - let group = UnresolvedPackageGroup::parse("inline", &source).unwrap(); - let package = resolve.push_group(group).unwrap(); - let world = resolve.select_world(&[package], None).unwrap(); - if let Some(specs) = specs { - fpi::inject_imports(&mut resolve, world, &specs).unwrap(); + let (source, specs) = match imports { + Some(imports) => { + let specs = fpi::import_specs(imports).unwrap(); + let world_name = fpi::import_world_name("foreign-account-bindings", &specs); + (fpi::import_world_wit(&world_name, &specs), Some(specs)) } - worlds.push(world); + None => ( + format!( + "package miden:plain-merge-world@1.0.0;\n\nworld plain-merge-world {{\n \ + import {FIRST_IMPORT};\n}}\n" + ), + None, + ), + }; + let group = UnresolvedPackageGroup::parse("inline", &source).unwrap(); + let package = resolve.push_group(group).unwrap(); + let world = resolve.select_world(&[package], None).unwrap(); + if let Some(specs) = specs { + fpi::inject_imports(&mut resolve, world, &specs).unwrap(); } - (resolve, [worlds[0], worlds[1]]) + (resolve, world) } } diff --git a/sdk/base-macros/src/wit_world.rs b/sdk/base-macros/src/wit_world.rs index afaded3d7..dec99802e 100644 --- a/sdk/base-macros/src/wit_world.rs +++ b/sdk/base-macros/src/wit_world.rs @@ -328,8 +328,8 @@ pub(crate) struct DependencyInterface { /// Renders a standalone inline WIT package whose single world imports the given interfaces. /// -/// Shared by the `#[account]` FPI bindings and the `#[component]` sibling bindings, which both -/// generate import-only worlds next to the user's items. +/// Shared by generated FPI and sibling bindings so import-only world formatting remains +/// consistent. pub(crate) fn import_world_wit(name: &str, imports: &[String]) -> String { let mut tokens = format!("package miden:{name}@1.0.0;\n\nworld {name} {{\n"); for import in imports { diff --git a/sdk/sdk/CHANGELOG.md b/sdk/sdk/CHANGELOG.md index ec9b360b6..e26ec0eab 100644 --- a/sdk/sdk/CHANGELOG.md +++ b/sdk/sdk/CHANGELOG.md @@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `#[account(...)]` now keeps canonical dependency WIT interfaces unchanged, fixing a rare component-link failure when plain note, transaction-script, or sibling imports of a dependency are linked with generated FPI bindings. FPI bindings now also preserve anonymous compound types - #1276 + and coexist when separate wrappers select different dependency sets #1276 ### BREAKING - Component methods must now be explicitly marked `#[account_procedure]` to be part of the account diff --git a/tests/integration-network/src/mockchain/fpi/blind_import.rs b/tests/integration-network/src/mockchain/fpi/blind_import.rs index 46edd4249..99879d1f5 100644 --- a/tests/integration-network/src/mockchain/fpi/blind_import.rs +++ b/tests/integration-network/src/mockchain/fpi/blind_import.rs @@ -5,7 +5,8 @@ use midenc_integration_test_support::{CompilerTestBuilder, Project, project}; use super::super::support::{ account_cargo_toml_for, account_miden_project_toml_with_interface, compile_rust_package, - note_cargo_toml_for_dependency, note_miden_project_toml_for_dependency, + note_cargo_toml_for_dependencies, note_cargo_toml_for_dependency, + note_miden_project_toml_for_dependencies, note_miden_project_toml_for_dependency, }; /// Cargo package name of the dependency shared by the regression fixtures. @@ -25,13 +26,8 @@ fn plain_dependency_import_and_fpi_bindings_are_compatible() { const NOTE_PACKAGE: &str = "miden:template-test"; let account_project = build_basic_wallet_project("plain-import-and-fpi-basic-wallet"); - let note_project = build_note_project( - NOTE_NAME, - NOTE_NAME, - NOTE_PACKAGE, - &account_project, - TEMPLATE_TEST_NOTE_SOURCE, - ); + let note_project = + build_note_project(NOTE_NAME, NOTE_PACKAGE, &account_project, TEMPLATE_TEST_NOTE_SOURCE); compile_debug_note(¬e_project); } @@ -46,7 +42,6 @@ fn same_named_account_wrappers_have_distinct_stable_metadata_sections() { let account_project = build_basic_wallet_project("repeated-bindings-basic-wallet"); let note_project = build_note_project( - NOTE_NAME, NOTE_NAME, NOTE_PACKAGE, &account_project, @@ -55,20 +50,74 @@ fn same_named_account_wrappers_have_distinct_stable_metadata_sections() { compile_debug_note(¬e_project); } +/// Compiles account wrappers whose binding worlds import different dependencies. +#[test] +fn different_account_import_sets_have_distinct_metadata_worlds() { + const FIRST_ACCOUNT_NAME: &str = "first-wallet"; + const FIRST_ACCOUNT_PACKAGE: &str = "miden:first-wallet"; + const SECOND_ACCOUNT_NAME: &str = "second-wallet"; + const SECOND_ACCOUNT_PACKAGE: &str = "miden:second-wallet"; + const NOTE_NAME: &str = "different-account-bindings"; + const NOTE_PACKAGE: &str = "miden:different-account-bindings"; + + let first_account = build_wallet_project( + "different-bindings-first-wallet", + FIRST_ACCOUNT_NAME, + FIRST_ACCOUNT_PACKAGE, + ); + let second_account = build_wallet_project( + "different-bindings-second-wallet", + SECOND_ACCOUNT_NAME, + SECOND_ACCOUNT_PACKAGE, + ); + let first_root = first_account.root(); + let second_root = second_account.root(); + let dependencies = [ + (FIRST_ACCOUNT_PACKAGE, first_root.as_path()), + (SECOND_ACCOUNT_PACKAGE, second_root.as_path()), + ]; + let note_project = project(NOTE_NAME) + .file( + "miden-project.toml", + &use_regression_version(note_miden_project_toml_for_dependencies( + NOTE_NAME, + NOTE_PACKAGE, + &dependencies, + )), + ) + .file( + "Cargo.toml", + &use_regression_version(note_cargo_toml_for_dependencies( + NOTE_NAME, + NOTE_PACKAGE, + &dependencies, + )), + ) + .file("src/lib.rs", DIFFERENT_BINDINGS_NOTE_SOURCE) + .build(); + + compile_debug_note(¬e_project); +} + /// Builds the basic-wallet dependency used by one regression fixture. fn build_basic_wallet_project(folder_name: &str) -> Project { + build_wallet_project(folder_name, ACCOUNT_NAME, ACCOUNT_PACKAGE) +} + +/// Builds one wallet dependency used by the metadata-world regression fixtures. +fn build_wallet_project(folder_name: &str, account_name: &str, account_package: &str) -> Project { let project = project(folder_name) .file( "miden-project.toml", &use_regression_version(account_miden_project_toml_with_interface( - ACCOUNT_NAME, - ACCOUNT_PACKAGE, + account_name, + account_package, "basic-wallet", )), ) .file( "Cargo.toml", - &use_regression_version(account_cargo_toml_for(ACCOUNT_NAME, ACCOUNT_PACKAGE)), + &use_regression_version(account_cargo_toml_for(account_name, account_package)), ) .file("src/lib.rs", BASIC_WALLET_SOURCE) .build(); @@ -78,14 +127,13 @@ fn build_basic_wallet_project(folder_name: &str) -> Project { /// Builds a note project with the supplied basic-wallet dependency and source. fn build_note_project( - folder_name: &str, note_name: &str, note_package: &str, account_project: &Project, source: &str, ) -> Project { let account_root = account_project.root(); - project(folder_name) + project(note_name) .file( "miden-project.toml", &use_regression_version(note_miden_project_toml_for_dependency( @@ -122,7 +170,24 @@ fn compile_debug_note(note_project: &Project) { /// Updates generated fixture manifests to the package version which exposes the linker ordering. fn use_regression_version(manifest: String) -> String { - manifest.replace("0.0.1", "0.1.0") + const ORIGINAL_PACKAGE_VERSION: &str = "version = \"0.0.1\""; + const REPLACEMENT_PACKAGE_VERSION: &str = "version = \"0.1.0\""; + const ORIGINAL_NAMESPACE_VERSION: &str = "@0.0.1\""; + const REPLACEMENT_NAMESPACE_VERSION: &str = "@0.1.0\""; + + assert_eq!( + manifest.matches(ORIGINAL_PACKAGE_VERSION).count(), + 1, + "fixture manifest must contain exactly one default package version" + ); + assert!( + manifest.matches(ORIGINAL_NAMESPACE_VERSION).count() <= 1, + "fixture manifest must contain at most one component namespace version" + ); + + manifest + .replacen(ORIGINAL_PACKAGE_VERSION, REPLACEMENT_PACKAGE_VERSION, 1) + .replacen(ORIGINAL_NAMESPACE_VERSION, REPLACEMENT_NAMESPACE_VERSION, 1) } /// Account component source used to produce the canonical basic-wallet interface. @@ -203,3 +268,38 @@ impl RepeatedBindingsNote { } } "#; + +/// Note source containing wrappers whose binding worlds have different canonical imports. +const DIFFERENT_BINDINGS_NOTE_SOURCE: &str = r#" +#![no_std] +#![feature(alloc_error_handler)] + +use miden::{AccountId, Word, account, note}; + +/// Binding to the first wallet dependency. +#[account(first_wallet::BasicWallet as FirstBasicWallet)] +struct FirstWallet; + +/// Binding to the second wallet dependency. +#[account(second_wallet::BasicWallet as SecondBasicWallet)] +struct SecondWallet; + +/// Note carrying the accounts used to retain both foreign bindings. +#[note] +struct DifferentBindingsNote { + /// Account selected for the first binding. + first_account_id: AccountId, + /// Account selected for the second binding. + second_account_id: AccountId, +} + +#[note] +impl DifferentBindingsNote { + /// Constructs both wrappers so both metadata worlds reach the final Wasm module. + #[note_script] + pub fn script(self, _arg: Word) { + let _first = FirstWallet::new(self.first_account_id); + let _second = SecondWallet::new(self.second_account_id); + } +} +"#; From 8c1aba60512f5ff87fb0500408e72b59374f3892 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 13 Jul 2026 11:42:08 +0300 Subject: [PATCH 09/23] fix(sdk): reject ambient synthetic FPI package collisions Generated FPI interfaces use deterministic package identities derived from source packages. A real WIT package could already occupy one of those legal identities and be silently reused or mutated, producing an opaque compatibility failure. Track packages created during one injection and reject any pre-existing ambient package with a precise collision diagnostic, while still reusing a generated package for multiple interfaces in the same injection. --- sdk/base-macros/src/fpi.rs | 71 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/sdk/base-macros/src/fpi.rs b/sdk/base-macros/src/fpi.rs index 1255431c4..6b6d24557 100644 --- a/sdk/base-macros/src/fpi.rs +++ b/sdk/base-macros/src/fpi.rs @@ -180,9 +180,11 @@ pub(crate) fn inject_imports( } let core_types = resolve_core_types(resolve)?; + let mut created_packages = HashSet::new(); for import in imports { let source_id = find_source_interface(resolve, world_id, import.source_import())?; - let (synthetic_id, created) = ensure_synthetic_interface(resolve, import)?; + let (synthetic_id, created) = + ensure_synthetic_interface(resolve, import, &mut created_packages)?; validate_reserved_fpi_namespace( import.source_import(), @@ -229,12 +231,26 @@ fn find_source_interface( } /// Finds or creates the canonical private interface for one FPI dependency. +/// +/// The returned boolean is true when this call created the interface. fn ensure_synthetic_interface( resolve: &mut Resolve, import: &FpiImportSpec, + created_packages: &mut HashSet, ) -> syn::Result<(InterfaceId, bool)> { let package_id = match resolve.package_names.get(&import.synthetic_package) { - Some(id) => *id, + Some(id) if created_packages.contains(&import.synthetic_package) => *id, + Some(_) => { + return Err(Error::new( + Span::call_site(), + format!( + "synthetic FPI package `{}` for dependency interface `{}` collides with a WIT \ + package already loaded by the project", + import.synthetic_package, + import.source_import() + ), + )); + } None => { let id = resolve.packages.alloc(WitPackage { name: import.synthetic_package.clone(), @@ -243,6 +259,7 @@ fn ensure_synthetic_interface( worlds: Default::default(), }); resolve.package_names.insert(import.synthetic_package.clone(), id); + created_packages.insert(import.synthetic_package.clone()); id } }; @@ -1896,6 +1913,56 @@ mod tests { assert!(error.to_string().contains("namespace:package/interface@version")); } + /// Rejects a real package which already occupies a generated synthetic identity. + #[test] + fn synthetic_fpi_package_rejects_ambient_identity_collisions() { + const SOURCE_IMPORT: &str = "miden:wallet/api@1.0.0"; + + let mut resolve = Resolve::default(); + let sdk_group = wit_bindgen_core::wit_parser::UnresolvedPackageGroup::parse( + "miden.wit", + crate::manifest_paths::SDK_WIT_SOURCE, + ) + .unwrap(); + resolve.push_group(sdk_group).unwrap(); + for (name, source) in [ + ( + "wallet.wit", + r#" +package miden:wallet@1.0.0; +interface api { + ping: func(); +} +"#, + ), + ( + "collision.wit", + r#" +package miden:fpi-v1-wallet@1.0.0; +interface api { + pong: func(); +} +"#, + ), + ] { + let group = + wit_bindgen_core::wit_parser::UnresolvedPackageGroup::parse(name, source).unwrap(); + resolve.push_group(group).unwrap(); + } + + let specs = import_specs(&[SOURCE_IMPORT.to_string()]).unwrap(); + let world_name = import_world_name("collision-test", &specs); + let inline = import_world_wit(&world_name, &specs); + let group = + wit_bindgen_core::wit_parser::UnresolvedPackageGroup::parse("inline", &inline).unwrap(); + let package = resolve.push_group(group).unwrap(); + let world = resolve.select_world(&[package], None).unwrap(); + + let error = inject_imports(&mut resolve, world, &specs).unwrap_err(); + assert!(error.to_string().contains("collides with a WIT package")); + assert!(error.to_string().contains("miden:fpi-v1-wallet@1.0.0")); + } + #[test] fn procedure_root_key_uses_full_wit_interface_component() { let path = From fa3727f8ecb5f27c1a1b012ed726099f9a35e790 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 13 Jul 2026 11:42:29 +0300 Subject: [PATCH 10/23] fix(sdk): qualify component metadata by package identity Module paths alone do not distinguish generated metadata emitted by different package versions, so equal section names can still be concatenated during linking. Prefix the stable module discriminator with the Cargo package name and version. Document the module-scope requirement because function-local scopes are intentionally excluded to keep identities independent of source positions. --- sdk/base-macros/src/generate.rs | 25 ++++++++++++++++--------- sdk/base-macros/src/lib.rs | 4 ++++ sdk/sdk/CHANGELOG.md | 3 +++ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/sdk/base-macros/src/generate.rs b/sdk/base-macros/src/generate.rs index 97d33c30a..c864e997a 100644 --- a/sdk/base-macros/src/generate.rs +++ b/sdk/base-macros/src/generate.rs @@ -304,27 +304,32 @@ fn append_module_path_to_component_type_sections(file: &mut syn::File) -> Result if !link_section.path.is_ident("link_section") { return; } - let syn::Expr::Lit(value) = &link_section.value else { + let syn::Expr::Lit(syn::ExprLit { + lit: syn::Lit::Str(section_name), + .. + }) = &link_section.value + else { self.error = Some(Error::new_spanned( &link_section.value, "wit-bindgen component metadata section name must be a string literal", )); return; }; - let syn::Lit::Str(section_name) = &value.lit else { - self.error = Some(Error::new_spanned( - &value.lit, - "wit-bindgen component metadata section name must be a string literal", - )); - return; - }; if !section_name.value().starts_with("component-type") { return; } let section_name = section_name.clone(); attribute.meta = parse_quote! { - unsafe(link_section = concat!(#section_name, ":", module_path!())) + unsafe(link_section = concat!( + #section_name, + ":", + env!("CARGO_PKG_NAME"), + "@", + env!("CARGO_PKG_VERSION"), + ":", + module_path!(), + )) }; self.rewritten += 1; } @@ -764,6 +769,8 @@ mod tests { assert!(section_name.mac.path.is_ident("concat")); let tokens = section_name.mac.tokens.to_string(); assert!(tokens.contains("component-type:wit-bindgen:test")); + assert!(tokens.contains("CARGO_PKG_NAME")); + assert!(tokens.contains("CARGO_PKG_VERSION")); assert!(tokens.contains("module_path")); } diff --git a/sdk/base-macros/src/lib.rs b/sdk/base-macros/src/lib.rs index 1f98b0599..25cc8272a 100644 --- a/sdk/base-macros/src/lib.rs +++ b/sdk/base-macros/src/lib.rs @@ -237,6 +237,10 @@ pub fn component_storage( /// the wrapper, so a same-module `#[note]`/`#[tx_script]` entrypoint sees them without an import; a /// cross-module entrypoint needs `use` of the trait. /// +/// Declare the wrapper at module scope. Block-scoped wrappers are unsupported because Rust's +/// `module_path!()` does not include the enclosing function, so two same-named local wrappers +/// cannot receive distinct stable component-metadata identities without source positions. +/// /// The generated trait name must differ from the wrapper struct and from every other generated /// trait. When that is not naturally true — the wrapper shares the interface name, two packages /// export the same interface name, or the crate already uses the interface as a sibling diff --git a/sdk/sdk/CHANGELOG.md b/sdk/sdk/CHANGELOG.md index e26ec0eab..b108eca98 100644 --- a/sdk/sdk/CHANGELOG.md +++ b/sdk/sdk/CHANGELOG.md @@ -53,6 +53,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `faucet::{mint, burn}` take a pre-built `Asset`. - `output_note::create` can now only be called from account-component context (runtime-enforced); tx/note scripts create notes through an account component wrapper method. +- `#[account(...)]` wrapper structs are supported only at module scope so their generated component + metadata has a stable semantic identity. Move a wrapper declared inside a function or block to + its enclosing module. ### Added - `#[account(...)]` references accept an `as Alias` to rename the generated trait, e.g. From 162e52cc7e2ee754bf7599d75137156c737809ad Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 13 Jul 2026 15:31:13 +0300 Subject: [PATCH 11/23] feat(sdk): add opt-in inline WIT emission Synthetic FPI interfaces are assembled inside the SDK proc macros, which makes their resolved shape difficult to inspect when component metadata fails later in compilation. Add an internal MIDENC_EMIT_WIT renderer that writes inline worlds after FPI injection, including their nested synthetic packages. Keep the printer dependency behind an SDK-forwarded feature so normal builds do not gain a direct dependency on it. --- Cargo.lock | 1 + sdk/base-macros/Cargo.toml | 6 ++ sdk/base-macros/src/fpi.rs | 6 ++ sdk/base-macros/src/generate.rs | 159 ++++++++++++++++++++++++++++++++ sdk/sdk/Cargo.toml | 1 + 5 files changed, 173 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index da67fdd99..2498a6987 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2859,6 +2859,7 @@ dependencies = [ "toml 1.1.3+spec-1.1.0", "wit-bindgen-core", "wit-bindgen-rust", + "wit-component", ] [[package]] diff --git a/sdk/base-macros/Cargo.toml b/sdk/base-macros/Cargo.toml index bb95a0321..a5b3af4d2 100644 --- a/sdk/base-macros/Cargo.toml +++ b/sdk/base-macros/Cargo.toml @@ -15,6 +15,10 @@ edition.workspace = true proc-macro = true doctest = false +[features] +default = [] +internal-wit-emit = ["dep:wit-component"] + [dependencies] proc-macro2.workspace = true quote.workspace = true @@ -31,12 +35,14 @@ miden-formatting.workspace = true midenc-frontend-wasm-metadata.workspace = true wit-bindgen-core = "0.57" wit-bindgen-rust = { version = "0.57", default-features = false } +wit-component = { version = "0.247", optional = true } [dev-dependencies] # NOTE: Use local paths for dev-only dependency to avoid relying on crates.io during packaging miden-protocol = { workspace = true, features = ["std"] } miden-field.workspace = true miden-field-repr.workspace = true +wit-component = "0.247" [package.metadata.docs.rs] default-target = "x86_64-unknown-linux-gnu" diff --git a/sdk/base-macros/src/fpi.rs b/sdk/base-macros/src/fpi.rs index 6b6d24557..a63116470 100644 --- a/sdk/base-macros/src/fpi.rs +++ b/sdk/base-macros/src/fpi.rs @@ -96,6 +96,12 @@ impl FpiImportSpec { &self.synthetic_import } + /// Returns the package which owns the private synthetic interface. + #[cfg(any(test, feature = "internal-wit-emit"))] + pub(crate) fn synthetic_package(&self) -> &PackageName { + &self.synthetic_package + } + /// Returns the Rust module path generated for the private synthetic interface. pub(crate) fn synthetic_module_path(&self) -> String { import_module_path(&self.synthetic_import) diff --git a/sdk/base-macros/src/generate.rs b/sdk/base-macros/src/generate.rs index c864e997a..6450809c8 100644 --- a/sdk/base-macros/src/generate.rs +++ b/sdk/base-macros/src/generate.rs @@ -232,6 +232,10 @@ fn generate_bindings_from_sources( .select_world(&wit_sources.packages, world) .map_err(|err| Error::new(Span::call_site(), err.to_string()))?; fpi::inject_imports(&mut wit_sources.resolve, world_id, fpi_imports)?; + #[cfg(feature = "internal-wit-emit")] + if inline_source.is_some() { + maybe_emit_inline_wit(&wit_sources.resolve, world_id, fpi_imports)?; + } let mut opts = Opts { generate_all: true, @@ -276,10 +280,117 @@ fn generate_bindings_from_sources( const _: &[u8] = include_bytes!(#utf8_path); }); } + #[cfg(feature = "internal-wit-emit")] + if inline_source.is_some() { + // Make Cargo invalidate cached macro output when inline-WIT emission is toggled. + tokens.extend(quote! { + const _: Option<&str> = option_env!("MIDENC_EMIT_WIT"); + }); + } Ok(tokens) } +/// Emits a resolved inline WIT world when `MIDENC_EMIT_WIT[=]` is set. +#[cfg(feature = "internal-wit-emit")] +fn maybe_emit_inline_wit( + resolve: &Resolve, + world_id: WorldId, + fpi_imports: &[fpi::FpiImportSpec], +) -> Result<(), Error> { + let Some(value) = env::var_os("MIDENC_EMIT_WIT") else { + return Ok(()); + }; + let out_dir = if value.is_empty() || value == std::ffi::OsStr::new("1") { + env::current_dir().map_err(|err| { + Error::new( + Span::call_site(), + format!("failed to resolve the MIDENC_EMIT_WIT output directory: {err}"), + ) + })? + } else { + PathBuf::from(value) + }; + fs::create_dir_all(&out_dir).map_err(|err| { + Error::new( + Span::call_site(), + format!( + "failed to create MIDENC_EMIT_WIT output directory '{}': {err}", + out_dir.display() + ), + ) + })?; + + let source = render_resolved_inline_wit(resolve, world_id, fpi_imports)?; + let package_name = env::var("CARGO_PKG_NAME").unwrap_or_else(|_| "generated".to_string()); + let world_name = &resolve.worlds[world_id].name; + let filename = format!( + "{}.{}.inline.wit", + sanitize_wit_filename_component(&package_name), + sanitize_wit_filename_component(world_name) + ); + let out_file = out_dir.join(filename); + fs::write(&out_file, source).map_err(|err| { + Error::new( + Span::call_site(), + format!("failed to write inline WIT to '{}': {err}", out_file.display()), + ) + })?; + eprintln!("wrote inline WIT to '{}'", out_file.display()); + Ok(()) +} + +/// Renders the selected inline package and any synthetic FPI packages imported by its world. +#[cfg(any(test, feature = "internal-wit-emit"))] +fn render_resolved_inline_wit( + resolve: &Resolve, + world_id: WorldId, + fpi_imports: &[fpi::FpiImportSpec], +) -> Result { + let package_id = resolve.worlds[world_id].package.ok_or_else(|| { + Error::new(Span::call_site(), "inline WIT world is not owned by a package") + })?; + let mut nested_packages = Vec::new(); + for import in fpi_imports { + let synthetic_package = import.synthetic_package(); + let nested_package = + resolve.package_names.get(synthetic_package).copied().ok_or_else(|| { + Error::new( + Span::call_site(), + format!( + "synthetic FPI package `{synthetic_package}` is missing after injection" + ), + ) + })?; + if !nested_packages.contains(&nested_package) { + nested_packages.push(nested_package); + } + } + + let mut printer = wit_component::WitPrinter::default(); + printer.print(resolve, package_id, &nested_packages).map_err(|err| { + Error::new(Span::call_site(), format!("failed to render resolved inline WIT: {err}")) + })?; + Ok(printer.output.into()) +} + +/// Converts a package or world name into a portable filename component. +#[cfg(any(test, feature = "internal-wit-emit"))] +fn sanitize_wit_filename_component(name: &str) -> String { + let mut out = String::with_capacity(name.len()); + for ch in name.chars() { + match ch { + 'a'..='z' | 'A'..='Z' | '0'..='9' | '-' | '_' => out.push(ch), + _ => out.push('_'), + } + } + if out.is_empty() { + "generated".to_string() + } else { + out + } +} + /// Appends the generated binding module path to every component-metadata section name. fn append_module_path_to_component_type_sections(file: &mut syn::File) -> Result<(), Error> { /// Rewrites generated component-metadata attributes in place. @@ -742,6 +853,54 @@ pub(crate) fn format_module_path(path: &[syn::Ident]) -> String { mod tests { use super::*; + /// Produces portable, non-empty inline-WIT artifact names. + #[test] + fn inline_wit_filename_components_are_sanitized() { + assert_eq!(sanitize_wit_filename_component("template-test"), "template-test"); + assert_eq!( + sanitize_wit_filename_component("miden:note/world@1.0.0"), + "miden_note_world_1_0_0" + ); + assert_eq!(sanitize_wit_filename_component(""), "generated"); + } + + /// Includes synthetic FPI interfaces when rendering the resolved inline binding world. + #[test] + fn resolved_inline_wit_contains_injected_fpi_functions() { + const SOURCE_IMPORT: &str = "miden:wallet/api@1.0.0"; + + let mut resolve = Resolve::default(); + let sdk_group = + UnresolvedPackageGroup::parse("miden.wit", manifest_paths::SDK_WIT_SOURCE).unwrap(); + resolve.push_group(sdk_group).unwrap(); + let dependency = UnresolvedPackageGroup::parse( + "wallet.wit", + r#" +package miden:wallet@1.0.0; + +interface api { + ping: func(value: u32) -> u32; +} +"#, + ) + .unwrap(); + resolve.push_group(dependency).unwrap(); + + let specs = fpi::import_specs(&[SOURCE_IMPORT.to_string()]).unwrap(); + let inline = fpi::import_world_wit("foreign-account-bindings-test", &specs); + let group = UnresolvedPackageGroup::parse("inline", &inline).unwrap(); + let package = resolve.push_group(group).unwrap(); + let world = resolve.select_world(&[package], None).unwrap(); + fpi::inject_imports(&mut resolve, world, &specs).unwrap(); + + let rendered = render_resolved_inline_wit(&resolve, world, &specs).unwrap(); + + assert!(rendered.contains("import miden:fpi-v1-wallet/api@1.0.0;")); + assert!(rendered.contains("package miden:fpi-v1-wallet@1.0.0 {")); + assert!(rendered.contains("fpi-ping: func(")); + UnresolvedPackageGroup::parse("emitted.wit", &rendered).unwrap(); + } + /// Rewrites component metadata to use semantic Rust module identity. #[test] fn component_type_sections_use_the_stable_rust_module_path() { diff --git a/sdk/sdk/Cargo.toml b/sdk/sdk/Cargo.toml index 331bbf441..8f774e5a6 100644 --- a/sdk/sdk/Cargo.toml +++ b/sdk/sdk/Cargo.toml @@ -28,6 +28,7 @@ wit-bindgen = { version = "0.57", default-features = false, features = ["macros" [features] default = [] +internal-wit-emit = ["miden-base-macros/internal-wit-emit"] [package.metadata.docs.rs] default-target = "x86_64-unknown-linux-gnu" From 4e5f9bf6d7024fb8585e93e3860533c82ca0a544 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 13 Jul 2026 15:31:33 +0300 Subject: [PATCH 12/23] test: emit WIT artifacts from compiler fixtures Compiler integration failures can involve both the public generated interface and private inline worlds, but the harness previously exposed only macro-expanded Rust. Teach MIDENC_EMIT_WIT to copy each fixture's public WIT alongside the proc-macro artifacts, sharing output-directory handling with macro expansion. Generated SDK fixtures explicitly enable the internal renderer so feature selection remains in test configuration rather than compiler manifest inspection. --- README.md | 5 + .../src/mockchain/support/projects.rs | 4 +- tests/support/src/compiler_test.rs | 108 ++++++++++++++---- 3 files changed, 93 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index f30a623a3..4fba7bb2a 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,11 @@ This will run all of the unit tests in the workspace, as well as all of our `lit (comma-delimited), where `PATH` is treated either as folder e.g. `MIDENC_EMIT=ir=target/emit` or file `MIDENC_EMIT=hir=my_name.hir`. - `MIDENC_EMIT_MACRO_EXPAND[=]`: When set, integration tests dump `cargo expand` output for Rust fixtures to `.expanded.rs` files in `` (or the CWD if empty/`1`). +- `MIDENC_EMIT_WIT[=]`: When set, integration tests emit public component WIT as + `.wit` and resolved macro-generated inline worlds as `..inline.wit` in + `` (or the CWD if empty/`1`). Resolved FPI worlds include their injected synthetic packages + and `fpi-*` functions. Generated SDK integration fixtures enable the internal WIT-printer + feature in their Cargo manifests. ## Docs diff --git a/tests/integration-network/src/mockchain/support/projects.rs b/tests/integration-network/src/mockchain/support/projects.rs index b1e1a15bd..82a180849 100644 --- a/tests/integration-network/src/mockchain/support/projects.rs +++ b/tests/integration-network/src/mockchain/support/projects.rs @@ -52,7 +52,7 @@ authors = [] crate-type = ["cdylib"] [dependencies] -miden = {{ path = "{sdk_path}" }} +miden = {{ path = "{sdk_path}", features = ["internal-wit-emit"] }} [package.metadata.component] package = "{account_package}" @@ -154,7 +154,7 @@ authors = [] crate-type = ["cdylib"] [dependencies] -miden = {{ path = "{sdk_path}" }} +miden = {{ path = "{sdk_path}", features = ["internal-wit-emit"] }} [package.metadata.miden] project-kind = "note-script" diff --git a/tests/support/src/compiler_test.rs b/tests/support/src/compiler_test.rs index 5f17f6a7e..6fe6bca44 100644 --- a/tests/support/src/compiler_test.rs +++ b/tests/support/src/compiler_test.rs @@ -354,9 +354,12 @@ impl CompilerTestBuilder { Rc::new(Session::new(input.clone(), options, None, source_manager).unwrap()); let context = Rc::new(Context::new(session.clone())); let mut cargo_build_stage = midenc_compile::stages::CargoBuildStage; - let wasm_artifact = cargo_build_stage - .run(input, context.clone()) - .expect("cargo build should have produced a wasm output"); + let wasm_artifact = cargo_build_stage.run(input, context.clone()); + // Keep generated WIT available when Cargo fails after macro expansion but before + // producing the final Wasm artifact. + maybe_dump_public_generated_wit(&config); + let wasm_artifact = + wasm_artifact.expect("cargo build should have produced a wasm output"); let artifact_name = wasm_artifact .as_path() .unwrap() @@ -748,7 +751,7 @@ impl CompilerTestBuilder { [dependencies] miden-sdk-alloc = {{ path = "{sdk_alloc_path}" }} - miden = {{ path = "{sdk_path}" }} + miden = {{ path = "{sdk_path}", features = ["internal-wit-emit"] }} [lib] crate-type = ["cdylib"] @@ -1073,6 +1076,60 @@ fn get_workspace_dir() -> String { compiler_workspace_dir.to_string() } +/// Copies public component WIT for a Cargo test fixture when `MIDENC_EMIT_WIT[=]` is set. +/// +/// An empty value or `1` writes `.wit` to the current working directory. Any other +/// non-empty value is treated as the output directory. +fn maybe_dump_public_generated_wit(test: &CargoTest) { + let Some(out_dir) = emit_output_dir("MIDENC_EMIT_WIT") else { + return; + }; + + let generated_wit_dir = cargo_test_project_dir(test).join("target/generated-wit"); + let mut wit_files = match fs::read_dir(&generated_wit_dir) { + Ok(entries) => entries + .map(|entry| { + entry.unwrap_or_else(|err| { + panic!( + "failed to inspect generated WIT directory '{}': {err}", + generated_wit_dir.display() + ) + }) + }) + .map(|entry| entry.path()) + .filter(|path| path.extension().and_then(|ext| ext.to_str()) == Some("wit")) + .collect::>(), + Err(err) if err.kind() == std::io::ErrorKind::NotFound => return, + Err(err) => { + panic!( + "failed to read generated WIT directory '{}': {err}", + generated_wit_dir.display() + ) + } + }; + wit_files.sort(); + + let [wit_file] = wit_files.as_slice() else { + if wit_files.is_empty() { + return; + } + panic!( + "expected one generated WIT file in '{}', found {}", + generated_wit_dir.display(), + wit_files.len() + ); + }; + + let out_file = out_dir.join(format!("{}.wit", sanitize_filename_component(test.name.as_ref()))); + let wit_source = fs::read(wit_file).unwrap_or_else(|err| { + panic!("failed to read generated WIT file '{}': {err}", wit_file.display()) + }); + fs::write(&out_file, wit_source).unwrap_or_else(|err| { + panic!("failed to write generated WIT to '{}': {err}", out_file.display()) + }); + eprintln!("wrote generated WIT to '{}'", out_file.display()); +} + /// Run `cargo expand` for the given Cargo test fixture, and write the expanded Rust code to disk if /// `MIDENC_EMIT_MACRO_EXPAND[=]` is set. /// @@ -1081,27 +1138,11 @@ fn get_workspace_dir() -> String { /// the current working directory. When set to a non-empty value other than `1`, it is treated as /// the output directory. fn maybe_dump_cargo_expand(test: &CargoTest, rustflags_env: Option<&str>) { - let Some(value) = std::env::var_os("MIDENC_EMIT_MACRO_EXPAND") else { + let Some(out_dir) = emit_output_dir("MIDENC_EMIT_MACRO_EXPAND") else { return; }; - let project_dir = if test.project_dir.is_absolute() { - test.project_dir.clone() - } else { - std::env::current_dir().unwrap().join(&test.project_dir) - }; - - let out_dir = if value.is_empty() || value == std::ffi::OsStr::new("1") { - std::env::current_dir().unwrap() - } else { - PathBuf::from(value) - }; - fs::create_dir_all(&out_dir).unwrap_or_else(|err| { - panic!( - "failed to create MIDENC_EMIT_MACRO_EXPAND output directory '{}': {err}", - out_dir.display() - ) - }); + let project_dir = cargo_test_project_dir(test); let filename = format!("{}.expanded.rs", sanitize_filename_component(test.name.as_ref())); let out_file = out_dir.join(filename); @@ -1144,6 +1185,29 @@ fn maybe_dump_cargo_expand(test: &CargoTest, rustflags_env: Option<&str>) { eprintln!("wrote expanded Rust code to '{}'", out_file.display()); } +/// Returns an absolute path to a Cargo test fixture's project directory. +fn cargo_test_project_dir(test: &CargoTest) -> PathBuf { + if test.project_dir.is_absolute() { + test.project_dir.clone() + } else { + std::env::current_dir().unwrap().join(&test.project_dir) + } +} + +/// Resolves and creates the directory selected by an opt-in artifact emission variable. +fn emit_output_dir(variable: &str) -> Option { + let value = std::env::var_os(variable)?; + let out_dir = if value.is_empty() || value == std::ffi::OsStr::new("1") { + std::env::current_dir().unwrap() + } else { + PathBuf::from(value) + }; + fs::create_dir_all(&out_dir).unwrap_or_else(|err| { + panic!("failed to create {variable} output directory '{}': {err}", out_dir.display()) + }); + Some(out_dir) +} + /// Convert an arbitrary test name into a reasonable filename component. fn sanitize_filename_component(name: &str) -> String { let mut out = String::with_capacity(name.len()); From 1df2b36d4b098a693acd92b33a8a19c764ce9bf8 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Mon, 13 Jul 2026 16:33:01 +0300 Subject: [PATCH 13/23] build(sdk): inherit wit-component from workspace The workspace inheritance gate rejects dependencies repeated across normal and development scopes unless their version is centralized. The optional WIT printer declared wit-component in both scopes of base-macros, leaving CI unable to validate the manifests. Promote the version to the workspace dependency table and inherit it for both declarations. This preserves internal-wit-emit feature gating while satisfying the workspace ownership rule. --- Cargo.toml | 1 + sdk/base-macros/Cargo.toml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3227e2d99..c95610c36 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -139,6 +139,7 @@ wasmparser = { version = "^0.248", default-features = false, features = [ "validate", "simd", ] } +wit-component = "0.247" # Workspace crates midenc-codegen-masm = { version = "0.9.2", path = "codegen/masm" } diff --git a/sdk/base-macros/Cargo.toml b/sdk/base-macros/Cargo.toml index a5b3af4d2..b4ca4e227 100644 --- a/sdk/base-macros/Cargo.toml +++ b/sdk/base-macros/Cargo.toml @@ -35,14 +35,14 @@ miden-formatting.workspace = true midenc-frontend-wasm-metadata.workspace = true wit-bindgen-core = "0.57" wit-bindgen-rust = { version = "0.57", default-features = false } -wit-component = { version = "0.247", optional = true } +wit-component = { workspace = true, optional = true } [dev-dependencies] # NOTE: Use local paths for dev-only dependency to avoid relying on crates.io during packaging miden-protocol = { workspace = true, features = ["std"] } miden-field.workspace = true miden-field-repr.workspace = true -wit-component = "0.247" +wit-component.workspace = true [package.metadata.docs.rs] default-target = "x86_64-unknown-linux-gnu" From b37c5b7fb94390895ed954e18640a4b2274c9c0d Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Tue, 14 Jul 2026 14:42:13 +0300 Subject: [PATCH 14/23] perf(wasm): lower aligned accesses through element pointers Naturally aligned Wasm scalar accesses were asserted in byte space, normalized again during MASM lowering, and then routed through dynamic-offset memory helpers. Normalize proven four-byte-aligned scalar addresses once and carry the quotient as an element-space pointer. This lets later lowering select element-space memory operations while potentially unaligned accesses remain on the byte-pointer path. --- dialects/wasm/src/mem.rs | 43 ++- .../src/code_translator/expected/i32_load.hir | 8 +- .../code_translator/expected/i32_store.hir | 8 +- .../code_translator/expected/i64_load32_s.hir | 8 +- .../code_translator/expected/i64_load32_u.hir | 12 +- .../code_translator/expected/i64_store32.hir | 8 +- .../src/codegen/wasm/aligned_memory.rs | 89 ++++++ tests/integration/src/codegen/wasm/mod.rs | 8 +- .../expected/debug_conditional_assignment.hir | 104 +++---- .../expected/debug_multiple_locals.hir | 102 +++---- .../debuginfo/expected/debug_nested_loops.hir | 288 +++++++++--------- .../expected/debug_simple_params.hir | 36 +-- .../expected/debug_variable_locations.hir | 206 ++++++------- tests/support/src/testing/eval.rs | 29 ++ tests/support/src/testing/mod.rs | 6 +- 15 files changed, 554 insertions(+), 401 deletions(-) create mode 100644 tests/integration/src/codegen/wasm/aligned_memory.rs diff --git a/dialects/wasm/src/mem.rs b/dialects/wasm/src/mem.rs index f3a497b62..1c0e8476b 100644 --- a/dialects/wasm/src/mem.rs +++ b/dialects/wasm/src/mem.rs @@ -1,6 +1,11 @@ use midenc_dialect_arith::ArithOpBuilder; use midenc_dialect_hir::{HirOpBuilder, assertions}; -use midenc_hir::{Builder, Immediate, PointerType, Report, SourceSpan, Type, ValueRef}; +use midenc_hir::{ + AddressSpace, Builder, Immediate, PointerType, Report, SourceSpan, Type, ValueRef, +}; + +/// The base-2 logarithm of the byte alignment of a Miden memory element. +const ELEMENT_ALIGNMENT_LOG2: u8 = 2; /// Represents a memory immediate in a WebAssembly memory instruction. /// @@ -54,6 +59,7 @@ pub fn prepare_addr<'a, B: ?Sized + Builder>( ); let addr_u32 = builder.bitcast(addr_int, Type::U32, span)?; let mut full_addr_int = addr_u32; + let mut address_space = AddressSpace::Byte; if let Some(memarg) = memarg { if memarg.offset != 0 { let imm = builder.imm(Immediate::U32(memarg.offset as u32), span); @@ -62,11 +68,36 @@ pub fn prepare_addr<'a, B: ?Sized + Builder>( // TODO(pauls): For now, asserting alignment helps us catch mistakes/bugs, but we should // probably make this something that can be disabled to avoid the overhead in release builds if memarg.align > 0 { - // Generate alignment assertion - aligned addresses should always produce 0 here - let imm = builder.imm(Immediate::U32(2u32.pow(memarg.align as u32)), span); - let align_offset = builder.r#mod(full_addr_int, imm, span)?; - builder.assertz_with_error(align_offset, assertions::ASSERT_FAILED_ALIGNMENT, span)?; + if memarg.align == ELEMENT_ALIGNMENT_LOG2 + && matches!(ptr_ty, Type::Felt | Type::I32 | Type::U32) + { + // A successful divmod both proves natural alignment and converts the byte address + // to the element address consumed directly by Miden memory operations. + let element_size = builder.imm(Immediate::U32(4), span); + let (element_addr, byte_offset) = + builder.divmod(full_addr_int, element_size, span)?; + builder.assertz_with_error( + byte_offset, + assertions::ASSERT_FAILED_ALIGNMENT, + span, + )?; + full_addr_int = element_addr; + address_space = AddressSpace::Element; + } else { + // Generate alignment assertion - aligned addresses should always produce 0 here + let imm = builder.imm(Immediate::U32(2u32.pow(memarg.align as u32)), span); + let align_offset = builder.r#mod(full_addr_int, imm, span)?; + builder.assertz_with_error( + align_offset, + assertions::ASSERT_FAILED_ALIGNMENT, + span, + )?; + } } }; - builder.inttoptr(full_addr_int, Type::from(PointerType::new(ptr_ty.clone())), span) + builder.inttoptr( + full_addr_int, + Type::from(PointerType::new_with_address_space(ptr_ty.clone(), address_space)), + span, + ) } diff --git a/frontend/wasm/src/code_translator/expected/i32_load.hir b/frontend/wasm/src/code_translator/expected/i32_load.hir index b7e163354..dfe9ca88c 100644 --- a/frontend/wasm/src/code_translator/expected/i32_load.hir +++ b/frontend/wasm/src/code_translator/expected/i32_load.hir @@ -2,10 +2,10 @@ builtin.function public extern("C") @test_wrapper() { %0 = arith.constant 1024 : i32; %1 = hir.bitcast %0 <{ ty = #builtin.type }>; %2 = arith.constant 4 : u32; - %3 = arith.mod %1, %2; - %4 = hir.assertz %3 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %5 = hir.int_to_ptr %1 <{ ty = #builtin.type> }>; - %6 = hir.load %5; + %3, %4 = arith.divmod %1, %2; + %5 = hir.assertz %3 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %6 = hir.int_to_ptr %4 <{ ty = #builtin.type> }>; + %7 = hir.load %6; cf.br ^block5; ^block5: builtin.ret; diff --git a/frontend/wasm/src/code_translator/expected/i32_store.hir b/frontend/wasm/src/code_translator/expected/i32_store.hir index 4d9bcb7cb..bd5a0c623 100644 --- a/frontend/wasm/src/code_translator/expected/i32_store.hir +++ b/frontend/wasm/src/code_translator/expected/i32_store.hir @@ -3,10 +3,10 @@ builtin.function public extern("C") @test_wrapper() { %1 = arith.constant 1 : i32; %2 = hir.bitcast %0 <{ ty = #builtin.type }>; %3 = arith.constant 4 : u32; - %4 = arith.mod %2, %3; - %5 = hir.assertz %4 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %6 = hir.int_to_ptr %2 <{ ty = #builtin.type> }>; - hir.store %6, %1 : (ptr, i32); + %4, %5 = arith.divmod %2, %3; + %6 = hir.assertz %4 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %7 = hir.int_to_ptr %5 <{ ty = #builtin.type> }>; + hir.store %7, %1 : (ptr, i32); cf.br ^block5; ^block5: builtin.ret; diff --git a/frontend/wasm/src/code_translator/expected/i64_load32_s.hir b/frontend/wasm/src/code_translator/expected/i64_load32_s.hir index f85cb1d00..32297e5a3 100644 --- a/frontend/wasm/src/code_translator/expected/i64_load32_s.hir +++ b/frontend/wasm/src/code_translator/expected/i64_load32_s.hir @@ -2,10 +2,10 @@ builtin.function public extern("C") @test_wrapper() { %0 = arith.constant 1024 : i32; %1 = hir.bitcast %0 <{ ty = #builtin.type }>; %2 = arith.constant 4 : u32; - %3 = arith.mod %1, %2; - %4 = hir.assertz %3 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %5 = hir.int_to_ptr %1 <{ ty = #builtin.type> }>; - %6 = wasm.i64_load_32s %5; + %3, %4 = arith.divmod %1, %2; + %5 = hir.assertz %3 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %6 = hir.int_to_ptr %4 <{ ty = #builtin.type> }>; + %7 = wasm.i64_load_32s %6; cf.br ^block5; ^block5: builtin.ret; diff --git a/frontend/wasm/src/code_translator/expected/i64_load32_u.hir b/frontend/wasm/src/code_translator/expected/i64_load32_u.hir index 4c38001b1..cb57c53b3 100644 --- a/frontend/wasm/src/code_translator/expected/i64_load32_u.hir +++ b/frontend/wasm/src/code_translator/expected/i64_load32_u.hir @@ -2,12 +2,12 @@ builtin.function public extern("C") @test_wrapper() { %0 = arith.constant 1024 : i32; %1 = hir.bitcast %0 <{ ty = #builtin.type }>; %2 = arith.constant 4 : u32; - %3 = arith.mod %1, %2; - %4 = hir.assertz %3 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %5 = hir.int_to_ptr %1 <{ ty = #builtin.type> }>; - %6 = hir.load %5; - %7 = arith.zext %6 <{ ty = #builtin.type }>; - %8 = hir.bitcast %7 <{ ty = #builtin.type }>; + %3, %4 = arith.divmod %1, %2; + %5 = hir.assertz %3 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %6 = hir.int_to_ptr %4 <{ ty = #builtin.type> }>; + %7 = hir.load %6; + %8 = arith.zext %7 <{ ty = #builtin.type }>; + %9 = hir.bitcast %8 <{ ty = #builtin.type }>; cf.br ^block5; ^block5: builtin.ret; diff --git a/frontend/wasm/src/code_translator/expected/i64_store32.hir b/frontend/wasm/src/code_translator/expected/i64_store32.hir index b31e23845..0f9cd1189 100644 --- a/frontend/wasm/src/code_translator/expected/i64_store32.hir +++ b/frontend/wasm/src/code_translator/expected/i64_store32.hir @@ -5,10 +5,10 @@ builtin.function public extern("C") @test_wrapper() { %3 = arith.trunc %2 <{ ty = #builtin.type }>; %4 = hir.bitcast %0 <{ ty = #builtin.type }>; %5 = arith.constant 4 : u32; - %6 = arith.mod %4, %5; - %7 = hir.assertz %6 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %8 = hir.int_to_ptr %4 <{ ty = #builtin.type> }>; - hir.store %8, %3 : (ptr, u32); + %6, %7 = arith.divmod %4, %5; + %8 = hir.assertz %6 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %9 = hir.int_to_ptr %7 <{ ty = #builtin.type> }>; + hir.store %9, %3 : (ptr, u32); cf.br ^block5; ^block5: builtin.ret; diff --git a/tests/integration/src/codegen/wasm/aligned_memory.rs b/tests/integration/src/codegen/wasm/aligned_memory.rs new file mode 100644 index 000000000..fe46e83f5 --- /dev/null +++ b/tests/integration/src/codegen/wasm/aligned_memory.rs @@ -0,0 +1,89 @@ +//! Tests for alignment-aware Wasm memory address preparation. + +use std::panic::{AssertUnwindSafe, catch_unwind}; + +use super::*; + +const MEMORY_ADDR: u32 = 17 * 2u32.pow(16); + +/// Verifies that naturally aligned i32 accesses use element-space pointers and retain the trap. +#[test] +fn aligned_i32_memory_uses_element_addresses() { + let span = SourceSpan::default(); + let (masm, package, context) = + compile_test_module_with_masm([Type::I32, Type::I32], [Type::I32], |builder| { + let (addr, value) = { + let block = builder.current_block(); + let block = block.borrow(); + (block.arguments()[0] as ValueRef, block.arguments()[1] as ValueRef) + }; + let memarg = Some(WasmMemArg::new(4, 2)); + + let store_addr = prepare_addr(addr, &Type::I32, memarg, builder, span).unwrap(); + builder.store(store_addr, value, span).unwrap(); + let load_addr = prepare_addr(addr, &Type::I32, memarg, builder, span).unwrap(); + let result = builder.load(load_addr, span).unwrap(); + builder.ret(Some(result), span).unwrap(); + }); + + assert_eq!(masm.matches("u32divmod").count(), 2, "{masm}"); + assert!(!masm.contains("exec.::intrinsics::mem::load_sw"), "{masm}"); + assert!(!masm.contains("exec.::intrinsics::mem::store_sw"), "{masm}"); + + let value = 0x1234_5678; + let result = eval_package::( + &package, + None, + &[Felt::from(MEMORY_ADDR), Felt::from(value)], + context.session(), + |_| Ok(()), + ) + .unwrap(); + assert_eq!(result, value); + + let misaligned = catch_unwind(AssertUnwindSafe(|| { + let _ = eval_package::( + &package, + None, + &[Felt::from(MEMORY_ADDR + 1), Felt::from(value)], + context.session(), + |_| Ok(()), + ); + })); + assert!(misaligned.is_err(), "an alignment promise must still be checked at runtime"); +} + +/// Verifies that potentially unaligned i32 accesses retain byte-space pointer lowering. +#[test] +fn unaligned_i32_memory_retains_byte_pointer_path() { + let span = SourceSpan::default(); + let (masm, package, context) = + compile_test_module_with_masm([Type::I32, Type::I32], [Type::I32], |builder| { + let (addr, value) = { + let block = builder.current_block(); + let block = block.borrow(); + (block.arguments()[0] as ValueRef, block.arguments()[1] as ValueRef) + }; + let memarg = Some(WasmMemArg::new(1, 0)); + + let store_addr = prepare_addr(addr, &Type::I32, memarg, builder, span).unwrap(); + builder.store(store_addr, value, span).unwrap(); + let load_addr = prepare_addr(addr, &Type::I32, memarg, builder, span).unwrap(); + let result = builder.load(load_addr, span).unwrap(); + builder.ret(Some(result), span).unwrap(); + }); + + assert!(masm.contains("exec.::intrinsics::mem::load_sw"), "{masm}"); + assert!(masm.contains("exec.::intrinsics::mem::store_sw"), "{masm}"); + + let value = 0x89ab_cdef; + let result = eval_package::( + &package, + None, + &[Felt::from(MEMORY_ADDR), Felt::from(value)], + context.session(), + |_| Ok(()), + ) + .unwrap(); + assert_eq!(result, value); +} diff --git a/tests/integration/src/codegen/wasm/mod.rs b/tests/integration/src/codegen/wasm/mod.rs index 765b94d29..dcf3b1511 100644 --- a/tests/integration/src/codegen/wasm/mod.rs +++ b/tests/integration/src/codegen/wasm/mod.rs @@ -1,9 +1,13 @@ use miden_debug::ToMidenRepr; -use midenc_dialect_wasm::WasmOpBuilder; +use midenc_dialect_hir::HirOpBuilder; +use midenc_dialect_wasm::{WasmMemArg, WasmOpBuilder, prepare_addr}; use midenc_hir::{Felt, SourceSpan, Type, ValueRef, dialects::builtin::BuiltinOpBuilder}; -use crate::testing::{Initializer, compile_test_module, eval_package}; +use crate::testing::{ + Initializer, compile_test_module, compile_test_module_with_masm, eval_package, +}; +mod aligned_memory; mod i32_extend16_s; mod i32_extend8_s; mod i32_load16_s; diff --git a/tests/integration/src/end_to_end/debuginfo/expected/debug_conditional_assignment.hir b/tests/integration/src/end_to_end/debuginfo/expected/debug_conditional_assignment.hir index 76b36e66f..14d97adeb 100644 --- a/tests/integration/src/end_to_end/debuginfo/expected/debug_conditional_assignment.hir +++ b/tests/integration/src/end_to_end/debuginfo/expected/debug_conditional_assignment.hir @@ -16,65 +16,65 @@ builtin.component private @root_ns:root@1.0.0 { %10 = arith.constant 12 : u32; %11 = arith.add %9, %10 <{ overflow = #builtin.overflow }>; %12 = arith.constant 4 : u32; - %13 = arith.mod %11, %12; - %14 = hir.assertz %13 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %15 = hir.int_to_ptr %11 <{ ty = #builtin.type> }>; - hir.store %15, %8 : (ptr, i32); - %16 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; - %17 = arith.constant 10 : i32; - %18 = hir.bitcast %16 <{ ty = #builtin.type }>; + %13, %14 = arith.divmod %11, %12; + %15 = hir.assertz %13 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %16 = hir.int_to_ptr %14 <{ ty = #builtin.type> }>; + hir.store %16, %8 : (ptr, i32); + %17 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; + %18 = arith.constant 10 : i32; %19 = hir.bitcast %17 <{ ty = #builtin.type }>; - %20 = arith.gt %18, %19; - %21 = arith.zext %20 <{ ty = #builtin.type }>; - %22 = hir.bitcast %21 <{ ty = #builtin.type }>; - %23 = arith.constant 1 : i32; - %24 = arith.band %22, %23; - %25 = arith.constant 0 : i32; - %26 = arith.neq %24, %25; - cf.cond_br %26 ^block7, ^block8 : (i1); + %20 = hir.bitcast %18 <{ ty = #builtin.type }>; + %21 = arith.gt %19, %20; + %22 = arith.zext %21 <{ ty = #builtin.type }>; + %23 = hir.bitcast %22 <{ ty = #builtin.type }>; + %24 = arith.constant 1 : i32; + %25 = arith.band %23, %24; + %26 = arith.constant 0 : i32; + %27 = arith.neq %25, %26; + cf.cond_br %27 ^block7, ^block8 : (i1); ^block5(%1: i32): ^block6: - %52 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %53 = hir.bitcast %52 <{ ty = #builtin.type }>; - %54 = arith.constant 8 : u32; - %55 = arith.add %53, %54 <{ overflow = #builtin.overflow }>; - %56 = arith.constant 4 : u32; - %57 = arith.mod %55, %56; - %58 = hir.assertz %57 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %59 = hir.int_to_ptr %55 <{ ty = #builtin.type> }>; - %60 = hir.load %59; - builtin.ret %60 : (i32); + %55 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %56 = hir.bitcast %55 <{ ty = #builtin.type }>; + %57 = arith.constant 8 : u32; + %58 = arith.add %56, %57 <{ overflow = #builtin.overflow }>; + %59 = arith.constant 4 : u32; + %60, %61 = arith.divmod %58, %59; + %62 = hir.assertz %60 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %63 = hir.int_to_ptr %61 <{ ty = #builtin.type> }>; + %64 = hir.load %63; + builtin.ret %64 : (i32); ^block7: - %38 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %39 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; - %40 = arith.constant 1 : i32; - %41 = hir.bitcast %40 <{ ty = #builtin.type }>; - %42 = arith.constant 31 : u32; - %43 = arith.band %41, %42; - %44 = arith.shl %39, %43; - %45 = hir.bitcast %38 <{ ty = #builtin.type }>; - %46 = arith.constant 8 : u32; - %47 = arith.add %45, %46 <{ overflow = #builtin.overflow }>; - %48 = arith.constant 4 : u32; - %49 = arith.mod %47, %48; - %50 = hir.assertz %49 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %51 = hir.int_to_ptr %47 <{ ty = #builtin.type> }>; - hir.store %51, %44 : (ptr, i32); + %40 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %41 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; + %42 = arith.constant 1 : i32; + %43 = hir.bitcast %42 <{ ty = #builtin.type }>; + %44 = arith.constant 31 : u32; + %45 = arith.band %43, %44; + %46 = arith.shl %41, %45; + %47 = hir.bitcast %40 <{ ty = #builtin.type }>; + %48 = arith.constant 8 : u32; + %49 = arith.add %47, %48 <{ overflow = #builtin.overflow }>; + %50 = arith.constant 4 : u32; + %51, %52 = arith.divmod %49, %50; + %53 = hir.assertz %51 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %54 = hir.int_to_ptr %52 <{ ty = #builtin.type> }>; + hir.store %54, %46 : (ptr, i32); cf.br ^block6; ^block8: - %27 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %28 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; - %29 = arith.constant 1 : i32; - %30 = arith.add %28, %29 <{ overflow = #builtin.overflow }>; - %31 = hir.bitcast %27 <{ ty = #builtin.type }>; - %32 = arith.constant 8 : u32; - %33 = arith.add %31, %32 <{ overflow = #builtin.overflow }>; - %34 = arith.constant 4 : u32; - %35 = arith.mod %33, %34; - %36 = hir.assertz %35 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %37 = hir.int_to_ptr %33 <{ ty = #builtin.type> }>; - hir.store %37, %30 : (ptr, i32); + %28 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %29 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; + %30 = arith.constant 1 : i32; + %31 = arith.add %29, %30 <{ overflow = #builtin.overflow }>; + %32 = hir.bitcast %28 <{ ty = #builtin.type }>; + %33 = arith.constant 8 : u32; + %34 = arith.add %32, %33 <{ overflow = #builtin.overflow }>; + %35 = arith.constant 4 : u32; + %36, %37 = arith.divmod %34, %35; + %38 = hir.assertz %36 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %39 = hir.int_to_ptr %37 <{ ty = #builtin.type> }>; + hir.store %39, %31 : (ptr, i32); cf.br ^block6; }; builtin.global_variable private @__stack_pointer : i32 { diff --git a/tests/integration/src/end_to_end/debuginfo/expected/debug_multiple_locals.hir b/tests/integration/src/end_to_end/debuginfo/expected/debug_multiple_locals.hir index e7f775e03..928dda09f 100644 --- a/tests/integration/src/end_to_end/debuginfo/expected/debug_multiple_locals.hir +++ b/tests/integration/src/end_to_end/debuginfo/expected/debug_multiple_locals.hir @@ -15,57 +15,57 @@ builtin.component private @root_ns:root@1.0.0 { %8 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; %9 = hir.bitcast %7 <{ ty = #builtin.type }>; %10 = arith.constant 4 : u32; - %11 = arith.mod %9, %10; - %12 = hir.assertz %11 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %13 = hir.int_to_ptr %9 <{ ty = #builtin.type> }>; - hir.store %13, %8 : (ptr, i32); - %14 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; - %15 = arith.constant 1 : i32; - %16 = arith.add %14, %15 <{ overflow = #builtin.overflow }>; - hir.store_local %16 <{ local = #builtin.local_variable<2, i32> }> : (i32); - %17 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %18 = hir.load_local <{ local = #builtin.local_variable<2, i32> }>; - %19 = hir.bitcast %17 <{ ty = #builtin.type }>; - %20 = arith.constant 4 : u32; - %21 = arith.add %19, %20 <{ overflow = #builtin.overflow }>; - %22 = arith.constant 4 : u32; - %23 = arith.mod %21, %22; - %24 = hir.assertz %23 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %25 = hir.int_to_ptr %21 <{ ty = #builtin.type> }>; - hir.store %25, %18 : (ptr, i32); - %26 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; - %27 = arith.constant 1 : i32; - %28 = hir.bitcast %27 <{ ty = #builtin.type }>; - %29 = arith.constant 31 : u32; - %30 = arith.band %28, %29; - %31 = arith.shl %26, %30; - hir.store_local %31 <{ local = #builtin.local_variable<3, i32> }> : (i32); - %32 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %33 = hir.load_local <{ local = #builtin.local_variable<3, i32> }>; - %34 = hir.bitcast %32 <{ ty = #builtin.type }>; - %35 = arith.constant 8 : u32; - %36 = arith.add %34, %35 <{ overflow = #builtin.overflow }>; - %37 = arith.constant 4 : u32; - %38 = arith.mod %36, %37; - %39 = hir.assertz %38 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %40 = hir.int_to_ptr %36 <{ ty = #builtin.type> }>; - hir.store %40, %33 : (ptr, i32); - %41 = hir.load_local <{ local = #builtin.local_variable<2, i32> }>; - %42 = hir.load_local <{ local = #builtin.local_variable<3, i32> }>; - %43 = arith.add %41, %42 <{ overflow = #builtin.overflow }>; - hir.store_local %43 <{ local = #builtin.local_variable<4, i32> }> : (i32); - %44 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %45 = hir.load_local <{ local = #builtin.local_variable<4, i32> }>; - %46 = hir.bitcast %44 <{ ty = #builtin.type }>; - %47 = arith.constant 12 : u32; - %48 = arith.add %46, %47 <{ overflow = #builtin.overflow }>; - %49 = arith.constant 4 : u32; - %50 = arith.mod %48, %49; - %51 = hir.assertz %50 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %52 = hir.int_to_ptr %48 <{ ty = #builtin.type> }>; - hir.store %52, %45 : (ptr, i32); - %53 = hir.load_local <{ local = #builtin.local_variable<4, i32> }>; - builtin.ret %53 : (i32); + %11, %12 = arith.divmod %9, %10; + %13 = hir.assertz %11 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %14 = hir.int_to_ptr %12 <{ ty = #builtin.type> }>; + hir.store %14, %8 : (ptr, i32); + %15 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; + %16 = arith.constant 1 : i32; + %17 = arith.add %15, %16 <{ overflow = #builtin.overflow }>; + hir.store_local %17 <{ local = #builtin.local_variable<2, i32> }> : (i32); + %18 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %19 = hir.load_local <{ local = #builtin.local_variable<2, i32> }>; + %20 = hir.bitcast %18 <{ ty = #builtin.type }>; + %21 = arith.constant 4 : u32; + %22 = arith.add %20, %21 <{ overflow = #builtin.overflow }>; + %23 = arith.constant 4 : u32; + %24, %25 = arith.divmod %22, %23; + %26 = hir.assertz %24 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %27 = hir.int_to_ptr %25 <{ ty = #builtin.type> }>; + hir.store %27, %19 : (ptr, i32); + %28 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; + %29 = arith.constant 1 : i32; + %30 = hir.bitcast %29 <{ ty = #builtin.type }>; + %31 = arith.constant 31 : u32; + %32 = arith.band %30, %31; + %33 = arith.shl %28, %32; + hir.store_local %33 <{ local = #builtin.local_variable<3, i32> }> : (i32); + %34 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %35 = hir.load_local <{ local = #builtin.local_variable<3, i32> }>; + %36 = hir.bitcast %34 <{ ty = #builtin.type }>; + %37 = arith.constant 8 : u32; + %38 = arith.add %36, %37 <{ overflow = #builtin.overflow }>; + %39 = arith.constant 4 : u32; + %40, %41 = arith.divmod %38, %39; + %42 = hir.assertz %40 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %43 = hir.int_to_ptr %41 <{ ty = #builtin.type> }>; + hir.store %43, %35 : (ptr, i32); + %44 = hir.load_local <{ local = #builtin.local_variable<2, i32> }>; + %45 = hir.load_local <{ local = #builtin.local_variable<3, i32> }>; + %46 = arith.add %44, %45 <{ overflow = #builtin.overflow }>; + hir.store_local %46 <{ local = #builtin.local_variable<4, i32> }> : (i32); + %47 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %48 = hir.load_local <{ local = #builtin.local_variable<4, i32> }>; + %49 = hir.bitcast %47 <{ ty = #builtin.type }>; + %50 = arith.constant 12 : u32; + %51 = arith.add %49, %50 <{ overflow = #builtin.overflow }>; + %52 = arith.constant 4 : u32; + %53, %54 = arith.divmod %51, %52; + %55 = hir.assertz %53 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %56 = hir.int_to_ptr %54 <{ ty = #builtin.type> }>; + hir.store %56, %48 : (ptr, i32); + %57 = hir.load_local <{ local = #builtin.local_variable<4, i32> }>; + builtin.ret %57 : (i32); ^block5(%1: i32): }; diff --git a/tests/integration/src/end_to_end/debuginfo/expected/debug_nested_loops.hir b/tests/integration/src/end_to_end/debuginfo/expected/debug_nested_loops.hir index 67ee1a650..e76bec2e3 100644 --- a/tests/integration/src/end_to_end/debuginfo/expected/debug_nested_loops.hir +++ b/tests/integration/src/end_to_end/debuginfo/expected/debug_nested_loops.hir @@ -18,165 +18,165 @@ builtin.component private @root_ns:root@1.0.0 { %10 = arith.constant 12 : u32; %11 = arith.add %9, %10 <{ overflow = #builtin.overflow }>; %12 = arith.constant 4 : u32; - %13 = arith.mod %11, %12; - %14 = hir.assertz %13 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %15 = hir.int_to_ptr %11 <{ ty = #builtin.type> }>; - hir.store %15, %8 : (ptr, i32); - %16 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %17 = arith.constant 0 : i32; - %18 = hir.bitcast %16 <{ ty = #builtin.type }>; - %19 = arith.constant 4 : u32; - %20 = arith.mod %18, %19; - %21 = hir.assertz %20 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %22 = hir.int_to_ptr %18 <{ ty = #builtin.type> }>; - hir.store %22, %17 : (ptr, i32); - %23 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %24 = arith.constant 0 : i32; - %25 = hir.bitcast %23 <{ ty = #builtin.type }>; - %26 = arith.constant 4 : u32; - %27 = arith.add %25, %26 <{ overflow = #builtin.overflow }>; + %13, %14 = arith.divmod %11, %12; + %15 = hir.assertz %13 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %16 = hir.int_to_ptr %14 <{ ty = #builtin.type> }>; + hir.store %16, %8 : (ptr, i32); + %17 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %18 = arith.constant 0 : i32; + %19 = hir.bitcast %17 <{ ty = #builtin.type }>; + %20 = arith.constant 4 : u32; + %21, %22 = arith.divmod %19, %20; + %23 = hir.assertz %21 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %24 = hir.int_to_ptr %22 <{ ty = #builtin.type> }>; + hir.store %24, %18 : (ptr, i32); + %25 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %26 = arith.constant 0 : i32; + %27 = hir.bitcast %25 <{ ty = #builtin.type }>; %28 = arith.constant 4 : u32; - %29 = arith.mod %27, %28; - %30 = hir.assertz %29 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %31 = hir.int_to_ptr %27 <{ ty = #builtin.type> }>; - hir.store %31, %24 : (ptr, i32); + %29 = arith.add %27, %28 <{ overflow = #builtin.overflow }>; + %30 = arith.constant 4 : u32; + %31, %32 = arith.divmod %29, %30; + %33 = hir.assertz %31 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %34 = hir.int_to_ptr %32 <{ ty = #builtin.type> }>; + hir.store %34, %26 : (ptr, i32); cf.br ^block6; ^block5(%1: i32): ^block6: - %33 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %34 = hir.bitcast %33 <{ ty = #builtin.type }>; - %35 = arith.constant 4 : u32; - %36 = arith.add %34, %35 <{ overflow = #builtin.overflow }>; - %37 = arith.constant 4 : u32; - %38 = arith.mod %36, %37; - %39 = hir.assertz %38 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %40 = hir.int_to_ptr %36 <{ ty = #builtin.type> }>; - %41 = hir.load %40; - %42 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; - %43 = hir.bitcast %41 <{ ty = #builtin.type }>; - %44 = hir.bitcast %42 <{ ty = #builtin.type }>; - %45 = arith.lt %43, %44; - %46 = arith.zext %45 <{ ty = #builtin.type }>; - %47 = hir.bitcast %46 <{ ty = #builtin.type }>; - %48 = arith.constant 1 : i32; - %49 = arith.band %47, %48; - %50 = arith.constant 0 : i32; - %51 = arith.neq %49, %50; - cf.cond_br %51 ^block8, ^block9 : (i1); - ^block7(%32: i32): + %36 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %37 = hir.bitcast %36 <{ ty = #builtin.type }>; + %38 = arith.constant 4 : u32; + %39 = arith.add %37, %38 <{ overflow = #builtin.overflow }>; + %40 = arith.constant 4 : u32; + %41, %42 = arith.divmod %39, %40; + %43 = hir.assertz %41 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %44 = hir.int_to_ptr %42 <{ ty = #builtin.type> }>; + %45 = hir.load %44; + %46 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; + %47 = hir.bitcast %45 <{ ty = #builtin.type }>; + %48 = hir.bitcast %46 <{ ty = #builtin.type }>; + %49 = arith.lt %47, %48; + %50 = arith.zext %49 <{ ty = #builtin.type }>; + %51 = hir.bitcast %50 <{ ty = #builtin.type }>; + %52 = arith.constant 1 : i32; + %53 = arith.band %51, %52; + %54 = arith.constant 0 : i32; + %55 = arith.neq %53, %54; + cf.cond_br %55 ^block8, ^block9 : (i1); + ^block7(%35: i32): ^block8: - %59 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %60 = arith.constant 0 : i32; - %61 = hir.bitcast %59 <{ ty = #builtin.type }>; - %62 = arith.constant 8 : u32; - %63 = arith.add %61, %62 <{ overflow = #builtin.overflow }>; - %64 = arith.constant 4 : u32; - %65 = arith.mod %63, %64; - %66 = hir.assertz %65 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %67 = hir.int_to_ptr %63 <{ ty = #builtin.type> }>; - hir.store %67, %60 : (ptr, i32); + %64 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %65 = arith.constant 0 : i32; + %66 = hir.bitcast %64 <{ ty = #builtin.type }>; + %67 = arith.constant 8 : u32; + %68 = arith.add %66, %67 <{ overflow = #builtin.overflow }>; + %69 = arith.constant 4 : u32; + %70, %71 = arith.divmod %68, %69; + %72 = hir.assertz %70 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %73 = hir.int_to_ptr %71 <{ ty = #builtin.type> }>; + hir.store %73, %65 : (ptr, i32); cf.br ^block10; ^block9: - %52 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %53 = hir.bitcast %52 <{ ty = #builtin.type }>; - %54 = arith.constant 4 : u32; - %55 = arith.mod %53, %54; - %56 = hir.assertz %55 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %57 = hir.int_to_ptr %53 <{ ty = #builtin.type> }>; - %58 = hir.load %57; - builtin.ret %58 : (i32); + %56 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %57 = hir.bitcast %56 <{ ty = #builtin.type }>; + %58 = arith.constant 4 : u32; + %59, %60 = arith.divmod %57, %58; + %61 = hir.assertz %59 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %62 = hir.int_to_ptr %60 <{ ty = #builtin.type> }>; + %63 = hir.load %62; + builtin.ret %63 : (i32); ^block10: - %69 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %70 = hir.bitcast %69 <{ ty = #builtin.type }>; - %71 = arith.constant 8 : u32; - %72 = arith.add %70, %71 <{ overflow = #builtin.overflow }>; - %73 = arith.constant 4 : u32; - %74 = arith.mod %72, %73; - %75 = hir.assertz %74 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %76 = hir.int_to_ptr %72 <{ ty = #builtin.type> }>; - %77 = hir.load %76; - %78 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %79 = hir.bitcast %78 <{ ty = #builtin.type }>; - %80 = arith.constant 4 : u32; - %81 = arith.add %79, %80 <{ overflow = #builtin.overflow }>; - %82 = arith.constant 4 : u32; - %83 = arith.mod %81, %82; - %84 = hir.assertz %83 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %85 = hir.int_to_ptr %81 <{ ty = #builtin.type> }>; - %86 = hir.load %85; - %87 = hir.bitcast %77 <{ ty = #builtin.type }>; - %88 = hir.bitcast %86 <{ ty = #builtin.type }>; - %89 = arith.lt %87, %88; - %90 = arith.zext %89 <{ ty = #builtin.type }>; - %91 = hir.bitcast %90 <{ ty = #builtin.type }>; - %92 = arith.constant 1 : i32; - %93 = arith.band %91, %92; - %94 = arith.constant 0 : i32; - %95 = arith.neq %93, %94; - cf.cond_br %95 ^block12, ^block13 : (i1); - ^block11(%68: i32): + %75 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %76 = hir.bitcast %75 <{ ty = #builtin.type }>; + %77 = arith.constant 8 : u32; + %78 = arith.add %76, %77 <{ overflow = #builtin.overflow }>; + %79 = arith.constant 4 : u32; + %80, %81 = arith.divmod %78, %79; + %82 = hir.assertz %80 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %83 = hir.int_to_ptr %81 <{ ty = #builtin.type> }>; + %84 = hir.load %83; + %85 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %86 = hir.bitcast %85 <{ ty = #builtin.type }>; + %87 = arith.constant 4 : u32; + %88 = arith.add %86, %87 <{ overflow = #builtin.overflow }>; + %89 = arith.constant 4 : u32; + %90, %91 = arith.divmod %88, %89; + %92 = hir.assertz %90 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %93 = hir.int_to_ptr %91 <{ ty = #builtin.type> }>; + %94 = hir.load %93; + %95 = hir.bitcast %84 <{ ty = #builtin.type }>; + %96 = hir.bitcast %94 <{ ty = #builtin.type }>; + %97 = arith.lt %95, %96; + %98 = arith.zext %97 <{ ty = #builtin.type }>; + %99 = hir.bitcast %98 <{ ty = #builtin.type }>; + %100 = arith.constant 1 : i32; + %101 = arith.band %99, %100; + %102 = arith.constant 0 : i32; + %103 = arith.neq %101, %102; + cf.cond_br %103 ^block12, ^block13 : (i1); + ^block11(%74: i32): ^block12: - %115 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %116 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %117 = hir.bitcast %116 <{ ty = #builtin.type }>; - %118 = arith.constant 4 : u32; - %119 = arith.mod %117, %118; - %120 = hir.assertz %119 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %121 = hir.int_to_ptr %117 <{ ty = #builtin.type> }>; - %122 = hir.load %121; - %123 = arith.constant 1 : i32; - %124 = arith.add %122, %123 <{ overflow = #builtin.overflow }>; - %125 = hir.bitcast %115 <{ ty = #builtin.type }>; - %126 = arith.constant 4 : u32; - %127 = arith.mod %125, %126; - %128 = hir.assertz %127 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %129 = hir.int_to_ptr %125 <{ ty = #builtin.type> }>; - hir.store %129, %124 : (ptr, i32); - %130 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %131 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %132 = hir.bitcast %131 <{ ty = #builtin.type }>; - %133 = arith.constant 8 : u32; - %134 = arith.add %132, %133 <{ overflow = #builtin.overflow }>; - %135 = arith.constant 4 : u32; - %136 = arith.mod %134, %135; - %137 = hir.assertz %136 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %138 = hir.int_to_ptr %134 <{ ty = #builtin.type> }>; - %139 = hir.load %138; - %140 = arith.constant 1 : i32; - %141 = arith.add %139, %140 <{ overflow = #builtin.overflow }>; - %142 = hir.bitcast %130 <{ ty = #builtin.type }>; - %143 = arith.constant 8 : u32; - %144 = arith.add %142, %143 <{ overflow = #builtin.overflow }>; - %145 = arith.constant 4 : u32; - %146 = arith.mod %144, %145; - %147 = hir.assertz %146 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %148 = hir.int_to_ptr %144 <{ ty = #builtin.type> }>; - hir.store %148, %141 : (ptr, i32); + %125 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %126 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %127 = hir.bitcast %126 <{ ty = #builtin.type }>; + %128 = arith.constant 4 : u32; + %129, %130 = arith.divmod %127, %128; + %131 = hir.assertz %129 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %132 = hir.int_to_ptr %130 <{ ty = #builtin.type> }>; + %133 = hir.load %132; + %134 = arith.constant 1 : i32; + %135 = arith.add %133, %134 <{ overflow = #builtin.overflow }>; + %136 = hir.bitcast %125 <{ ty = #builtin.type }>; + %137 = arith.constant 4 : u32; + %138, %139 = arith.divmod %136, %137; + %140 = hir.assertz %138 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %141 = hir.int_to_ptr %139 <{ ty = #builtin.type> }>; + hir.store %141, %135 : (ptr, i32); + %142 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %143 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %144 = hir.bitcast %143 <{ ty = #builtin.type }>; + %145 = arith.constant 8 : u32; + %146 = arith.add %144, %145 <{ overflow = #builtin.overflow }>; + %147 = arith.constant 4 : u32; + %148, %149 = arith.divmod %146, %147; + %150 = hir.assertz %148 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %151 = hir.int_to_ptr %149 <{ ty = #builtin.type> }>; + %152 = hir.load %151; + %153 = arith.constant 1 : i32; + %154 = arith.add %152, %153 <{ overflow = #builtin.overflow }>; + %155 = hir.bitcast %142 <{ ty = #builtin.type }>; + %156 = arith.constant 8 : u32; + %157 = arith.add %155, %156 <{ overflow = #builtin.overflow }>; + %158 = arith.constant 4 : u32; + %159, %160 = arith.divmod %157, %158; + %161 = hir.assertz %159 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %162 = hir.int_to_ptr %160 <{ ty = #builtin.type> }>; + hir.store %162, %154 : (ptr, i32); cf.br ^block10; ^block13: - %96 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %97 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %98 = hir.bitcast %97 <{ ty = #builtin.type }>; - %99 = arith.constant 4 : u32; - %100 = arith.add %98, %99 <{ overflow = #builtin.overflow }>; - %101 = arith.constant 4 : u32; - %102 = arith.mod %100, %101; - %103 = hir.assertz %102 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %104 = hir.int_to_ptr %100 <{ ty = #builtin.type> }>; - %105 = hir.load %104; - %106 = arith.constant 1 : i32; - %107 = arith.add %105, %106 <{ overflow = #builtin.overflow }>; - %108 = hir.bitcast %96 <{ ty = #builtin.type }>; + %104 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %105 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %106 = hir.bitcast %105 <{ ty = #builtin.type }>; + %107 = arith.constant 4 : u32; + %108 = arith.add %106, %107 <{ overflow = #builtin.overflow }>; %109 = arith.constant 4 : u32; - %110 = arith.add %108, %109 <{ overflow = #builtin.overflow }>; - %111 = arith.constant 4 : u32; - %112 = arith.mod %110, %111; - %113 = hir.assertz %112 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %114 = hir.int_to_ptr %110 <{ ty = #builtin.type> }>; - hir.store %114, %107 : (ptr, i32); + %110, %111 = arith.divmod %108, %109; + %112 = hir.assertz %110 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %113 = hir.int_to_ptr %111 <{ ty = #builtin.type> }>; + %114 = hir.load %113; + %115 = arith.constant 1 : i32; + %116 = arith.add %114, %115 <{ overflow = #builtin.overflow }>; + %117 = hir.bitcast %104 <{ ty = #builtin.type }>; + %118 = arith.constant 4 : u32; + %119 = arith.add %117, %118 <{ overflow = #builtin.overflow }>; + %120 = arith.constant 4 : u32; + %121, %122 = arith.divmod %119, %120; + %123 = hir.assertz %121 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %124 = hir.int_to_ptr %122 <{ ty = #builtin.type> }>; + hir.store %124, %116 : (ptr, i32); cf.br ^block6; }; builtin.global_variable private @__stack_pointer : i32 { diff --git a/tests/integration/src/end_to_end/debuginfo/expected/debug_simple_params.hir b/tests/integration/src/end_to_end/debuginfo/expected/debug_simple_params.hir index 3b5d49462..123ad9d34 100644 --- a/tests/integration/src/end_to_end/debuginfo/expected/debug_simple_params.hir +++ b/tests/integration/src/end_to_end/debuginfo/expected/debug_simple_params.hir @@ -17,24 +17,24 @@ builtin.component private @root_ns:root@1.0.0 { %11 = arith.constant 8 : u32; %12 = arith.add %10, %11 <{ overflow = #builtin.overflow }>; %13 = arith.constant 4 : u32; - %14 = arith.mod %12, %13; - %15 = hir.assertz %14 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %16 = hir.int_to_ptr %12 <{ ty = #builtin.type> }>; - hir.store %16, %9 : (ptr, i32); - %17 = hir.load_local <{ local = #builtin.local_variable<2, i32> }>; - %18 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %19 = hir.bitcast %17 <{ ty = #builtin.type }>; - %20 = arith.constant 12 : u32; - %21 = arith.add %19, %20 <{ overflow = #builtin.overflow }>; - %22 = arith.constant 4 : u32; - %23 = arith.mod %21, %22; - %24 = hir.assertz %23 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %25 = hir.int_to_ptr %21 <{ ty = #builtin.type> }>; - hir.store %25, %18 : (ptr, i32); - %26 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; - %27 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %28 = arith.add %26, %27 <{ overflow = #builtin.overflow }>; - builtin.ret %28 : (i32); + %14, %15 = arith.divmod %12, %13; + %16 = hir.assertz %14 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %17 = hir.int_to_ptr %15 <{ ty = #builtin.type> }>; + hir.store %17, %9 : (ptr, i32); + %18 = hir.load_local <{ local = #builtin.local_variable<2, i32> }>; + %19 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %20 = hir.bitcast %18 <{ ty = #builtin.type }>; + %21 = arith.constant 12 : u32; + %22 = arith.add %20, %21 <{ overflow = #builtin.overflow }>; + %23 = arith.constant 4 : u32; + %24, %25 = arith.divmod %22, %23; + %26 = hir.assertz %24 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %27 = hir.int_to_ptr %25 <{ ty = #builtin.type> }>; + hir.store %27, %19 : (ptr, i32); + %28 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; + %29 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %30 = arith.add %28, %29 <{ overflow = #builtin.overflow }>; + builtin.ret %30 : (i32); ^block5(%2: i32): }; diff --git a/tests/integration/src/end_to_end/debuginfo/expected/debug_variable_locations.hir b/tests/integration/src/end_to_end/debuginfo/expected/debug_variable_locations.hir index 6f80597d6..a8c15e9c1 100644 --- a/tests/integration/src/end_to_end/debuginfo/expected/debug_variable_locations.hir +++ b/tests/integration/src/end_to_end/debuginfo/expected/debug_variable_locations.hir @@ -17,117 +17,117 @@ builtin.component private @root_ns:root@1.0.0 { %10 = arith.constant 12 : u32; %11 = arith.add %9, %10 <{ overflow = #builtin.overflow }>; %12 = arith.constant 4 : u32; - %13 = arith.mod %11, %12; - %14 = hir.assertz %13 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %15 = hir.int_to_ptr %11 <{ ty = #builtin.type> }>; - hir.store %15, %8 : (ptr, i32); - %16 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %17 = arith.constant 0 : i32; - %18 = hir.bitcast %16 <{ ty = #builtin.type }>; - %19 = arith.constant 4 : u32; - %20 = arith.add %18, %19 <{ overflow = #builtin.overflow }>; - %21 = arith.constant 4 : u32; - %22 = arith.mod %20, %21; - %23 = hir.assertz %22 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %24 = hir.int_to_ptr %20 <{ ty = #builtin.type> }>; - hir.store %24, %17 : (ptr, i32); - %25 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %26 = arith.constant 0 : i32; - %27 = hir.bitcast %25 <{ ty = #builtin.type }>; - %28 = arith.constant 8 : u32; - %29 = arith.add %27, %28 <{ overflow = #builtin.overflow }>; - %30 = arith.constant 4 : u32; - %31 = arith.mod %29, %30; - %32 = hir.assertz %31 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %33 = hir.int_to_ptr %29 <{ ty = #builtin.type> }>; - hir.store %33, %26 : (ptr, i32); + %13, %14 = arith.divmod %11, %12; + %15 = hir.assertz %13 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %16 = hir.int_to_ptr %14 <{ ty = #builtin.type> }>; + hir.store %16, %8 : (ptr, i32); + %17 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %18 = arith.constant 0 : i32; + %19 = hir.bitcast %17 <{ ty = #builtin.type }>; + %20 = arith.constant 4 : u32; + %21 = arith.add %19, %20 <{ overflow = #builtin.overflow }>; + %22 = arith.constant 4 : u32; + %23, %24 = arith.divmod %21, %22; + %25 = hir.assertz %23 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %26 = hir.int_to_ptr %24 <{ ty = #builtin.type> }>; + hir.store %26, %18 : (ptr, i32); + %27 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %28 = arith.constant 0 : i32; + %29 = hir.bitcast %27 <{ ty = #builtin.type }>; + %30 = arith.constant 8 : u32; + %31 = arith.add %29, %30 <{ overflow = #builtin.overflow }>; + %32 = arith.constant 4 : u32; + %33, %34 = arith.divmod %31, %32; + %35 = hir.assertz %33 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %36 = hir.int_to_ptr %34 <{ ty = #builtin.type> }>; + hir.store %36, %28 : (ptr, i32); cf.br ^block6; ^block5(%1: i32): ^block6: - %35 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %36 = hir.bitcast %35 <{ ty = #builtin.type }>; - %37 = arith.constant 8 : u32; - %38 = arith.add %36, %37 <{ overflow = #builtin.overflow }>; - %39 = arith.constant 4 : u32; - %40 = arith.mod %38, %39; - %41 = hir.assertz %40 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %42 = hir.int_to_ptr %38 <{ ty = #builtin.type> }>; - %43 = hir.load %42; - %44 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; - %45 = hir.bitcast %43 <{ ty = #builtin.type }>; - %46 = hir.bitcast %44 <{ ty = #builtin.type }>; - %47 = arith.lte %45, %46; - %48 = arith.zext %47 <{ ty = #builtin.type }>; - %49 = hir.bitcast %48 <{ ty = #builtin.type }>; - %50 = arith.constant 1 : i32; - %51 = arith.band %49, %50; - %52 = arith.constant 0 : i32; - %53 = arith.neq %51, %52; - cf.cond_br %53 ^block8, ^block9 : (i1); - ^block7(%34: i32): + %38 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %39 = hir.bitcast %38 <{ ty = #builtin.type }>; + %40 = arith.constant 8 : u32; + %41 = arith.add %39, %40 <{ overflow = #builtin.overflow }>; + %42 = arith.constant 4 : u32; + %43, %44 = arith.divmod %41, %42; + %45 = hir.assertz %43 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %46 = hir.int_to_ptr %44 <{ ty = #builtin.type> }>; + %47 = hir.load %46; + %48 = hir.load_local <{ local = #builtin.local_variable<0, i32> }>; + %49 = hir.bitcast %47 <{ ty = #builtin.type }>; + %50 = hir.bitcast %48 <{ ty = #builtin.type }>; + %51 = arith.lte %49, %50; + %52 = arith.zext %51 <{ ty = #builtin.type }>; + %53 = hir.bitcast %52 <{ ty = #builtin.type }>; + %54 = arith.constant 1 : i32; + %55 = arith.band %53, %54; + %56 = arith.constant 0 : i32; + %57 = arith.neq %55, %56; + cf.cond_br %57 ^block8, ^block9 : (i1); + ^block7(%37: i32): ^block8: - %63 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %64 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %65 = hir.bitcast %64 <{ ty = #builtin.type }>; - %66 = arith.constant 8 : u32; - %67 = arith.add %65, %66 <{ overflow = #builtin.overflow }>; - %68 = arith.constant 4 : u32; - %69 = arith.mod %67, %68; - %70 = hir.assertz %69 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %71 = hir.int_to_ptr %67 <{ ty = #builtin.type> }>; - %72 = hir.load %71; - %73 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %74 = hir.bitcast %73 <{ ty = #builtin.type }>; - %75 = arith.constant 4 : u32; - %76 = arith.add %74, %75 <{ overflow = #builtin.overflow }>; - %77 = arith.constant 4 : u32; - %78 = arith.mod %76, %77; - %79 = hir.assertz %78 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %80 = hir.int_to_ptr %76 <{ ty = #builtin.type> }>; - %81 = hir.load %80; - %82 = arith.add %72, %81 <{ overflow = #builtin.overflow }>; - %83 = hir.bitcast %63 <{ ty = #builtin.type }>; - %84 = arith.constant 4 : u32; - %85 = arith.add %83, %84 <{ overflow = #builtin.overflow }>; - %86 = arith.constant 4 : u32; - %87 = arith.mod %85, %86; - %88 = hir.assertz %87 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %89 = hir.int_to_ptr %85 <{ ty = #builtin.type> }>; - hir.store %89, %82 : (ptr, i32); - %90 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %91 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %92 = hir.bitcast %91 <{ ty = #builtin.type }>; - %93 = arith.constant 8 : u32; - %94 = arith.add %92, %93 <{ overflow = #builtin.overflow }>; - %95 = arith.constant 4 : u32; - %96 = arith.mod %94, %95; - %97 = hir.assertz %96 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %98 = hir.int_to_ptr %94 <{ ty = #builtin.type> }>; - %99 = hir.load %98; - %100 = arith.constant 1 : i32; - %101 = arith.add %99, %100 <{ overflow = #builtin.overflow }>; - %102 = hir.bitcast %90 <{ ty = #builtin.type }>; - %103 = arith.constant 8 : u32; - %104 = arith.add %102, %103 <{ overflow = #builtin.overflow }>; - %105 = arith.constant 4 : u32; - %106 = arith.mod %104, %105; - %107 = hir.assertz %106 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %108 = hir.int_to_ptr %104 <{ ty = #builtin.type> }>; - hir.store %108, %101 : (ptr, i32); + %68 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %69 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %70 = hir.bitcast %69 <{ ty = #builtin.type }>; + %71 = arith.constant 8 : u32; + %72 = arith.add %70, %71 <{ overflow = #builtin.overflow }>; + %73 = arith.constant 4 : u32; + %74, %75 = arith.divmod %72, %73; + %76 = hir.assertz %74 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %77 = hir.int_to_ptr %75 <{ ty = #builtin.type> }>; + %78 = hir.load %77; + %79 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %80 = hir.bitcast %79 <{ ty = #builtin.type }>; + %81 = arith.constant 4 : u32; + %82 = arith.add %80, %81 <{ overflow = #builtin.overflow }>; + %83 = arith.constant 4 : u32; + %84, %85 = arith.divmod %82, %83; + %86 = hir.assertz %84 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %87 = hir.int_to_ptr %85 <{ ty = #builtin.type> }>; + %88 = hir.load %87; + %89 = arith.add %78, %88 <{ overflow = #builtin.overflow }>; + %90 = hir.bitcast %68 <{ ty = #builtin.type }>; + %91 = arith.constant 4 : u32; + %92 = arith.add %90, %91 <{ overflow = #builtin.overflow }>; + %93 = arith.constant 4 : u32; + %94, %95 = arith.divmod %92, %93; + %96 = hir.assertz %94 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %97 = hir.int_to_ptr %95 <{ ty = #builtin.type> }>; + hir.store %97, %89 : (ptr, i32); + %98 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %99 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %100 = hir.bitcast %99 <{ ty = #builtin.type }>; + %101 = arith.constant 8 : u32; + %102 = arith.add %100, %101 <{ overflow = #builtin.overflow }>; + %103 = arith.constant 4 : u32; + %104, %105 = arith.divmod %102, %103; + %106 = hir.assertz %104 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %107 = hir.int_to_ptr %105 <{ ty = #builtin.type> }>; + %108 = hir.load %107; + %109 = arith.constant 1 : i32; + %110 = arith.add %108, %109 <{ overflow = #builtin.overflow }>; + %111 = hir.bitcast %98 <{ ty = #builtin.type }>; + %112 = arith.constant 8 : u32; + %113 = arith.add %111, %112 <{ overflow = #builtin.overflow }>; + %114 = arith.constant 4 : u32; + %115, %116 = arith.divmod %113, %114; + %117 = hir.assertz %115 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %118 = hir.int_to_ptr %116 <{ ty = #builtin.type> }>; + hir.store %118, %110 : (ptr, i32); cf.br ^block6; ^block9: - %54 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; - %55 = hir.bitcast %54 <{ ty = #builtin.type }>; - %56 = arith.constant 4 : u32; - %57 = arith.add %55, %56 <{ overflow = #builtin.overflow }>; - %58 = arith.constant 4 : u32; - %59 = arith.mod %57, %58; - %60 = hir.assertz %59 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; - %61 = hir.int_to_ptr %57 <{ ty = #builtin.type> }>; - %62 = hir.load %61; - builtin.ret %62 : (i32); + %58 = hir.load_local <{ local = #builtin.local_variable<1, i32> }>; + %59 = hir.bitcast %58 <{ ty = #builtin.type }>; + %60 = arith.constant 4 : u32; + %61 = arith.add %59, %60 <{ overflow = #builtin.overflow }>; + %62 = arith.constant 4 : u32; + %63, %64 = arith.divmod %61, %62; + %65 = hir.assertz %63 <{ code = #builtin.u32<250>, message = #builtin.string<""> }>; + %66 = hir.int_to_ptr %64 <{ ty = #builtin.type> }>; + %67 = hir.load %66; + builtin.ret %67 : (i32); }; builtin.global_variable private @__stack_pointer : i32 { builtin.ret_imm 1048576 : i32; diff --git a/tests/support/src/testing/eval.rs b/tests/support/src/testing/eval.rs index 55634e3f7..0fe38514b 100644 --- a/tests/support/src/testing/eval.rs +++ b/tests/support/src/testing/eval.rs @@ -213,6 +213,35 @@ pub fn compile_test_module( (package, context) } +/// Helper function to compile a test module and capture its MASM source before assembly. +pub fn compile_test_module_with_masm( + params: impl IntoIterator, + results: impl IntoIterator, + build_fn: impl Fn(&mut midenc_hir::dialects::builtin::FunctionBuilder<'_, midenc_hir::OpBuilder>), +) -> (String, Arc, std::rc::Rc) { + use midenc_compile::{CodegenOutput, compile_link_output_to_masm_with_pre_assembly_stage}; + + let context = setup::dummy_context(&["--test-harness", "--entrypoint", "test::main"]); + let signature = Signature::new(&context, params, results); + let component = setup::build_empty_component_for_test(context.clone()); + setup::build_entrypoint( + component.component.expect("expected HIR component"), + &signature, + build_fn, + ); + + let mut masm = None; + let mut capture_masm = |output: CodegenOutput, _context| { + masm = Some(output.component.to_string()); + Ok(output) + }; + let package = compile_link_output_to_masm_with_pre_assembly_stage(component, &mut capture_masm) + .expect("test component should compile") + .unwrap_mast(); + + (masm.expect("codegen should produce MASM"), package, context) +} + /// Compiles a LinkOutput to a Package, suitable for execution pub fn compile_miden_component_to_package( component: MidenComponent, diff --git a/tests/support/src/testing/mod.rs b/tests/support/src/testing/mod.rs index 2d01654bd..a5dc67308 100644 --- a/tests/support/src/testing/mod.rs +++ b/tests/support/src/testing/mod.rs @@ -16,9 +16,9 @@ use miden_standards::StandardsLib; pub use self::{ eval::{ - compile_miden_component_to_package, compile_test_module, eval_miden_component, - eval_miden_component_with_advice_stack, eval_package, eval_package_with_advice_stack, - run_masm_vs_rust, + compile_miden_component_to_package, compile_test_module, compile_test_module_with_masm, + eval_miden_component, eval_miden_component_with_advice_stack, eval_package, + eval_package_with_advice_stack, run_masm_vs_rust, }, initializer::Initializer, }; From 9e2706a17c5d559402d8bc27042d4fb41d416598 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Tue, 14 Jul 2026 16:30:02 +0300 Subject: [PATCH 15/23] refactor(wasm): document and harden the element-pointer path in prepare_addr The element fast path made the alignment assertion load-bearing: the divmod quotient becomes the address, so disabling the assertion (as the pre-existing TODO above the shared alignment block suggested) would make a misaligned access silently target the containing element instead of trapping. Extract the alignment handling into enforce_alignment, scope the TODO to the byte-space branch where it still applies, and spell out the constraint on the element branch. Document the changed contract of prepare_addr: the returned pointer is an element-space pointer holding an element address for naturally aligned element-sized accesses, and a byte-space pointer holding the byte address otherwise, with alignment promises enforced at runtime as a deliberate deviation from Wasm's hint-only semantics. Derive the element size from ELEMENT_ALIGNMENT_LOG2 and compare the promised alignment with `>=` to state the "at least element-aligned" requirement directly. The emitted IR is unchanged. --- dialects/wasm/src/mem.rs | 89 ++++++++++++++++++++++++++++------------ 1 file changed, 62 insertions(+), 27 deletions(-) diff --git a/dialects/wasm/src/mem.rs b/dialects/wasm/src/mem.rs index 1c0e8476b..51e0a4240 100644 --- a/dialects/wasm/src/mem.rs +++ b/dialects/wasm/src/mem.rs @@ -7,6 +7,9 @@ use midenc_hir::{ /// The base-2 logarithm of the byte alignment of a Miden memory element. const ELEMENT_ALIGNMENT_LOG2: u8 = 2; +/// The size of a Miden memory element in the byte-addressable address space. +const ELEMENT_SIZE_BYTES: u32 = 1 << ELEMENT_ALIGNMENT_LOG2; + /// Represents a memory immediate in a WebAssembly memory instruction. /// /// Mirrors `MemArg` from the `wasmparser` crate. @@ -42,6 +45,25 @@ where /// Prepares `addr_int` to be used as pointer to a value of type `ptr_ty`. /// +/// The address space of the returned pointer depends on the access: +/// +/// - An access which promises element alignment (`memarg.align >= 2`) of an element-sized pointee +/// ([Type::Felt], [Type::I32], [Type::U32]) produces an [AddressSpace::Element] pointer holding +/// the element address (the byte address divided by the element size), which lowers to native +/// Miden memory operations. +/// - Any other access produces an [AddressSpace::Byte] pointer holding the byte address. +/// +/// Callers must therefore not treat the returned pointer value as a byte address (e.g. for +/// pointer arithmetic). +/// +/// Alignment promises are enforced: when `memarg.align > 0`, an access whose effective address +/// violates the promised alignment traps with [assertions::ASSERT_FAILED_ALIGNMENT]. This is a +/// deliberate deviation from Wasm semantics, where the alignment immediate is only a hint that +/// must not affect the result of an access. It is sound for Rust/LLVM-produced modules, where +/// violating a promised alignment is undefined behavior in the source program, and it keeps +/// aligned accesses cheap, which matters far more on this target than supporting modules that +/// overpromise alignment. +/// /// # Panics /// /// Panics if `addr_int` does not have type `I32`. @@ -65,34 +87,11 @@ pub fn prepare_addr<'a, B: ?Sized + Builder>( let imm = builder.imm(Immediate::U32(memarg.offset as u32), span); full_addr_int = builder.add(addr_u32, imm, span)?; } - // TODO(pauls): For now, asserting alignment helps us catch mistakes/bugs, but we should - // probably make this something that can be disabled to avoid the overhead in release builds if memarg.align > 0 { - if memarg.align == ELEMENT_ALIGNMENT_LOG2 - && matches!(ptr_ty, Type::Felt | Type::I32 | Type::U32) - { - // A successful divmod both proves natural alignment and converts the byte address - // to the element address consumed directly by Miden memory operations. - let element_size = builder.imm(Immediate::U32(4), span); - let (element_addr, byte_offset) = - builder.divmod(full_addr_int, element_size, span)?; - builder.assertz_with_error( - byte_offset, - assertions::ASSERT_FAILED_ALIGNMENT, - span, - )?; - full_addr_int = element_addr; - address_space = AddressSpace::Element; - } else { - // Generate alignment assertion - aligned addresses should always produce 0 here - let imm = builder.imm(Immediate::U32(2u32.pow(memarg.align as u32)), span); - let align_offset = builder.r#mod(full_addr_int, imm, span)?; - builder.assertz_with_error( - align_offset, - assertions::ASSERT_FAILED_ALIGNMENT, - span, - )?; - } + let (addr, addrspace) = + enforce_alignment(full_addr_int, ptr_ty, memarg.align, builder, span)?; + full_addr_int = addr; + address_space = addrspace; } }; builder.inttoptr( @@ -101,3 +100,39 @@ pub fn prepare_addr<'a, B: ?Sized + Builder>( span, ) } + +/// Emits a runtime check that `addr` satisfies the alignment promised by `align` (given as a +/// base-2 logarithm), and selects the address space of the resulting pointer. +/// +/// Element-aligned accesses of element-sized pointees are converted to the element address space: +/// a single `divmod` yields both the element address and the proof of alignment, making the check +/// nearly free. The alignment assertion in that branch is load-bearing, not a debugging aid: the +/// quotient is used as the address, so without the assertion a misaligned access would silently +/// target the containing element instead of trapping. +fn enforce_alignment<'a, B: ?Sized + Builder>( + addr: ValueRef, + ptr_ty: &Type, + align: u8, + builder: &mut (impl WasmMemOpBuilder<'a, B> + ?Sized), + span: SourceSpan, +) -> Result<(ValueRef, AddressSpace), Report> { + if align >= ELEMENT_ALIGNMENT_LOG2 && matches!(ptr_ty, Type::Felt | Type::I32 | Type::U32) { + // A successful divmod both proves natural alignment and converts the byte address + // to the element address consumed directly by Miden memory operations. + let element_size = builder.imm(Immediate::U32(ELEMENT_SIZE_BYTES), span); + let (element_addr, byte_offset) = builder.divmod(addr, element_size, span)?; + builder.assertz_with_error(byte_offset, assertions::ASSERT_FAILED_ALIGNMENT, span)?; + Ok((element_addr, AddressSpace::Element)) + } else { + // Generate alignment assertion - aligned addresses should always produce 0 here + // + // TODO(pauls): For now, asserting alignment helps us catch mistakes/bugs, but we should + // probably make this something that can be disabled to avoid the overhead in release + // builds. Note that this only applies to this byte-address-space branch; the element + // branch above requires its assertion for correctness. + let imm = builder.imm(Immediate::U32(2u32.pow(align as u32)), span); + let align_offset = builder.r#mod(addr, imm, span)?; + builder.assertz_with_error(align_offset, assertions::ASSERT_FAILED_ALIGNMENT, span)?; + Ok((addr, AddressSpace::Byte)) + } +} From 2e590deb39cfc7611156d642bfd92c56d3cfec66 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Tue, 14 Jul 2026 16:30:09 +0300 Subject: [PATCH 16/23] refactor(tests): share the test-component setup between compile helpers compile_test_module_with_masm duplicated the context/signature/component/ entrypoint ceremony of compile_test_module verbatim, leaving two copies of the test-harness setup that could silently drift apart. Extract the shared setup into a private build_test_component helper so the two compile paths differ only in how the codegen output is consumed. --- tests/support/src/testing/eval.rs | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/tests/support/src/testing/eval.rs b/tests/support/src/testing/eval.rs index 0fe38514b..22caef3b8 100644 --- a/tests/support/src/testing/eval.rs +++ b/tests/support/src/testing/eval.rs @@ -195,12 +195,13 @@ where Ok(trace.parse_result::().expect("expected output was not returned")) } -/// Helper function to compile a test module with the given signature and build function -pub fn compile_test_module( +/// Builds the HIR component and entrypoint shared by [compile_test_module] and +/// [compile_test_module_with_masm]. +fn build_test_component( params: impl IntoIterator, results: impl IntoIterator, build_fn: impl Fn(&mut midenc_hir::dialects::builtin::FunctionBuilder<'_, midenc_hir::OpBuilder>), -) -> (Arc, std::rc::Rc) { +) -> (MidenComponent, std::rc::Rc) { let context = setup::dummy_context(&["--test-harness", "--entrypoint", "test::main"]); let signature = Signature::new(&context, params, results); let component = setup::build_empty_component_for_test(context.clone()); @@ -209,6 +210,16 @@ pub fn compile_test_module( &signature, build_fn, ); + (component, context) +} + +/// Helper function to compile a test module with the given signature and build function +pub fn compile_test_module( + params: impl IntoIterator, + results: impl IntoIterator, + build_fn: impl Fn(&mut midenc_hir::dialects::builtin::FunctionBuilder<'_, midenc_hir::OpBuilder>), +) -> (Arc, std::rc::Rc) { + let (component, context) = build_test_component(params, results, build_fn); let package = compile_miden_component_to_package(component).unwrap(); (package, context) } @@ -221,14 +232,7 @@ pub fn compile_test_module_with_masm( ) -> (String, Arc, std::rc::Rc) { use midenc_compile::{CodegenOutput, compile_link_output_to_masm_with_pre_assembly_stage}; - let context = setup::dummy_context(&["--test-harness", "--entrypoint", "test::main"]); - let signature = Signature::new(&context, params, results); - let component = setup::build_empty_component_for_test(context.clone()); - setup::build_entrypoint( - component.component.expect("expected HIR component"), - &signature, - build_fn, - ); + let (component, context) = build_test_component(params, results, build_fn); let mut masm = None; let mut capture_masm = |output: CodegenOutput, _context| { From 73626dad475c63cc4263c528e91401361cf6d02f Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Tue, 14 Jul 2026 16:30:19 +0300 Subject: [PATCH 17/23] test(wasm): pin element addressing and alignment fallback at runtime The aligned-access round-trip could pass with a symmetric addressing bug: an element-space pointer still carrying the byte address would store to and load from the same wrong element. Verify the store through an independent read of the targeted cell, and add a load-only case that seeds the expected element next to a decoy, so ignoring the static offset or mis-scaling the address can no longer round-trip. Also cover the remaining prepare_addr paths: a felt round-trip proving whole field elements move through element pointers without the felt byte-space intrinsics, and an align=1 access that keeps the byte-space intrinsics while still trapping when the smaller promise is violated. The exact u32divmod count is relaxed to presence, since a CSE pass may legally merge the two address conversions. --- .../src/codegen/wasm/aligned_memory.rs | 155 +++++++++++++++++- 1 file changed, 153 insertions(+), 2 deletions(-) diff --git a/tests/integration/src/codegen/wasm/aligned_memory.rs b/tests/integration/src/codegen/wasm/aligned_memory.rs index fe46e83f5..d455eaf2e 100644 --- a/tests/integration/src/codegen/wasm/aligned_memory.rs +++ b/tests/integration/src/codegen/wasm/aligned_memory.rs @@ -2,6 +2,8 @@ use std::panic::{AssertUnwindSafe, catch_unwind}; +use miden_debug::DebugQuery; + use super::*; const MEMORY_ADDR: u32 = 17 * 2u32.pow(16); @@ -26,7 +28,9 @@ fn aligned_i32_memory_uses_element_addresses() { builder.ret(Some(result), span).unwrap(); }); - assert_eq!(masm.matches("u32divmod").count(), 2, "{masm}"); + // The byte->element conversion must be done inline (a CSE pass may legally merge the two + // conversions, hence no exact count), without falling back to the byte-space intrinsics. + assert!(masm.contains("u32divmod"), "{masm}"); assert!(!masm.contains("exec.::intrinsics::mem::load_sw"), "{masm}"); assert!(!masm.contains("exec.::intrinsics::mem::store_sw"), "{masm}"); @@ -36,7 +40,16 @@ fn aligned_i32_memory_uses_element_addresses() { None, &[Felt::from(MEMORY_ADDR), Felt::from(value)], context.session(), - |_| Ok(()), + |trace| { + // Independently verify the store hit the expected cell: a symmetric addressing bug + // (e.g. an element-space pointer still carrying the byte address) would round-trip + // through the load below while writing somewhere else entirely. + let stored: u32 = trace + .read_from_rust_memory(MEMORY_ADDR + 4) + .expect("the target memory cell was not written"); + assert_eq!(stored, value); + Ok(()) + }, ) .unwrap(); assert_eq!(result, value); @@ -53,6 +66,144 @@ fn aligned_i32_memory_uses_element_addresses() { assert!(misaligned.is_err(), "an alignment promise must still be checked at runtime"); } +/// Verifies the element path computes the correct element address: a load through an +/// element-space `u32` pointer must read exactly the seeded cell, not a decoy neighbor (as it +/// would if the static offset were ignored) nor a mis-scaled address. +#[test] +fn aligned_u32_load_reads_expected_element() { + let span = SourceSpan::default(); + let (masm, package, context) = + compile_test_module_with_masm([Type::I32], [Type::U32], |builder| { + let addr = { + let block = builder.current_block(); + let block = block.borrow(); + block.arguments()[0] as ValueRef + }; + let memarg = Some(WasmMemArg::new(4, 2)); + + let load_addr = prepare_addr(addr, &Type::U32, memarg, builder, span).unwrap(); + let result = builder.load(load_addr, span).unwrap(); + builder.ret(Some(result), span).unwrap(); + }); + + assert!(!masm.contains("exec.::intrinsics::mem::load_sw"), "{masm}"); + + // Seed the element at the effective address (MEMORY_ADDR + 4) and a decoy at MEMORY_ADDR + // with distinct values, so an addressing bug cannot round-trip accidentally. + const DECOY: u32 = 0xaaaa_5555; + const EXPECTED: u32 = 0x5a5a_a5a5; + let mut bytes = [0u8; 8]; + bytes[..4].copy_from_slice(&DECOY.to_le_bytes()); + bytes[4..].copy_from_slice(&EXPECTED.to_le_bytes()); + let initializers = [Initializer::MemoryBytes { + addr: MEMORY_ADDR, + bytes: &bytes, + }]; + + let result = eval_package::( + &package, + initializers, + &[Felt::from(MEMORY_ADDR)], + context.session(), + |_| Ok(()), + ) + .unwrap(); + assert_eq!(result, EXPECTED); +} + +/// Verifies that naturally aligned felt accesses use element-space pointers and move whole field +/// elements (which need not fit in 32 bits). +#[test] +fn aligned_felt_memory_uses_element_addresses() { + let span = SourceSpan::default(); + let (masm, package, context) = + compile_test_module_with_masm([Type::I32, Type::Felt], [Type::Felt], |builder| { + let (addr, value) = { + let block = builder.current_block(); + let block = block.borrow(); + (block.arguments()[0] as ValueRef, block.arguments()[1] as ValueRef) + }; + let memarg = Some(WasmMemArg::new(4, 2)); + + let store_addr = prepare_addr(addr, &Type::Felt, memarg, builder, span).unwrap(); + builder.store(store_addr, value, span).unwrap(); + let load_addr = prepare_addr(addr, &Type::Felt, memarg, builder, span).unwrap(); + let result = builder.load(load_addr, span).unwrap(); + builder.ret(Some(result), span).unwrap(); + }); + + assert!(masm.contains("u32divmod"), "{masm}"); + assert!(!masm.contains("exec.::intrinsics::mem::load_felt"), "{masm}"); + assert!(!masm.contains("exec.::intrinsics::mem::store_felt"), "{masm}"); + + // A value wider than 32 bits proves the access moves whole field elements. + let value = Felt::new_unchecked(0x1234_5678_9abc); + let result = eval_package::( + &package, + None, + &[Felt::from(MEMORY_ADDR), value], + context.session(), + |trace| { + let stored = trace + .read_memory_element((MEMORY_ADDR + 4) / 4) + .expect("the target memory cell was not written"); + assert_eq!(stored, value); + Ok(()) + }, + ) + .unwrap(); + assert_eq!(result, value); +} + +/// Verifies that accesses promising less than element alignment keep byte-space lowering while +/// still enforcing the promised (smaller) alignment at runtime. +#[test] +fn underaligned_i32_memory_keeps_byte_path_and_checks_alignment() { + let span = SourceSpan::default(); + let (masm, package, context) = + compile_test_module_with_masm([Type::I32, Type::I32], [Type::I32], |builder| { + let (addr, value) = { + let block = builder.current_block(); + let block = block.borrow(); + (block.arguments()[0] as ValueRef, block.arguments()[1] as ValueRef) + }; + let memarg = Some(WasmMemArg::new(2, 1)); + + let store_addr = prepare_addr(addr, &Type::I32, memarg, builder, span).unwrap(); + builder.store(store_addr, value, span).unwrap(); + let load_addr = prepare_addr(addr, &Type::I32, memarg, builder, span).unwrap(); + let result = builder.load(load_addr, span).unwrap(); + builder.ret(Some(result), span).unwrap(); + }); + + assert!(masm.contains("exec.::intrinsics::mem::load_sw"), "{masm}"); + assert!(masm.contains("exec.::intrinsics::mem::store_sw"), "{masm}"); + + // The effective address MEMORY_ADDR + 2 honors the promised 2-byte alignment. + let value = 0x0bad_f00d; + let result = eval_package::( + &package, + None, + &[Felt::from(MEMORY_ADDR), Felt::from(value)], + context.session(), + |_| Ok(()), + ) + .unwrap(); + assert_eq!(result, value); + + // An odd base address violates the promised 2-byte alignment and must trap. + let misaligned = catch_unwind(AssertUnwindSafe(|| { + let _ = eval_package::( + &package, + None, + &[Felt::from(MEMORY_ADDR + 1), Felt::from(value)], + context.session(), + |_| Ok(()), + ); + })); + assert!(misaligned.is_err(), "a sub-element alignment promise must still be checked"); +} + /// Verifies that potentially unaligned i32 accesses retain byte-space pointer lowering. #[test] fn unaligned_i32_memory_retains_byte_pointer_path() { From 36cea7d4ae28015c2434ec0a0a749b427455cd99 Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Thu, 16 Jul 2026 08:44:42 +0300 Subject: [PATCH 18/23] refactor: un-link ELEMENT_SIZE_BYTES from ELEMENT_ALIGMENT_LOG2 --- dialects/wasm/src/mem.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dialects/wasm/src/mem.rs b/dialects/wasm/src/mem.rs index 51e0a4240..f36276597 100644 --- a/dialects/wasm/src/mem.rs +++ b/dialects/wasm/src/mem.rs @@ -8,7 +8,7 @@ use midenc_hir::{ const ELEMENT_ALIGNMENT_LOG2: u8 = 2; /// The size of a Miden memory element in the byte-addressable address space. -const ELEMENT_SIZE_BYTES: u32 = 1 << ELEMENT_ALIGNMENT_LOG2; +const ELEMENT_SIZE_BYTES: u32 = 4; /// Represents a memory immediate in a WebAssembly memory instruction. /// From 20354e8d9011d26833d44329c9f4b4a8dd63724d Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Tue, 14 Jul 2026 12:45:59 +0300 Subject: [PATCH 19/23] perf(cargo): optimize release guests at level two Size-optimized LLVM output leaves execution improvements on the table for release guest builds, while the resulting package-size tradeoff depends on the guest. Select optimization level two while preserving the existing release LTO, codegen-unit, and panic settings. Update the recorded execution-cycle and stripped MAST size measurements to reflect the new release output. --- midenc-compile/src/stages/cargo.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/midenc-compile/src/stages/cargo.rs b/midenc-compile/src/stages/cargo.rs index ce7e2ea7c..5d03497e8 100644 --- a/midenc-compile/src/stages/cargo.rs +++ b/midenc-compile/src/stages/cargo.rs @@ -50,6 +50,9 @@ pub mod support { use crate::{CompilerResult, cargo::CargoOptions}; + /// The LLVM optimization level used for release guest builds. + const RELEASE_OPT_LEVEL: &str = "2"; + /// Executes a Cargo-based build with the provided compiler options and package registry pub fn cargo_build( manifest_path: &Path, @@ -304,7 +307,7 @@ pub mod support { ("profile.dev.overflow-checks", "false"), ("profile.dev.debug", "true"), ("profile.dev.debug-assertions", "false"), - ("profile.release.opt-level", "\"s\""), + ("profile.release.opt-level", RELEASE_OPT_LEVEL), ("profile.release.lto", "true"), ("profile.release.codegen-units", "1"), ("profile.release.panic", "\"abort\""), From 6ce419ba0d8a43107ba370e72346ad544b5cf9db Mon Sep 17 00:00:00 2001 From: Denys Zadorozhnyi Date: Thu, 16 Jul 2026 09:00:23 +0300 Subject: [PATCH 20/23] fix(cargo): derive guest optimization from compiler settings Release Cargo guest builds hard-coded LLVM level two, so explicit compiler optimization choices could not tune the Rust guest compilation profile. Map compiler optimization levels to Cargo profile values and build guests with the selected value. Preserve level two for the existing default and balanced modes while allowing basic, maximum, and size-focused modes to drive Cargo. --- midenc-compile/src/stages/cargo.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/midenc-compile/src/stages/cargo.rs b/midenc-compile/src/stages/cargo.rs index 5d03497e8..070868f79 100644 --- a/midenc-compile/src/stages/cargo.rs +++ b/midenc-compile/src/stages/cargo.rs @@ -45,14 +45,11 @@ pub mod support { diagnostics::{IntoDiagnostic, SourceManagerExt}, }; use midenc_session::{ - InputFile, RemapPathPrefix, miden_project, registry::HybridPackageRegistry, + InputFile, OptLevel, RemapPathPrefix, miden_project, registry::HybridPackageRegistry, }; use crate::{CompilerResult, cargo::CargoOptions}; - /// The LLVM optimization level used for release guest builds. - const RELEASE_OPT_LEVEL: &str = "2"; - /// Executes a Cargo-based build with the provided compiler options and package registry pub fn cargo_build( manifest_path: &Path, @@ -239,7 +236,7 @@ pub mod support { */ let rustup_toolchain = crate::rust::rustup_toolchain(); - let cargo_build_args = build_cargo_args(cargo_opts); + let cargo_build_args = build_cargo_args(cargo_opts, compiler_opts.optimize); // Enable memcopy and 128-bit arithmetic ops let mut extra_rust_flags = String::from("-C target-feature=+bulk-memory,+wide-arithmetic"); @@ -284,8 +281,19 @@ pub mod support { Ok(InputFile::from_path(wasm_output).unwrap()) } + /// Returns the Cargo profile value for a compiler optimization level. + fn cargo_profile_opt_level(opt_level: OptLevel) -> &'static str { + match opt_level { + OptLevel::None | OptLevel::Balanced => "2", + OptLevel::Basic => "1", + OptLevel::Max => "3", + OptLevel::Size => "\"s\"", + OptLevel::SizeMin => "\"z\"", + } + } + /// Builds the argument vector for the underlying `cargo build` invocation. - fn build_cargo_args(cargo_opts: &CargoOptions) -> Vec { + fn build_cargo_args(cargo_opts: &CargoOptions, opt_level: OptLevel) -> Vec { let mut args = vec!["build".to_string()]; // Add build-std flags required for Miden compilation @@ -307,7 +315,7 @@ pub mod support { ("profile.dev.overflow-checks", "false"), ("profile.dev.debug", "true"), ("profile.dev.debug-assertions", "false"), - ("profile.release.opt-level", RELEASE_OPT_LEVEL), + ("profile.release.opt-level", cargo_profile_opt_level(opt_level)), ("profile.release.lto", "true"), ("profile.release.codegen-units", "1"), ("profile.release.panic", "\"abort\""), From a7ec01e52badc5ba244c051f7a5687457bdb4812 Mon Sep 17 00:00:00 2001 From: djole Date: Thu, 23 Jul 2026 12:05:45 +0200 Subject: [PATCH 21/23] feat(debug): propagate DWARF inline call chains --- Cargo.lock | 5 +- codegen/masm/src/emitter.rs | 46 +++++- codegen/masm/src/lower/component.rs | 7 +- codegen/masm/src/lower/lowering.rs | 23 +-- frontend/wasm/src/module/debug_info.rs | 3 + frontend/wasm/src/module/func_translator.rs | 134 +++++++++++++++--- .../wasm/src/module/function_builder_ext.rs | 32 ++++- hir/src/dialects/debuginfo/attributes.rs | 4 + .../debuginfo/attributes/inline_call.rs | 129 +++++++++++++++++ 9 files changed, 334 insertions(+), 49 deletions(-) create mode 100644 hir/src/dialects/debuginfo/attributes/inline_call.rs diff --git a/Cargo.lock b/Cargo.lock index 2498a6987..6819a6c08 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3208,13 +3208,10 @@ dependencies = [ name = "miden-mast-package" version = "0.25.8" dependencies = [ - "hashbrown 0.17.1", "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", - "miden-utils-indexing 0.25.8", - "rustc-hash", "serde", "thiserror 2.0.18", ] @@ -3567,7 +3564,7 @@ dependencies = [ name = "miden-utils-indexing" version = "0.25.8" dependencies = [ - "miden-serde-utils 0.28.0", + "miden-crypto", "proptest", "serde", "thiserror 2.0.18", diff --git a/codegen/masm/src/emitter.rs b/codegen/masm/src/emitter.rs index cf05b7239..e231ad978 100644 --- a/codegen/masm/src/emitter.rs +++ b/codegen/masm/src/emitter.rs @@ -1,7 +1,10 @@ use alloc::collections::BTreeSet; use miden_assembly::diagnostics::WrapErr; -use midenc_hir::{Block, Operation, ProgramPoint, TraceTarget, ValueRange, ValueRef}; +use midenc_hir::{ + Block, Operation, ProgramPoint, TraceTarget, ValueRange, ValueRef, + dialects::debuginfo::attributes::{INLINE_CALL_CHAIN_ATTR_NAME, InlineCallChainAttr}, +}; use midenc_hir_analysis::analyses::LivenessAnalysis; use midenc_session::diagnostics::{SourceSpan, Spanned}; use smallvec::SmallVec; @@ -111,6 +114,8 @@ impl BlockEmitter<'_> { fn emit_inst(&mut self, op: &Operation) { use crate::HirLowering; + self.emit_inline_call_chain(op); + // If any values on the operand stack are no longer live, drop them now to avoid wasting // operand stack space on operands that will never be used. //self.drop_unused_operands_at(op); @@ -132,6 +137,45 @@ impl BlockEmitter<'_> { .unwrap_or_else(|err| panic!("{err}")); } + fn emit_inline_call_chain(&mut self, op: &Operation) { + use miden_assembly::debuginfo::{ColumnNumber, FileLineCol, LineNumber, Uri}; + use miden_core::operations::DebugInlineCallInfo; + + self.target.push(masm::Op::Inst(midenc_hir::Span::new( + op.span(), + masm::Instruction::DebugInlineCallClear, + ))); + + let Some(attr) = op + .get_attribute(INLINE_CALL_CHAIN_ATTR_NAME) + .and_then(|attr| attr.try_downcast_attr::().ok()) + else { + return; + }; + let attr = attr.borrow(); + for frame in &attr.frames { + let declaration = FileLineCol::new( + Uri::new(frame.file.as_str()), + LineNumber::new(frame.line).unwrap_or_default(), + ColumnNumber::new(frame.column).unwrap_or_default(), + ); + let call_site = FileLineCol::new( + Uri::new(frame.call_file.as_str()), + LineNumber::new(frame.call_line).unwrap_or_default(), + ColumnNumber::new(frame.call_column).unwrap_or_default(), + ); + let inline_call = DebugInlineCallInfo::new(frame.name.as_str(), declaration, call_site); + let inline_call = match frame.linkage_name { + Some(linkage_name) => inline_call.with_linkage_name(linkage_name.as_str()), + None => inline_call, + }; + self.target.push(masm::Op::Inst(midenc_hir::Span::new( + op.span(), + masm::Instruction::DebugInlineCall(inline_call), + ))); + } + } + /// Drop the operands on the stack which are no longer live upon entry into /// the current program point. /// diff --git a/codegen/masm/src/lower/component.rs b/codegen/masm/src/lower/component.rs index baf03b348..72ae30a88 100644 --- a/codegen/masm/src/lower/component.rs +++ b/codegen/masm/src/lower/component.rs @@ -969,7 +969,12 @@ fn component_abi_type_expr_from_hir(ty: &Type) -> masm::TypeExpr { /// body contains only DebugVar ops, the assembler will reject it. fn block_has_real_instructions(block: &masm::Block) -> bool { block.iter().any(|op| match op { - masm::Op::Inst(inst) => !matches!(inst.inner(), masm::Instruction::DebugVar(_)), + masm::Op::Inst(inst) => !matches!( + inst.inner(), + masm::Instruction::DebugVar(_) + | masm::Instruction::DebugInlineCall(_) + | masm::Instruction::DebugInlineCallClear + ), masm::Op::If { then_blk, else_blk, .. } => block_has_real_instructions(then_blk) || block_has_real_instructions(else_blk), diff --git a/codegen/masm/src/lower/lowering.rs b/codegen/masm/src/lower/lowering.rs index ce240fab0..58a672091 100644 --- a/codegen/masm/src/lower/lowering.rs +++ b/codegen/masm/src/lower/lowering.rs @@ -1599,30 +1599,22 @@ const DEBUG_VAR_KILL_SENTINEL: &[u8] = b"\0miden.debug.kill"; fn apply_debug_var_metadata( debug_var: &mut masm::DebugVarInfo, var: &midenc_hir::dialects::debuginfo::attributes::Variable, - session: &midenc_session::Session, ) { // Set arg_index if this is a parameter if let Some(arg_index) = var.arg_index { debug_var.set_arg_index(arg_index + 1); // Convert to 1-based } - if let Some(ty) = var.ty.clone() { - debug_var.set_ty(ty, None); - } - // Set source location if let Some(line) = core::num::NonZeroU32::new(var.line) { - use miden_assembly::debuginfo::{ColumnNumber, FileLineCol, LineNumber, Location, Uri}; + use miden_assembly::debuginfo::{ColumnNumber, FileLineCol, LineNumber, Uri}; let uri = Uri::new(var.file.as_str()); let file_line_col = FileLineCol::new( - uri.clone(), + uri, LineNumber::new(line.get()).unwrap_or_default(), var.column.and_then(ColumnNumber::new).unwrap_or_default(), ); - if let Some(span) = session.source_manager.file_line_col_to_span(file_line_col) { - let loc = Location::new(uri, span.start(), span.end()); - debug_var.set_location(loc); - } + debug_var.set_location(file_line_col); } } @@ -1675,8 +1667,7 @@ impl HirLowering for debuginfo::DebugValue { }; let mut debug_var = masm::DebugVarInfo::new(var.name.to_string(), value_location); - let session = self.as_operation().context().session(); - apply_debug_var_metadata(&mut debug_var, var.as_value(), session); + apply_debug_var_metadata(&mut debug_var, var.as_value()); // Emit the instruction followed by a `nop` so that the debug var instruction is never the // last instruction in a MASM block @@ -1708,8 +1699,7 @@ impl HirLowering for debuginfo::DebugDeclare { }; let mut debug_var = masm::DebugVarInfo::new(var.name.to_string(), value_location); - let session = self.as_operation().context().session(); - apply_debug_var_metadata(&mut debug_var, var.as_value(), session); + apply_debug_var_metadata(&mut debug_var, var.as_value()); // Emit the instruction followed by a `nop` so that the debug var instruction is never the // last instruction in a MASM block @@ -1740,8 +1730,7 @@ impl HirLowering for debuginfo::DebugKill { var.name.to_string(), masm::DebugVarLocation::Expression(DEBUG_VAR_KILL_SENTINEL.to_vec()), ); - let session = self.as_operation().context().session(); - apply_debug_var_metadata(&mut debug_var, var.as_value(), session); + apply_debug_var_metadata(&mut debug_var, var.as_value()); // Emit the instruction followed by a `nop` so that the debug var instruction is never the // last instruction in a MASM block diff --git a/frontend/wasm/src/module/debug_info.rs b/frontend/wasm/src/module/debug_info.rs index 9a2c84be9..cb6610809 100644 --- a/frontend/wasm/src/module/debug_info.rs +++ b/frontend/wasm/src/module/debug_info.rs @@ -661,6 +661,9 @@ fn walk_variable_nodes>( ) -> gimli::Result<()> { let entry = node.entry(); let tag = entry.tag(); + if tag == gimli::DW_TAG_inlined_subroutine { + return Ok(()); + } match tag { gimli::DW_TAG_formal_parameter | gimli::DW_TAG_variable => { // For formal parameters, the WASM local index equals the parameter diff --git a/frontend/wasm/src/module/func_translator.rs b/frontend/wasm/src/module/func_translator.rs index e602e89ee..0f7bbd3b9 100644 --- a/frontend/wasm/src/module/func_translator.rs +++ b/frontend/wasm/src/module/func_translator.rs @@ -16,7 +16,10 @@ use cranelift_entity::EntityRef; use midenc_hir::{ BlockRef, Builder, Context, Op, Type, diagnostics::{ColumnNumber, LineNumber}, - dialects::builtin::{BuiltinOpBuilder, FunctionRef}, + dialects::{ + builtin::{BuiltinOpBuilder, FunctionRef}, + debuginfo::attributes::InlineCallFrame, + }, }; use midenc_session::{ Session, @@ -255,7 +258,10 @@ fn parse_function_body( } else { code_offset }; - let span = resolve_instruction_span(addr2line, dwarf_lookup_offset, session, config)?; + let resolved = + resolve_instruction_debug_context(addr2line, dwarf_lookup_offset, session, config)?; + let span = resolved.span; + builder.set_inline_calls(resolved.inline_calls); if !span.is_unknown() { last_valid_span = span; } else { @@ -306,6 +312,7 @@ fn parse_function_body( // If the exit block is unreachable, it may not have the correct arguments, so we would // generate a return instruction that doesn't match the signature. if state.reachable && !builder.is_unreachable() { + builder.set_inline_calls(Vec::new()); builder.ret(state.stack.first().cloned(), end_span)?; } @@ -319,16 +326,30 @@ fn parse_function_body( struct ResolvedSourceLocation { path: PathBuf, span: SourceSpan, + line: u32, + column: u32, +} + +struct ResolvedInstructionDebugContext { + span: SourceSpan, + inline_calls: Vec, +} + +struct ResolvedFrame { + name: String, + linkage_name: Option, + location: ResolvedSourceLocation, } -fn resolve_instruction_span( +fn resolve_instruction_debug_context( addr2line: &addr2line::Context>, offset: u64, session: &Session, config: &crate::WasmTranslationConfig, -) -> WasmResult { +) -> WasmResult { let mut frames = addr2line.find_frames(offset).skip_all_loads().into_diagnostic()?; - let mut fallback = SourceSpan::UNKNOWN; + let mut resolved_frames = Vec::new(); + let mut span = SourceSpan::UNKNOWN; while let Some(frame) = frames.next().into_diagnostic()? { let Some(location) = frame.location else { @@ -337,17 +358,49 @@ fn resolve_instruction_span( let Some(resolved) = resolve_source_location(&location, session, config)? else { continue; }; - - if fallback.is_unknown() { - fallback = resolved.span; - } - - if !is_internal_source_path(&resolved.path) { - return Ok(resolved.span); + if span.is_unknown() { + span = resolved.span; } + let Some(function) = frame.function else { + continue; + }; + let linkage_name = function.raw_name().ok().map(|name| name.into_owned()); + let name = function + .demangle() + .ok() + .map(|name| name.into_owned()) + .or_else(|| linkage_name.clone()) + .unwrap_or_else(|| "".to_string()); + resolved_frames.push(ResolvedFrame { + name, + linkage_name, + location: resolved, + }); } - Ok(fallback) + let inline_calls = inline_call_chain(&resolved_frames); + + Ok(ResolvedInstructionDebugContext { span, inline_calls }) +} + +fn inline_call_chain(resolved_frames: &[ResolvedFrame]) -> Vec { + resolved_frames + .windows(2) + .map(|frames| { + let callee = &frames[0]; + let caller = &frames[1]; + InlineCallFrame { + name: callee.name.clone().into(), + linkage_name: callee.linkage_name.clone().map(Into::into), + file: callee.location.path.to_string_lossy().into_owned().into(), + line: callee.location.line, + column: callee.location.column, + call_file: caller.location.path.to_string_lossy().into_owned().into(), + call_line: caller.location.line, + call_column: caller.location.column, + } + }) + .collect() } fn resolve_source_location( @@ -377,8 +430,10 @@ fn resolve_source_location( ); let source_file = session.source_manager.load_file(&absolute_path).into_diagnostic()?; - let line = loc.line.and_then(LineNumber::new).unwrap_or_default(); - let column = loc.column.and_then(ColumnNumber::new).unwrap_or_default(); + let raw_line = loc.line.unwrap_or_default(); + let raw_column = loc.column.unwrap_or_default(); + let line = LineNumber::new(raw_line).unwrap_or_default(); + let column = ColumnNumber::new(raw_column).unwrap_or_default(); let span = source_file.line_column_to_span(line, column).unwrap_or(SourceSpan::UNKNOWN); let path = if path.is_absolute() { @@ -399,7 +454,12 @@ fn resolve_source_location( path.to_path_buf() }; - Ok((!span.is_unknown()).then_some(ResolvedSourceLocation { path, span })) + Ok((!span.is_unknown()).then_some(ResolvedSourceLocation { + path, + span, + line: raw_line, + column: raw_column, + })) } fn resolve_source_path( @@ -434,10 +494,40 @@ fn resolve_source_path( } } -fn is_internal_source_path(path: &Path) -> bool { - let path = path.to_string_lossy(); - path.contains("/rust/library/") - || path.contains("/.cargo/registry/") - || path.contains("/registry/src/") - || path.contains("/compiler/sdk/") +#[cfg(test)] +mod tests { + use super::*; + + fn frame(name: &str, path: &str, line: u32, column: u32) -> ResolvedFrame { + ResolvedFrame { + name: name.to_string(), + linkage_name: Some(format!("_{name}")), + location: ResolvedSourceLocation { + path: PathBuf::from(path), + span: SourceSpan::UNKNOWN, + line, + column, + }, + } + } + + #[test] + fn inline_call_chain_uses_caller_locations_as_call_sites() { + let frames = [ + frame("inner", "src/inner.rs", 30, 7), + frame("outer", "src/outer.rs", 20, 5), + frame("physical", "src/lib.rs", 10, 3), + ]; + + let chain = inline_call_chain(&frames); + + assert_eq!(chain.len(), 2); + assert_eq!(chain[0].name.as_str(), "inner"); + assert_eq!(chain[0].file.as_str(), "src/inner.rs"); + assert_eq!(chain[0].call_file.as_str(), "src/outer.rs"); + assert_eq!((chain[0].call_line, chain[0].call_column), (20, 5)); + assert_eq!(chain[1].name.as_str(), "outer"); + assert_eq!(chain[1].call_file.as_str(), "src/lib.rs"); + assert_eq!((chain[1].call_line, chain[1].call_column), (10, 3)); + } } diff --git a/frontend/wasm/src/module/function_builder_ext.rs b/frontend/wasm/src/module/function_builder_ext.rs index 87e2b3b3f..7010e1b6e 100644 --- a/frontend/wasm/src/module/function_builder_ext.rs +++ b/frontend/wasm/src/module/function_builder_ext.rs @@ -20,7 +20,10 @@ use midenc_hir::{ }, debuginfo::{ DIBuilder, - attributes::{CompileUnitAttr, Expression, ExpressionOp, SubprogramAttr}, + attributes::{ + CompileUnitAttr, Expression, ExpressionOp, INLINE_CALL_CHAIN_ATTR_NAME, + InlineCallChain, InlineCallChainAttr, InlineCallFrame, SubprogramAttr, + }, }, }, interner::Symbol, @@ -85,11 +88,15 @@ enum BlockStatus { pub struct SSABuilderListener { builder: Rc>, + active_inline_calls: Rc>>, } impl SSABuilderListener { - pub const fn new(builder: Rc>) -> Self { - Self { builder } + pub fn new(builder: Rc>) -> Self { + Self { + builder, + active_inline_calls: Default::default(), + } } } @@ -98,7 +105,16 @@ impl Listener for SSABuilderListener { ListenerType::Builder } - fn notify_operation_inserted(&self, op: OperationRef, prev: ProgramPoint) { + fn notify_operation_inserted(&self, mut op: OperationRef, prev: ProgramPoint) { + let inline_calls = self.active_inline_calls.borrow().clone(); + if !inline_calls.is_empty() { + let context = op.borrow().context_rc(); + let attr = context + .create_attribute::(InlineCallChain::new(inline_calls)) + .as_attribute_ref(); + op.borrow_mut().set_attribute(INLINE_CALL_CHAIN_ATTR_NAME, attr); + } + let op = op.borrow(); let mut builder = self.builder.borrow_mut(); @@ -144,11 +160,14 @@ pub struct FunctionBuilderExt<'c, B: ?Sized + Builder> { param_values: Vec<(Variable, ValueRef)>, param_dbg_emitted: bool, active_wasm_local_debug_vars: BTreeMap>, + active_inline_calls: Rc>>, } impl<'c> FunctionBuilderExt<'c, OpBuilder> { pub fn new(func: FunctionRef, builder: &'c mut OpBuilder) -> Self { let func_ctx = builder.listener().map(|l| l.builder.clone()).unwrap(); + let active_inline_calls = + builder.listener().map(|l| l.active_inline_calls.clone()).unwrap(); debug_assert!(func_ctx.borrow().is_empty()); let inner = FunctionBuilder::new(func, builder); @@ -160,6 +179,7 @@ impl<'c> FunctionBuilderExt<'c, OpBuilder> { param_values: Vec::new(), param_dbg_emitted: false, active_wasm_local_debug_vars: BTreeMap::new(), + active_inline_calls, } } } @@ -174,6 +194,10 @@ impl FunctionBuilderExt<'_, B> { self.refresh_function_debug_attrs(); } + pub fn set_inline_calls(&mut self, inline_calls: Vec) { + *self.active_inline_calls.borrow_mut() = inline_calls; + } + pub fn emit_dbg_value_for_var(&mut self, var: Variable, value: ValueRef, span: SourceSpan) { let Some(info) = self.debug_info.clone() else { return; diff --git a/hir/src/dialects/debuginfo/attributes.rs b/hir/src/dialects/debuginfo/attributes.rs index ded85bb15..361dd022e 100644 --- a/hir/src/dialects/debuginfo/attributes.rs +++ b/hir/src/dialects/debuginfo/attributes.rs @@ -1,5 +1,6 @@ mod compile_unit; mod expression; +mod inline_call; mod subprogram; mod variable; @@ -10,6 +11,9 @@ pub use self::{ decode_frame_base_local_index, decode_frame_base_local_offset, encode_frame_base_local_index, encode_frame_base_local_offset, }, + inline_call::{ + INLINE_CALL_CHAIN_ATTR_NAME, InlineCallChain, InlineCallChainAttr, InlineCallFrame, + }, subprogram::{Subprogram, SubprogramAttr}, variable::{Variable, VariableAttr}, }; diff --git a/hir/src/dialects/debuginfo/attributes/inline_call.rs b/hir/src/dialects/debuginfo/attributes/inline_call.rs new file mode 100644 index 000000000..c085839a9 --- /dev/null +++ b/hir/src/dialects/debuginfo/attributes/inline_call.rs @@ -0,0 +1,129 @@ +use alloc::vec::Vec; + +use crate::{ + AttrPrinter, attributes::AttrParser, derive::DialectAttribute, + dialects::debuginfo::DebugInfoDialect, interner::Symbol, parse::ParserExt, print::AsmPrinter, +}; + +pub const INLINE_CALL_CHAIN_ATTR_NAME: &str = "di.inline_call_chain"; + +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +pub struct InlineCallFrame { + pub name: Symbol, + pub linkage_name: Option, + pub file: Symbol, + pub line: u32, + pub column: u32, + pub call_file: Symbol, + pub call_line: u32, + pub call_column: u32, +} + +#[derive(DialectAttribute, Clone, Debug, Default, PartialEq, Eq, Hash)] +#[attribute(dialect = DebugInfoDialect, implements(AttrPrinter))] +pub struct InlineCallChain { + pub frames: Vec, +} + +impl InlineCallChain { + pub fn new(frames: Vec) -> Self { + Self { frames } + } +} + +impl AttrPrinter for InlineCallChainAttr { + fn print(&self, printer: &mut AsmPrinter<'_>) { + use crate::formatter::*; + + *printer += const_text("["); + for (index, frame) in self.frames.iter().enumerate() { + if index > 0 { + *printer += const_text(", "); + } + *printer += const_text("{ name = "); + printer.print_string(frame.name.as_str()); + *printer += const_text(", linkage = "); + printer.print_string(frame.linkage_name.map(|name| name.as_str()).unwrap_or_default()); + *printer += const_text(", file = "); + printer.print_string(frame.file.as_str()); + *printer += const_text(", line = "); + printer.print_decimal_integer(frame.line); + *printer += const_text(", column = "); + printer.print_decimal_integer(frame.column); + *printer += const_text(", call_file = "); + printer.print_string(frame.call_file.as_str()); + *printer += const_text(", call_line = "); + printer.print_decimal_integer(frame.call_line); + *printer += const_text(", call_column = "); + printer.print_decimal_integer(frame.call_column); + *printer += const_text(" }"); + } + *printer += const_text("]"); + } +} + +impl AttrParser for InlineCallChainAttr { + fn parse( + parser: &mut dyn crate::parse::Parser<'_>, + ) -> crate::parse::ParseResult { + use crate::parse::Delimiter; + + let mut frames = Vec::new(); + parser.parse_comma_separated_list( + Delimiter::Bracket, + Some("inline call chain"), + |parser| { + parser.parse_lbrace()?; + parser.parse_custom_keyword("name")?; + parser.parse_equal()?; + let name = parser.parse_string()?.into_inner(); + parser.parse_comma()?; + parser.parse_custom_keyword("linkage")?; + parser.parse_equal()?; + let linkage = parser.parse_string()?.into_inner(); + parser.parse_comma()?; + parser.parse_custom_keyword("file")?; + parser.parse_equal()?; + let file = parser.parse_string()?.into_inner(); + parser.parse_comma()?; + parser.parse_custom_keyword("line")?; + parser.parse_equal()?; + let line = parser.parse_decimal_integer::()?.into_inner(); + parser.parse_comma()?; + parser.parse_custom_keyword("column")?; + parser.parse_equal()?; + let column = parser.parse_decimal_integer::()?.into_inner(); + parser.parse_comma()?; + parser.parse_custom_keyword("call_file")?; + parser.parse_equal()?; + let call_file = parser.parse_string()?.into_inner(); + parser.parse_comma()?; + parser.parse_custom_keyword("call_line")?; + parser.parse_equal()?; + let call_line = parser.parse_decimal_integer::()?.into_inner(); + parser.parse_comma()?; + parser.parse_custom_keyword("call_column")?; + parser.parse_equal()?; + let call_column = parser.parse_decimal_integer::()?.into_inner(); + parser.parse_rbrace()?; + + frames.push(InlineCallFrame { + name: name.into(), + linkage_name: (!linkage.is_empty()).then(|| linkage.into()), + file: file.into(), + line, + column, + call_file: call_file.into(), + call_line, + call_column, + }); + Ok(true) + }, + )?; + + Ok(parser + .context_rc() + .create_attribute::(InlineCallChain::new(frames)) + .as_attribute_ref()) + } +} From 7c48163c8b6d9719ab642dd532cd0fc1c1b5eae8 Mon Sep 17 00:00:00 2001 From: djole Date: Fri, 24 Jul 2026 00:30:09 +0200 Subject: [PATCH 22/23] fix(masm): accept inline-call debug instructions --- frontend/masm/src/infer.rs | 2 +- frontend/masm/src/lift.rs | 2 +- frontend/masm/src/semantics.rs | 2 ++ frontend/masm/src/tests.rs | 8 ++++++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/frontend/masm/src/infer.rs b/frontend/masm/src/infer.rs index f24ea8c13..180e3f1c1 100644 --- a/frontend/masm/src/infer.rs +++ b/frontend/masm/src/infer.rs @@ -613,7 +613,7 @@ impl<'a> InferState<'a> { EvalCircuit => self.constrain_top_n(3, Type::Felt, span), LogPrecompile => self.constrain_top_n(12, Type::Felt, span), Exec(target) | Call(target) | SysCall(target) => self.invoke(target, span), - DebugVar(_) => Ok(()), + DebugVar(_) | DebugInlineCall(_) | DebugInlineCallClear => Ok(()), _ => unsupported_instruction(inst, span), }; self.current_span = previous_span; diff --git a/frontend/masm/src/lift.rs b/frontend/masm/src/lift.rs index 669d7eba0..40f021976 100644 --- a/frontend/masm/src/lift.rs +++ b/frontend/masm/src/lift.rs @@ -1139,7 +1139,7 @@ impl<'a> ProcedureLifter<'a> { IsOdd => self.unary_with_type(builder, Type::Felt, span, |builder, value, span| { builder.is_odd(value, span) }), - DebugVar(_) => Ok(()), + DebugVar(_) | DebugInlineCall(_) | DebugInlineCallClear => Ok(()), _ => unsupported_instruction(inst, span), } } diff --git a/frontend/masm/src/semantics.rs b/frontend/masm/src/semantics.rs index 08809e756..f5a7d2eba 100644 --- a/frontend/masm/src/semantics.rs +++ b/frontend/masm/src/semantics.rs @@ -265,6 +265,8 @@ define_instruction_semantics! { Instruction::Call(_), Instruction::SysCall(_), Instruction::DebugVar(_), + Instruction::DebugInlineCall(_), + Instruction::DebugInlineCallClear, Instruction::Emit, Instruction::EmitImm(_), Instruction::SysEvent(_), diff --git a/frontend/masm/src/tests.rs b/frontend/masm/src/tests.rs index 86b46bd94..401cd53f4 100644 --- a/frontend/masm/src/tests.rs +++ b/frontend/masm/src/tests.rs @@ -962,16 +962,20 @@ fn unsupported_instruction_matrix_reports_diagnostics() { #[test] fn instruction_inventory_classifies_all_masm_instruction_variants() { - assert_eq!(LIFT_AND_INFER_INSTRUCTION_VARIANT_COUNT, 235); + assert_eq!(LIFT_AND_INFER_INSTRUCTION_VARIANT_COUNT, 239); assert_eq!(INFER_ONLY_INSTRUCTION_VARIANT_COUNT, 1); assert_eq!(UNSUPPORTED_INSTRUCTION_VARIANT_COUNT, 3); assert_eq!( LIFT_AND_INFER_INSTRUCTION_VARIANT_COUNT + INFER_ONLY_INSTRUCTION_VARIANT_COUNT + UNSUPPORTED_INSTRUCTION_VARIANT_COUNT, - 239 + 243 ); assert_eq!(instruction_semantics(&Instruction::Nop), InstructionSemantics::LiftAndInfer); + assert_eq!( + instruction_semantics(&Instruction::DebugInlineCallClear), + InstructionSemantics::LiftAndInfer + ); assert_eq!( instruction_semantics(&Instruction::ProcRef( miden_assembly_syntax::ast::InvocationTarget::Symbol("foo".parse().unwrap()) From 8fbc4efe2a8724c59a6d7b1296a6fb3536e20ddb Mon Sep 17 00:00:00 2001 From: djole Date: Sat, 25 Jul 2026 20:12:10 +0200 Subject: [PATCH 23/23] fix(debug): resolve consolidated source locations --- Cargo.lock | 5 ++++- codegen/masm/src/lower/lowering.rs | 16 ++++++++++++---- frontend/wasm/src/module/func_translator.rs | 17 ++++++++++++++++- .../wasm/src/module/function_builder_ext.rs | 16 ++++++++++++++++ 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6819a6c08..2498a6987 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3208,10 +3208,13 @@ dependencies = [ name = "miden-mast-package" version = "0.25.8" dependencies = [ + "hashbrown 0.17.1", "log", "miden-assembly-syntax", "miden-core", "miden-debug-types", + "miden-utils-indexing 0.25.8", + "rustc-hash", "serde", "thiserror 2.0.18", ] @@ -3564,7 +3567,7 @@ dependencies = [ name = "miden-utils-indexing" version = "0.25.8" dependencies = [ - "miden-crypto", + "miden-serde-utils 0.28.0", "proptest", "serde", "thiserror 2.0.18", diff --git a/codegen/masm/src/lower/lowering.rs b/codegen/masm/src/lower/lowering.rs index 58a672091..569c26291 100644 --- a/codegen/masm/src/lower/lowering.rs +++ b/codegen/masm/src/lower/lowering.rs @@ -1599,6 +1599,7 @@ const DEBUG_VAR_KILL_SENTINEL: &[u8] = b"\0miden.debug.kill"; fn apply_debug_var_metadata( debug_var: &mut masm::DebugVarInfo, var: &midenc_hir::dialects::debuginfo::attributes::Variable, + source_manager: &dyn midenc_session::SourceManager, ) { // Set arg_index if this is a parameter if let Some(arg_index) = var.arg_index { @@ -1614,7 +1615,11 @@ fn apply_debug_var_metadata( LineNumber::new(line.get()).unwrap_or_default(), var.column.and_then(ColumnNumber::new).unwrap_or_default(), ); - debug_var.set_location(file_line_col); + if let Some(span) = source_manager.file_line_col_to_span(file_line_col) + && let Ok(location) = source_manager.location(span) + { + debug_var.set_location(location); + } } } @@ -1667,7 +1672,8 @@ impl HirLowering for debuginfo::DebugValue { }; let mut debug_var = masm::DebugVarInfo::new(var.name.to_string(), value_location); - apply_debug_var_metadata(&mut debug_var, var.as_value()); + let source_manager = self.as_operation().context().source_manager(); + apply_debug_var_metadata(&mut debug_var, var.as_value(), source_manager.as_ref()); // Emit the instruction followed by a `nop` so that the debug var instruction is never the // last instruction in a MASM block @@ -1699,7 +1705,8 @@ impl HirLowering for debuginfo::DebugDeclare { }; let mut debug_var = masm::DebugVarInfo::new(var.name.to_string(), value_location); - apply_debug_var_metadata(&mut debug_var, var.as_value()); + let source_manager = self.as_operation().context().source_manager(); + apply_debug_var_metadata(&mut debug_var, var.as_value(), source_manager.as_ref()); // Emit the instruction followed by a `nop` so that the debug var instruction is never the // last instruction in a MASM block @@ -1730,7 +1737,8 @@ impl HirLowering for debuginfo::DebugKill { var.name.to_string(), masm::DebugVarLocation::Expression(DEBUG_VAR_KILL_SENTINEL.to_vec()), ); - apply_debug_var_metadata(&mut debug_var, var.as_value()); + let source_manager = self.as_operation().context().source_manager(); + apply_debug_var_metadata(&mut debug_var, var.as_value(), source_manager.as_ref()); // Emit the instruction followed by a `nop` so that the debug var instruction is never the // last instruction in a MASM block diff --git a/frontend/wasm/src/module/func_translator.rs b/frontend/wasm/src/module/func_translator.rs index 0f7bbd3b9..be05e0e05 100644 --- a/frontend/wasm/src/module/func_translator.rs +++ b/frontend/wasm/src/module/func_translator.rs @@ -15,7 +15,7 @@ use std::{ use cranelift_entity::EntityRef; use midenc_hir::{ BlockRef, Builder, Context, Op, Type, - diagnostics::{ColumnNumber, LineNumber}, + diagnostics::{ColumnNumber, LineNumber, SourceContent, Uri}, dialects::{ builtin::{BuiltinOpBuilder, FunctionRef}, debuginfo::attributes::InlineCallFrame, @@ -453,6 +453,21 @@ fn resolve_source_location( } else { path.to_path_buf() }; + let remapped_uri = Uri::from(path.as_path()); + let register_remapped_source = source_file.uri() != &remapped_uri + && session + .source_manager + .get_by_uri(&remapped_uri) + .is_none_or(|existing| existing.as_str() != source_file.as_str()); + if register_remapped_source { + let mut content = SourceContent::new( + source_file.content().language(), + remapped_uri.clone(), + source_file.as_str(), + ); + content.set_version(source_file.content().version()); + session.source_manager.load_from_raw_parts(remapped_uri, content); + } Ok((!span.is_unknown()).then_some(ResolvedSourceLocation { path, diff --git a/frontend/wasm/src/module/function_builder_ext.rs b/frontend/wasm/src/module/function_builder_ext.rs index 7010e1b6e..75a14f8e1 100644 --- a/frontend/wasm/src/module/function_builder_ext.rs +++ b/frontend/wasm/src/module/function_builder_ext.rs @@ -13,6 +13,7 @@ use midenc_hir::{ BlockRef, Builder, Context, EntityRef, FxHashMap, FxHashSet, Ident, Listener, ListenerType, Op, OpBuilder, OperationRef, ProgramPoint, RegionRef, SmallVec, SourceSpan, Spanned, Type, ValueRef, + diagnostics::{SourceContent, Uri}, dialects::{ builtin::{ BuiltinOpBuilder, FunctionBuilder, FunctionRef, @@ -804,6 +805,21 @@ impl FunctionBuilderExt<'_, B> { }) .max_by_key(|path| path.len()) .unwrap_or_else(|| uri.as_str().to_owned()); + let remapped_uri = Uri::new(&file); + let register_remapped_source = source_file.uri() != &remapped_uri + && session + .source_manager + .get_by_uri(&remapped_uri) + .is_none_or(|existing| existing.as_str() != source_file.as_str()); + if register_remapped_source { + let mut content = SourceContent::new( + source_file.content().language(), + remapped_uri.clone(), + source_file.as_str(), + ); + content.set_version(source_file.content().version()); + session.source_manager.load_from_raw_parts(remapped_uri, content); + } let path = Path::new(&file); let file_symbol = Symbol::intern(&file); let directory_symbol = path.parent().and_then(|parent| parent.to_str()).map(Symbol::intern);