diff --git a/Cargo.lock b/Cargo.lock index 71f64f087..1d0d20fd1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -192,7 +192,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -219,7 +219,7 @@ dependencies = [ "miniz_oxide", "object 0.37.3", "rustc-demangle", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -245,9 +245,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.3" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" +checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" [[package]] name = "bech32" @@ -314,16 +314,15 @@ dependencies = [ [[package]] name = "blake3" -version = "1.8.3" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", - "cpufeatures", ] [[package]] @@ -344,6 +343,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + [[package]] name = "bstr" version = "1.12.1" @@ -391,7 +399,7 @@ dependencies = [ "env_logger", "liquid", "log", - "miden-mast-package", + "miden-mast-package 0.20.5", "midenc-compile", "midenc-session", "path-absolutize", @@ -414,9 +422,9 @@ dependencies = [ [[package]] name = "cargo-util" -version = "0.2.26" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f70b0c7772872ac3234e46a6591091d4da57f0c3aa24c381776ed1550624a14b" +checksum = "03ae3fc62640c9e0235c95b07e68a59a31919d7331bd95961cc811bc0607c87b" dependencies = [ "anyhow", "core-foundation", @@ -472,9 +480,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.55" +version = "1.2.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" +checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" dependencies = [ "find-msvc-tools", "jobserver", @@ -488,6 +496,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chacha20" version = "0.9.1" @@ -514,15 +528,15 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.43" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -565,9 +579,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.56" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75ca66430e33a14957acc24c5077b503e7d374151b2b4b3a10c83b4ceb4be0e" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -575,9 +589,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.56" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793207c7fa6300a0608d1080b858e5fdbe713cdc1c8db9fb17777d8a13e63df0" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -588,21 +602,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] name = "clap_lex" -version = "0.7.7" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "colorchoice" @@ -645,7 +659,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -656,9 +670,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "constant_time_eq" -version = "0.4.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "core-foundation" @@ -857,7 +871,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -866,18 +880,8 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core 0.20.11", - "darling_macro 0.20.11", -] - -[[package]] -name = "darling" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" -dependencies = [ - "darling_core 0.23.0", - "darling_macro 0.23.0", + "darling_core", + "darling_macro", ] [[package]] @@ -891,20 +895,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.114", -] - -[[package]] -name = "darling_core" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -913,20 +904,9 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core 0.20.11", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" -dependencies = [ - "darling_core 0.23.0", + "darling_core", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -950,23 +930,23 @@ dependencies = [ [[package]] name = "derive_more" -version = "2.1.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" dependencies = [ "derive_more-impl", ] [[package]] name = "derive_more-impl" -version = "2.1.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -987,6 +967,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags", + "objc2", +] + [[package]] name = "dissimilar" version = "1.0.10" @@ -1066,6 +1056,18 @@ dependencies = [ "log", ] +[[package]] +name = "enum_dispatch" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "env_filter" version = "0.1.4" @@ -1141,20 +1143,21 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "filetime" -version = "0.2.27" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" dependencies = [ "cfg-if", "libc", "libredox", + "windows-sys 0.60.2", ] [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fixedbitset" @@ -1164,9 +1167,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.8" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -1204,9 +1207,9 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "fs-err" -version = "3.2.2" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf68cef89750956493a66a10f512b9e58d9db21f2a573c079c0bdf1207a54a7" +checksum = "824f08d01d0f496b3eca4f001a13cf17690a6ee930043d20817f547455fd98f8" dependencies = [ "autocfg", ] @@ -1273,7 +1276,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -1317,8 +1320,8 @@ dependencies = [ "libc", "log", "rustversion", - "windows-link 0.2.1", - "windows-result 0.4.1", + "windows-link", + "windows-result", ] [[package]] @@ -1334,9 +1337,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.17" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", @@ -1407,9 +1410,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.13" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", @@ -1537,17 +1540,17 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "human-panic" -version = "2.0.6" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "075e8747af11abcff07d55d98297c9c6c70eb5d6365b25e7b12f02e484935191" +checksum = "9a8a07a0957cd4a3cad4a1e4ca7cd5ea07fcacef6ebe2e5d0c7935bfc95120d8" dependencies = [ "anstream", "anstyle", "backtrace", + "os_info", "serde", "serde_derive", - "sysinfo", - "toml 0.9.11+spec-1.1.0", + "toml 0.9.10+spec-1.1.0", "uuid", ] @@ -1610,9 +1613,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.65" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1620,7 +1623,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core", ] [[package]] @@ -1634,9 +1637,9 @@ dependencies = [ [[package]] name = "id-arena" -version = "2.3.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" +checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "ident_case" @@ -1682,9 +1685,9 @@ checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" -version = "2.13.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", "hashbrown 0.16.1", @@ -1712,15 +1715,15 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.11" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357b7205c6cd18dd2c86ed312d1e70add149aea98e7ef72b9fdf0270e555c11d" +checksum = "6778b0196eefee7df739db78758e5cf9b37412268bfa5650bfeed028aed20d9c" dependencies = [ - "darling 0.23.0", + "darling", "indoc", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -1773,15 +1776,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" [[package]] name = "jiff" -version = "0.2.18" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50" +checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" dependencies = [ "jiff-static", "log", @@ -1792,13 +1795,13 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.18" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78" +checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -1813,9 +1816,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -1899,25 +1902,25 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.180" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libm" -version = "0.2.16" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50" dependencies = [ "bitflags", "libc", - "redox_syscall 0.7.0", + "redox_syscall 0.6.0", ] [[package]] @@ -1987,7 +1990,7 @@ checksum = "de66c928222984aea59fcaed8ba627f388aaac3c1f57dcb05cc25495ef8faefe" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -2006,9 +2009,9 @@ dependencies = [ [[package]] name = "litcheck-core" -version = "0.3.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2238928da958420f1662522c0d366b6e26742ada4a5ab14511293c444325c3f4" +checksum = "8410799f18c575b906d4f6ea7e06ff0fe72111bd3e22102f535407f2aa2d12a9" dependencies = [ "anyhow", "clap", @@ -2026,9 +2029,9 @@ dependencies = [ [[package]] name = "litcheck-filecheck" -version = "0.3.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d82cc7224aef6a1d203b75924733bf0ea0fb868ba33f36719b0502d85fd55a8" +checksum = "5c69dfe5eb997208d9bb97d291c7e484a68240eff4ccf6b76017433df10d6462" dependencies = [ "aho-corasick", "anyhow", @@ -2041,7 +2044,7 @@ dependencies = [ "lalrpop-util", "litcheck-core", "log", - "logos 0.16.1", + "logos 0.16.0", "memchr", "miette", "regex", @@ -2078,11 +2081,11 @@ dependencies = [ [[package]] name = "logos" -version = "0.16.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2c55a318a87600ea870ff8c2012148b44bf18b74fad48d0f835c38c7d07c5f" +checksum = "a790d11254054e5dc83902dba85d253ff06ceb0cfafb12be8773435cb9dfb4f4" dependencies = [ - "logos-derive 0.16.1", + "logos-derive 0.16.0", ] [[package]] @@ -2098,21 +2101,23 @@ dependencies = [ "quote", "regex-syntax", "rustc_version 0.4.1", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] name = "logos-codegen" -version = "0.16.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58b3ffaa284e1350d017a57d04ada118c4583cf260c8fb01e0fe28a2e9cf8970" +checksum = "f60337c43a38313b58871f8d5d76872b8e17aa9d51fad494b5e76092c0ce05f5" dependencies = [ + "beef", "fnv", "proc-macro2", "quote", "regex-automata", "regex-syntax", - "syn 2.0.114", + "rustc_version 0.4.1", + "syn 2.0.111", ] [[package]] @@ -2126,11 +2131,11 @@ dependencies = [ [[package]] name = "logos-derive" -version = "0.16.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52d3a9855747c17eaf4383823f135220716ab49bea5fbea7dd42cc9a92f8aa31" +checksum = "d151b2ae667f69e10b8738f5cac0c746faa22b2e15ea7e83b55476afec3767dc" dependencies = [ - "logos-codegen 0.16.1", + "logos-codegen 0.16.0", ] [[package]] @@ -2199,7 +2204,7 @@ dependencies = [ "miden-field-repr", "miden-sdk-alloc", "miden-stdlib-sys", - "wit-bindgen 0.46.0", + "wit-bindgen", ] [[package]] @@ -2209,29 +2214,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21a867217bab689c0539f6b4797cb452f0932de6904479a38f1322e045b9383b" dependencies = [ "fs-err", - "miden-assembly", - "miden-core", + "miden-assembly 0.20.5", + "miden-core 0.20.5", "miden-core-lib", "miden-protocol", "miden-standards", - "miden-utils-sync", + "miden-utils-sync 0.20.5", "regex", "walkdir", ] +[[package]] +name = "miden-air" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06acfd2ddc25b68f9d23d2add3f15c0ec3f9890ce6418409d71bea9dc6590bd0" +dependencies = [ + "miden-core 0.19.1", + "miden-utils-indexing 0.19.1", + "thiserror", + "winter-air", + "winter-prover", +] + [[package]] name = "miden-air" version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33eacdeeaf50a704b221efe81abf1f1e9870154c5bd4acc11f5ad3f872e73509" dependencies = [ - "miden-core", - "miden-utils-indexing", + "miden-core 0.20.5", + "miden-utils-indexing 0.20.5", "thiserror", "winter-air", "winter-prover", ] +[[package]] +name = "miden-assembly" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219b9e48bb286b58a23bb65cf74baa1b24ddbcb462ca625b38186674571047" +dependencies = [ + "log", + "miden-assembly-syntax 0.19.1", + "miden-core 0.19.1", + "miden-mast-package 0.19.1", + "smallvec", + "thiserror", +] + [[package]] name = "miden-assembly" version = "0.20.5" @@ -2240,9 +2272,31 @@ checksum = "cdebc6a73964aaf92179d9a9925ca48d662894f24774ab6380e784214de00fdb" dependencies = [ "env_logger", "log", - "miden-assembly-syntax", - "miden-core", - "miden-mast-package", + "miden-assembly-syntax 0.20.5", + "miden-core 0.20.5", + "miden-mast-package 0.20.5", + "smallvec", + "thiserror", +] + +[[package]] +name = "miden-assembly-syntax" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1eeaef2853061c54527bb2664c0c832ce3d1f80847c79512455fec3b93057f2a" +dependencies = [ + "aho-corasick", + "lalrpop", + "lalrpop-util", + "log", + "miden-core 0.19.1", + "miden-debug-types 0.19.1", + "miden-utils-diagnostics 0.19.1", + "midenc-hir-type", + "proptest", + "regex", + "rustc_version 0.4.1", + "semver 1.0.27", "smallvec", "thiserror", ] @@ -2258,9 +2312,9 @@ dependencies = [ "lalrpop", "lalrpop-util", "log", - "miden-core", - "miden-debug-types", - "miden-utils-diagnostics", + "miden-core 0.20.5", + "miden-debug-types 0.20.5", + "miden-utils-diagnostics 0.20.5", "midenc-hir-type", "proptest", "proptest-derive", @@ -2288,7 +2342,7 @@ dependencies = [ "proc-macro2", "quote", "semver 1.0.27", - "syn 2.0.114", + "syn 2.0.111", "toml 0.8.23", "wit-bindgen-core", "wit-bindgen-rust", @@ -2302,6 +2356,17 @@ dependencies = [ "miden-stdlib-sys", ] +[[package]] +name = "miden-block-prover" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec766587e838664ded55fa926d0611244cac2fe23b7cec202d8db0a85d9e536e" +dependencies = [ + "miden-lib", + "miden-objects", + "thiserror", +] + [[package]] name = "miden-block-prover" version = "0.13.3" @@ -2324,14 +2389,14 @@ dependencies = [ "futures", "getrandom 0.3.4", "hex", - "miden-mast-package", + "miden-mast-package 0.20.5", "miden-node-proto-build", "miden-note-transport-proto-build", "miden-protocol", "miden-remote-prover-client", "miden-standards", - "miden-testing", - "miden-tx", + "miden-testing 0.13.3", + "miden-tx 0.13.3", "miette", "prost", "prost-types", @@ -2347,6 +2412,24 @@ dependencies = [ "web-sys", ] +[[package]] +name = "miden-core" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "452a00429d05c416001ec0578291eb88e115cf94fc22b3308267abfdcd813440" +dependencies = [ + "enum_dispatch", + "miden-crypto 0.18.5", + "miden-debug-types 0.19.1", + "miden-formatting", + "miden-utils-indexing 0.19.1", + "num-derive", + "num-traits", + "thiserror", + "winter-math", + "winter-utils", +] + [[package]] name = "miden-core" version = "0.20.5" @@ -2355,11 +2438,11 @@ checksum = "10cb3c6b071a7a5fc6a10dfbaed76f3d0170f3739a231233a3c5e27596a5612f" dependencies = [ "derive_more", "itertools 0.14.0", - "miden-crypto", - "miden-debug-types", + "miden-crypto 0.19.4", + "miden-debug-types 0.20.5", "miden-formatting", "miden-utils-core-derive", - "miden-utils-indexing", + "miden-utils-indexing 0.20.5", "num-derive", "num-traits", "proptest", @@ -2377,15 +2460,45 @@ checksum = "703c0e94089a3135ba75e3586fcb4e5d61e3bee10a7ee1dad0b2ac0a497c14e9" dependencies = [ "env_logger", "fs-err", - "miden-assembly", - "miden-core", - "miden-crypto", - "miden-processor", - "miden-utils-sync", + "miden-assembly 0.20.5", + "miden-core 0.20.5", + "miden-crypto 0.19.4", + "miden-processor 0.20.5", + "miden-utils-sync 0.20.5", "sha2", "thiserror", ] +[[package]] +name = "miden-crypto" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395e5cc76b64e24533ee55c8d1ff90305b8cad372bdbea4f4f324239e36a895f" +dependencies = [ + "blake3", + "cc", + "chacha20poly1305", + "ed25519-dalek", + "flume", + "glob", + "hkdf", + "k256", + "miden-crypto-derive 0.18.5", + "num", + "num-complex", + "rand", + "rand_chacha", + "rand_core 0.9.3", + "rand_hc", + "sha3", + "subtle", + "thiserror", + "winter-crypto", + "winter-math", + "winter-utils", + "x25519-dalek", +] + [[package]] name = "miden-crypto" version = "0.19.4" @@ -2402,12 +2515,12 @@ dependencies = [ "hashbrown 0.16.1", "hkdf", "k256", - "miden-crypto-derive", + "miden-crypto-derive 0.19.4", "num", "num-complex", "rand", "rand_chacha", - "rand_core 0.9.5", + "rand_core 0.9.3", "rand_hc", "rayon", "sha2", @@ -2420,6 +2533,16 @@ dependencies = [ "x25519-dalek", ] +[[package]] +name = "miden-crypto-derive" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89641b257eb395cf03105ac1c6cbdf3fd9a5450749696af9835c3c47fc6806e" +dependencies = [ + "quote", + "syn 2.0.111", +] + [[package]] name = "miden-crypto-derive" version = "0.19.4" @@ -2427,7 +2550,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f40e95b9c7c99ed6bbf073d9e02721d812dedd2c195019c0a0e0a3dbb9cbf034" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -2442,12 +2565,12 @@ dependencies = [ "futures", "glob", "log", - "miden-assembly", - "miden-assembly-syntax", - "miden-core", - "miden-debug-types", - "miden-mast-package", - "miden-processor", + "miden-assembly 0.20.5", + "miden-assembly-syntax 0.20.5", + "miden-core 0.20.5", + "miden-debug-types 0.20.5", + "miden-mast-package 0.20.5", + "miden-processor 0.20.5", "miden-thiserror", "proptest", "ratatui", @@ -2462,6 +2585,24 @@ dependencies = [ "tui-input", ] +[[package]] +name = "miden-debug-types" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97eed62ac0ca7420e49148fd306c74786b23a8d31df6da6277c671ba3e5c619a" +dependencies = [ + "memchr", + "miden-crypto 0.18.5", + "miden-formatting", + "miden-miette", + "miden-utils-indexing 0.19.1", + "miden-utils-sync 0.19.1", + "paste", + "serde", + "serde_spanned 1.0.4", + "thiserror", +] + [[package]] name = "miden-debug-types" version = "0.20.5" @@ -2469,11 +2610,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cb127273a9ee9ac1f9ad71899c1c2a0dea8cf768a90024d2d8b91800980c756" dependencies = [ "memchr", - "miden-crypto", + "miden-crypto 0.19.4", "miden-formatting", "miden-miette", - "miden-utils-indexing", - "miden-utils-sync", + "miden-utils-indexing 0.20.5", + "miden-utils-sync 0.20.5", "paste", "serde", "serde_spanned 1.0.4", @@ -2484,14 +2625,14 @@ dependencies = [ name = "miden-field" version = "0.9.0" dependencies = [ - "miden-core", + "miden-core 0.20.5", ] [[package]] name = "miden-field-repr" version = "0.9.0" dependencies = [ - "miden-core", + "miden-core 0.20.5", "miden-field", "miden-field-repr-derive", ] @@ -2502,19 +2643,19 @@ version = "0.9.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] name = "miden-field-repr-tests" version = "0.9.0" dependencies = [ - "miden-core", + "miden-core 0.20.5", "miden-debug", "miden-field", "miden-field-repr", "miden-integration-tests", - "miden-processor", + "miden-processor 0.20.5", "miden-protocol", "midenc-expect-test", "midenc-frontend-wasm", @@ -2543,11 +2684,11 @@ dependencies = [ "filetime", "glob", "log", - "miden-assembly", - "miden-core", + "miden-assembly 0.20.5", + "miden-core 0.20.5", "miden-debug", - "miden-mast-package", - "miden-processor", + "miden-mast-package 0.20.5", + "miden-processor 0.20.5", "miden-protocol", "miden-standards", "midenc-codegen-masm", @@ -2566,6 +2707,37 @@ dependencies = [ "wasmprinter", ] +[[package]] +name = "miden-lib" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598582071e5b0ec835d06288857d4ddc0090a98bd4c17e408fa56b2c43f45d73" +dependencies = [ + "Inflector", + "fs-err", + "miden-assembly 0.19.1", + "miden-core 0.19.1", + "miden-objects", + "miden-processor 0.19.1", + "miden-stdlib", + "rand", + "regex", + "thiserror", + "walkdir", +] + +[[package]] +name = "miden-mast-package" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d13e6ba2b357551598f13396ed52f8f21aa99979aa3b338bb5521feeda19c8a" +dependencies = [ + "derive_more", + "miden-assembly-syntax 0.19.1", + "miden-core 0.19.1", + "thiserror", +] + [[package]] name = "miden-mast-package" version = "0.20.5" @@ -2573,8 +2745,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f7b21cd2593ed5930d5af10b197917dd6668ab34e203e47fb9c1ba712dc9a2c" dependencies = [ "derive_more", - "miden-assembly-syntax", - "miden-core", + "miden-assembly-syntax 0.20.5", + "miden-core 0.20.5", "thiserror", ] @@ -2601,7 +2773,7 @@ dependencies = [ "supports-color", "supports-hyperlinks", "supports-unicode", - "syn 2.0.114", + "syn 2.0.111", "terminal_size 0.3.0", "textwrap", "thiserror", @@ -2617,7 +2789,7 @@ checksum = "86a905f3ea65634dd4d1041a4f0fd0a3e77aa4118341d265af1a94339182222f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -2644,6 +2816,50 @@ dependencies = [ "tonic-prost-build", ] +[[package]] +name = "miden-objects" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace4018bb2d6cdbcff4d86d8af5ade8efca9f0479f7e5775c7f09cfab5f91ebe" +dependencies = [ + "bech32", + "getrandom 0.3.4", + "miden-assembly 0.19.1", + "miden-assembly-syntax 0.19.1", + "miden-core 0.19.1", + "miden-crypto 0.18.5", + "miden-mast-package 0.19.1", + "miden-processor 0.19.1", + "miden-stdlib", + "miden-utils-sync 0.19.1", + "miden-verifier 0.19.1", + "rand", + "rand_xoshiro 0.7.0", + "semver 1.0.27", + "thiserror", + "winter-rand-utils", +] + +[[package]] +name = "miden-processor" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ef77929651b8755965cde8f589bd38e2345a619d54cab6427f91aa23c47f6a" +dependencies = [ + "itertools 0.14.0", + "miden-air 0.19.1", + "miden-core 0.19.1", + "miden-debug-types 0.19.1", + "miden-utils-diagnostics 0.19.1", + "miden-utils-indexing 0.19.1", + "paste", + "rayon", + "thiserror", + "tokio", + "tracing", + "winter-prover", +] + [[package]] name = "miden-processor" version = "0.20.5" @@ -2651,11 +2867,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72712c2c71774f7a49d66a0265b57be7a283919ffbdc4b034ab355b0283de021" dependencies = [ "itertools 0.14.0", - "miden-air", - "miden-core", - "miden-debug-types", - "miden-utils-diagnostics", - "miden-utils-indexing", + "miden-air 0.20.5", + "miden-core 0.20.5", + "miden-debug-types 0.20.5", + "miden-utils-diagnostics 0.20.5", + "miden-utils-indexing 0.20.5", "paste", "rayon", "thiserror", @@ -2673,16 +2889,16 @@ dependencies = [ "bech32", "fs-err", "getrandom 0.3.4", - "miden-assembly", - "miden-assembly-syntax", - "miden-core", + "miden-assembly 0.20.5", + "miden-assembly-syntax 0.20.5", + "miden-core 0.20.5", "miden-core-lib", - "miden-crypto", - "miden-mast-package", - "miden-processor", + "miden-crypto 0.19.4", + "miden-mast-package 0.20.5", + "miden-processor 0.20.5", "miden-protocol-macros", - "miden-utils-sync", - "miden-verifier", + "miden-utils-sync 0.20.5", + "miden-verifier 0.20.5", "rand", "rand_chacha", "rand_xoshiro 0.7.0", @@ -2690,7 +2906,7 @@ dependencies = [ "semver 1.0.27", "serde", "thiserror", - "toml 0.9.11+spec-1.1.0", + "toml 0.9.10+spec-1.1.0", "walkdir", "winter-rand-utils", ] @@ -2703,7 +2919,21 @@ checksum = "f2dc854c1b9e49e82d3f39c5710345226e0b2a62ec0ea220c616f1f3a099cfb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", +] + +[[package]] +name = "miden-prover" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c30a5d10baeec17b9336de8544cb7f9b96b32de757c4cfb8d95ee0521bb5cd" +dependencies = [ + "miden-air 0.19.1", + "miden-debug-types 0.19.1", + "miden-processor 0.19.1", + "tracing", + "winter-maybe-async", + "winter-prover", ] [[package]] @@ -2712,9 +2942,9 @@ version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d6a65651c8bf931743580c4a8c00a35f3453da39679bd23fa95f29ae7849ffd" dependencies = [ - "miden-air", - "miden-debug-types", - "miden-processor", + "miden-air 0.20.5", + "miden-debug-types 0.20.5", + "miden-processor 0.20.5", "tracing", "winter-maybe-async", "winter-prover", @@ -2730,7 +2960,7 @@ dependencies = [ "getrandom 0.3.4", "miden-node-proto-build", "miden-protocol", - "miden-tx", + "miden-tx 0.13.3", "miette", "prost", "thiserror", @@ -2752,10 +2982,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98e33771fc35e1e640582bcd26c88b2ab449dd3a70888b315546d0d3447f4bb3" dependencies = [ "fs-err", - "miden-assembly", - "miden-core", + "miden-assembly 0.20.5", + "miden-core 0.20.5", "miden-core-lib", - "miden-processor", + "miden-processor 0.20.5", "miden-protocol", "rand", "regex", @@ -2763,6 +2993,22 @@ dependencies = [ "walkdir", ] +[[package]] +name = "miden-stdlib" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e90a5de45a1e6213ff17b66fff8accde0bbc64264e2c22bbcb9a895f8f3b767" +dependencies = [ + "env_logger", + "fs-err", + "miden-assembly 0.19.1", + "miden-core 0.19.1", + "miden-crypto 0.18.5", + "miden-processor 0.19.1", + "miden-utils-sync 0.19.1", + "thiserror", +] + [[package]] name = "miden-stdlib-sys" version = "0.9.0" @@ -2781,17 +3027,54 @@ dependencies = [ "libtest-mimic", "miden-protocol", "miden-test-harness-macros", - "miden-testing", + "miden-testing 0.13.3", +] + +[[package]] +name = "miden-test-harness-derive" +version = "0.6.0" +dependencies = [ + "anyhow", + "darling", + "miden-mast-package 0.20.5", + "miden-testing 0.12.4", + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] name = "miden-test-harness-macros" version = "0.6.0" dependencies = [ - "miden-mast-package", - "miden-testing", + "anyhow", + "darling", + "miden-mast-package 0.20.5", + "miden-test-harness-derive", + "miden-testing 0.13.3", + "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", +] + +[[package]] +name = "miden-testing" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda0d572d7415682ed168f616becf006825aa04b89692f9907cbb3e3586bf46a" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "miden-block-prover 0.12.4", + "miden-lib", + "miden-objects", + "miden-processor 0.19.1", + "miden-tx 0.12.4", + "miden-tx-batch-prover 0.12.4", + "rand", + "rand_chacha", + "thiserror", + "winterfell", ] [[package]] @@ -2803,14 +3086,14 @@ dependencies = [ "anyhow", "itertools 0.14.0", "miden-agglayer", - "miden-assembly", - "miden-block-prover", + "miden-assembly 0.20.5", + "miden-block-prover 0.13.3", "miden-core-lib", - "miden-processor", + "miden-processor 0.20.5", "miden-protocol", "miden-standards", - "miden-tx", - "miden-tx-batch-prover", + "miden-tx 0.13.3", + "miden-tx-batch-prover 0.13.3", "rand", "rand_chacha", "winterfell", @@ -2829,11 +3112,27 @@ dependencies = [ name = "miden-thiserror-impl" version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee4176a0f2e7d29d2a8ee7e60b6deb14ce67a20e94c3e2c7275cdb8804e1862" +checksum = "0ee4176a0f2e7d29d2a8ee7e60b6deb14ce67a20e94c3e2c7275cdb8804e1862" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "miden-tx" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d959064f99ce09fc38e9b6b4dc24c3fa80a63072bf5840a1074ca4ed5e9c911" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", + "miden-lib", + "miden-objects", + "miden-processor 0.19.1", + "miden-prover 0.19.1", + "miden-verifier 0.19.1", + "rand", + "thiserror", + "tokio", ] [[package]] @@ -2842,14 +3141,24 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "430e4ee02b5efb71b104926e229441e0071a93a259a70740bf8c436495caa64f" dependencies = [ - "miden-processor", + "miden-processor 0.20.5", "miden-protocol", - "miden-prover", + "miden-prover 0.20.5", "miden-standards", - "miden-verifier", + "miden-verifier 0.20.5", "thiserror", ] +[[package]] +name = "miden-tx-batch-prover" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5029810b106654a1ec5d7d7123945db91b96bc4f4187715d0c2cfe0b0a53af4" +dependencies = [ + "miden-objects", + "miden-tx 0.12.4", +] + [[package]] name = "miden-tx-batch-prover" version = "0.13.3" @@ -2857,7 +3166,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03bc209b6487ebac0de230461e229a99d17ed73596c7d99fc59eea47a28a89cc" dependencies = [ "miden-protocol", - "miden-tx", + "miden-tx 0.13.3", ] [[package]] @@ -2871,19 +3180,41 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "miden-utils-diagnostics" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a3ff4c019d96539a7066626efb4dce5c9fb7b0e44e961b0c2571e78f34236d5" +dependencies = [ + "miden-crypto 0.18.5", + "miden-debug-types 0.19.1", + "miden-miette", + "paste", + "tracing", +] + [[package]] name = "miden-utils-diagnostics" version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de6c667538374e6a3579397a29f82d94e62d2f9cf1eca8a95da1a7acbfed381d" dependencies = [ - "miden-crypto", - "miden-debug-types", + "miden-crypto 0.19.4", + "miden-debug-types 0.20.5", "miden-miette", "paste", "tracing", ] +[[package]] +name = "miden-utils-indexing" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c798250bee4e856d4f18c161e91cdcbef1906f6614d00cf0063b47031c0f8cc6" +dependencies = [ + "thiserror", +] + [[package]] name = "miden-utils-indexing" version = "0.20.5" @@ -2893,6 +3224,17 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miden-utils-sync" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feebe7d896c013ea74dbc98de978836606356a044d4ed3b61ded54d3b319d89f" +dependencies = [ + "lock_api", + "loom", + "parking_lot", +] + [[package]] name = "miden-utils-sync" version = "0.20.5" @@ -2904,14 +3246,27 @@ dependencies = [ "parking_lot", ] +[[package]] +name = "miden-verifier" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8f8e47b78bba1fe1b31faee8f12aafd95385f6d6a8b108b03e92f5d743bb29f" +dependencies = [ + "miden-air 0.19.1", + "miden-core 0.19.1", + "thiserror", + "tracing", + "winter-verifier", +] + [[package]] name = "miden-verifier" version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9513494a2a8cd876150bbbb5a2985b078368de280cc8a52e9aff41320c344b7" dependencies = [ - "miden-air", - "miden-core", + "miden-air 0.20.5", + "miden-core 0.20.5", "thiserror", "tracing", "winter-verifier", @@ -2944,11 +3299,11 @@ dependencies = [ "inventory", "itertools 0.14.0", "log", - "miden-assembly", - "miden-assembly-syntax", - "miden-core", - "miden-mast-package", - "miden-processor", + "miden-assembly 0.20.5", + "miden-assembly-syntax 0.20.5", + "miden-core 0.20.5", + "miden-mast-package 0.20.5", + "miden-processor 0.20.5", "miden-protocol", "miden-thiserror", "midenc-dialect-arith", @@ -2974,8 +3329,8 @@ dependencies = [ "clap", "inventory", "log", - "miden-assembly", - "miden-mast-package", + "miden-assembly 0.20.5", + "miden-mast-package 0.20.5", "miden-thiserror", "midenc-codegen-masm", "midenc-dialect-hir", @@ -3072,7 +3427,7 @@ dependencies = [ "gimli 0.31.1", "indexmap", "log", - "miden-core", + "miden-core 0.20.5", "miden-thiserror", "midenc-dialect-arith", "midenc-dialect-cf", @@ -3101,7 +3456,7 @@ dependencies = [ "intrusive-collections", "inventory", "log", - "miden-core", + "miden-core 0.20.5", "miden-thiserror", "midenc-hir-macros", "midenc-hir-symbol", @@ -3150,10 +3505,10 @@ name = "midenc-hir-macros" version = "0.6.0" dependencies = [ "Inflector", - "darling 0.20.11", + "darling", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -3199,12 +3554,13 @@ name = "midenc-integration-network-tests" version = "0.6.0" dependencies = [ "miden-client", - "miden-core", + "miden-core 0.20.5", "miden-field-repr", "miden-integration-tests", - "miden-mast-package", + "miden-mast-package 0.20.5", "miden-protocol", "miden-standards", + "miden-test-harness", "midenc-frontend-wasm", "rand", "tokio", @@ -3218,12 +3574,12 @@ dependencies = [ "clap", "inventory", "log", - "miden-assembly", - "miden-assembly-syntax", - "miden-core", + "miden-assembly 0.20.5", + "miden-assembly-syntax 0.20.5", + "miden-core 0.20.5", "miden-core-lib", - "miden-debug-types", - "miden-mast-package", + "miden-debug-types 0.20.5", + "miden-mast-package 0.20.5", "miden-protocol", "miden-thiserror", "midenc-hir-macros", @@ -3260,7 +3616,7 @@ checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -3306,7 +3662,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.17", + "getrandom 0.2.16", ] [[package]] @@ -3316,12 +3672,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] -name = "ntapi" -version = "0.4.2" +name = "nix" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c70f219e21142367c70c0b30c6a9e3a14d55b4d12a204d897fbec83a0363f081" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "winapi", + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", ] [[package]] @@ -3368,9 +3727,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.0" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-derive" @@ -3380,7 +3739,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -3424,6 +3783,36 @@ dependencies = [ "libm", ] +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" +dependencies = [ + "bitflags", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "objc2", + "objc2-foundation", +] + [[package]] name = "objc2-core-foundation" version = "0.3.2" @@ -3431,16 +3820,126 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ "bitflags", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-location" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", ] [[package]] -name = "objc2-io-kit" +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ + "bitflags", + "block2", "libc", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-location", + "objc2-core-text", + "objc2-foundation", + "objc2-quartz-core", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "objc2", + "objc2-foundation", ] [[package]] @@ -3511,9 +4010,25 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl-probe" -version = "0.2.1" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "os_info" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4022a17595a00d6a369236fdae483f0de7f0a339960a53118b818238e132224" +dependencies = [ + "android_system_properties", + "log", + "nix", + "objc2", + "objc2-foundation", + "objc2-ui-kit", + "serde", + "windows-sys 0.61.2", +] [[package]] name = "owo-colors" @@ -3551,7 +4066,7 @@ dependencies = [ "libc", "redox_syscall 0.5.18", "smallvec", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -3586,9 +4101,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.5" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" +checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" dependencies = [ "memchr", "ucd-trie", @@ -3596,9 +4111,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.5" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f9dbced329c441fa79d80472764b1a2c7e57123553b8519b36663a2fb234ed" +checksum = "51f72981ade67b1ca6adc26ec221be9f463f2b5839c7508998daa17c23d94d7f" dependencies = [ "pest", "pest_generator", @@ -3606,22 +4121,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.5" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb96d5051a78f44f43c8f712d8e810adb0ebf923fc9ed2655a7f66f63ba8ee5" +checksum = "dee9efd8cdb50d719a80088b76f81aec7c41ed6d522ee750178f83883d271625" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] name = "pest_meta" -version = "2.8.5" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602113b5b5e8621770cfd490cfd90b9f84ab29bd2b0e49ad83eb6d186cef2365" +checksum = "bf1d70880e76bdc13ba52eafa6239ce793d85c8e43896507e43dd8984ff05b82" dependencies = [ "pest", "sha2", @@ -3674,7 +4189,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -3746,15 +4261,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.13.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" [[package]] name = "portable-atomic-util" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" dependencies = [ "portable-atomic", ] @@ -3797,14 +4312,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -3836,7 +4351,7 @@ checksum = "fb6dc647500e84a25a85b100e76c85b8ace114c209432dc174f20aac11d4ed6c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -3867,21 +4382,21 @@ dependencies = [ "pulldown-cmark", "pulldown-cmark-to-cmark", "regex", - "syn 2.0.114", + "syn 2.0.111", "tempfile", ] [[package]] name = "prost-derive" -version = "0.14.3" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" +checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" dependencies = [ "anyhow", "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -3960,9 +4475,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.44" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -3986,7 +4501,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha", - "rand_core 0.9.5", + "rand_core 0.9.3", ] [[package]] @@ -3996,7 +4511,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.5", + "rand_core 0.9.3", ] [[package]] @@ -4005,14 +4520,14 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.17", + "getrandom 0.2.16", ] [[package]] name = "rand_core" -version = "0.9.5" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ "getrandom 0.3.4", ] @@ -4032,7 +4547,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core 0.9.5", + "rand_core 0.9.3", ] [[package]] @@ -4050,7 +4565,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" dependencies = [ - "rand_core 0.9.5", + "rand_core 0.9.3", ] [[package]] @@ -4105,9 +4620,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.7.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5" dependencies = [ "bitflags", ] @@ -4159,7 +4674,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.17", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -4167,9 +4682,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.27" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -4205,14 +4720,14 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ "bitflags", "errno", @@ -4223,9 +4738,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "log", "once_cell", @@ -4238,9 +4753,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -4250,18 +4765,18 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282" dependencies = [ "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.103.9" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "ring", "rustls-pki-types", @@ -4297,9 +4812,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.22" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" +checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" [[package]] name = "same-file" @@ -4420,20 +4935,20 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", + "ryu", "serde", "serde_core", - "zmij", ] [[package]] @@ -4444,7 +4959,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -4530,11 +5045,10 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.8" +version = "1.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" dependencies = [ - "errno", "libc", ] @@ -4562,9 +5076,9 @@ checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "sized-chunks" @@ -4578,9 +5092,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.12" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" @@ -4599,9 +5113,9 @@ checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", "windows-sys 0.60.2", @@ -4694,7 +5208,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -4737,9 +5251,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.114" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -4771,20 +5285,6 @@ dependencies = [ "yaml-rust", ] -[[package]] -name = "sysinfo" -version = "0.37.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" -dependencies = [ - "libc", - "memchr", - "ntapi", - "objc2-core-foundation", - "objc2-io-kit", - "windows", -] - [[package]] name = "tap" version = "1.0.1" @@ -4799,14 +5299,14 @@ checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b" [[package]] name = "tempfile" -version = "3.24.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.3", + "rustix 1.1.2", "windows-sys 0.61.2", ] @@ -4844,7 +5344,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" dependencies = [ - "rustix 1.1.3", + "rustix 1.1.2", "windows-sys 0.60.2", ] @@ -4861,22 +5361,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -4890,30 +5390,30 @@ dependencies = [ [[package]] name = "time" -version = "0.3.46" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde_core", + "serde", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.26" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -4931,9 +5431,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.49.0" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ "bytes", "libc", @@ -4952,7 +5452,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -4967,9 +5467,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.18" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -4979,9 +5479,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.18" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -5005,9 +5505,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.11+spec-1.1.0" +version = "0.9.10+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" +checksum = "0825052159284a1a8b4d6c0c86cbc801f2da5afd2b225fa548c72f2e74002f48" dependencies = [ "indexmap", "serde_core", @@ -5088,9 +5588,9 @@ checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tonic" -version = "0.14.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a286e33f82f8a1ee2df63f4fa35c0becf4a85a0cb03091a15fd7bf0b402dc94a" +checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ "async-trait", "base64", @@ -5118,21 +5618,21 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.14.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27aac809edf60b741e2d7db6367214d078856b8a5bff0087e94ff330fb97b6fc" +checksum = "4c40aaccc9f9eccf2cd82ebc111adc13030d23e887244bc9cfa5d1d636049de3" dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] name = "tonic-health" -version = "0.14.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dbde2c702c4be12b9b2f6f7e6c824a84a7b7be177070cada8ee575a581af359" +checksum = "2a82868bf299e0a1d2e8dce0dc33a46c02d6f045b2c1f1d6cc8dc3d0bf1812ef" dependencies = [ "prost", "tokio", @@ -5143,9 +5643,9 @@ dependencies = [ [[package]] name = "tonic-prost" -version = "0.14.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c55a2d6a14174563de34409c9f92ff981d006f56da9c6ecd40d9d4a31500b0" +checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" dependencies = [ "bytes", "prost", @@ -5154,16 +5654,16 @@ dependencies = [ [[package]] name = "tonic-prost-build" -version = "0.14.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4556786613791cfef4ed134aa670b61a85cfcacf71543ef33e8d801abae988f" +checksum = "b4a16cba4043dc3ff43fcb3f96b4c5c154c64cbd18ca8dce2ab2c6a451d058a2" dependencies = [ "prettyplease", "proc-macro2", "prost-build", "prost-types", "quote", - "syn 2.0.114", + "syn 2.0.111", "tempfile", "tonic-build", ] @@ -5195,9 +5695,9 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", @@ -5243,7 +5743,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -5293,9 +5793,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "trybuild" -version = "1.0.115" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f614c21bd3a61bad9501d75cbb7686f00386c806d7f456778432c25cf86948a" +checksum = "3e17e807bff86d2a06b52bca4276746584a78375055b6e45843925ce2802b335" dependencies = [ "dissimilar", "glob", @@ -5304,7 +5804,7 @@ dependencies = [ "serde_json", "target-triple", "termcolor", - "toml 0.9.11+spec-1.1.0", + "toml 0.9.10+spec-1.1.0", ] [[package]] @@ -5353,9 +5853,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.9.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" @@ -5428,9 +5928,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.20.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" dependencies = [ "getrandom 0.3.4", "js-sys", @@ -5495,18 +5995,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.2+wasi-0.2.9" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if", "once_cell", @@ -5517,12 +6017,11 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" dependencies = [ "cfg-if", - "futures-util", "js-sys", "once_cell", "wasm-bindgen", @@ -5531,9 +6030,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5541,22 +6040,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] @@ -5573,12 +6072,12 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.244.0" +version = "0.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +checksum = "c55db9c896d70bd9fa535ce83cd4e1f2ec3726b0edd2142079f594fc3be1cb35" dependencies = [ "leb128fmt", - "wasmparser 0.244.0", + "wasmparser 0.243.0", ] [[package]] @@ -5631,9 +6130,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.244.0" +version = "0.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +checksum = "f6d8db401b0528ec316dfbe579e6ab4152d61739cfe076706d2009127970159d" dependencies = [ "bitflags", "indexmap", @@ -5653,31 +6152,31 @@ dependencies = [ [[package]] name = "wast" -version = "244.0.0" +version = "243.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e7b9f9e23311275920e3d6b56d64137c160cf8af4f84a7283b36cfecbf4acb" +checksum = "df21d01c2d91e46cb7a221d79e58a2d210ea02020d57c092e79255cc2999ca7f" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width 0.2.0", - "wasm-encoder 0.244.0", + "wasm-encoder 0.243.0", ] [[package]] name = "wat" -version = "1.244.0" +version = "1.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbf35b87ed352f9ab6cd0732abde5a67dd6153dfd02c493e61459218b19456fa" +checksum = "226a9a91cd80a50449312fef0c75c23478fcecfcc4092bdebe1dc8e760ef521b" dependencies = [ "wast", ] [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -5714,41 +6213,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.61.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" -dependencies = [ - "windows-collections", - "windows-core 0.61.2", - "windows-future", - "windows-link 0.1.3", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", -] - -[[package]] -name = "windows-core" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", -] - [[package]] name = "windows-core" version = "0.62.2" @@ -5757,20 +6221,9 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - -[[package]] -name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", - "windows-threading", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] @@ -5781,7 +6234,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -5792,56 +6245,22 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" -[[package]] -name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", -] - [[package]] name = "windows-result" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -5850,7 +6269,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -5871,15 +6290,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" @@ -5895,7 +6305,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -5935,7 +6345,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.1", + "windows-link", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -5946,15 +6356,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link 0.1.3", -] - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -6154,7 +6555,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d31a19dae58475d019850e25b0170e94b16d382fbf6afee9c0e80fdc935e73e" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -6224,12 +6625,6 @@ dependencies = [ "wit-bindgen-rust-macro", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - [[package]] name = "wit-bindgen-core" version = "0.46.0" @@ -6251,7 +6646,7 @@ dependencies = [ "heck", "indexmap", "prettyplease", - "syn 2.0.114", + "syn 2.0.111", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -6267,7 +6662,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -6345,22 +6740,22 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "zerocopy" -version = "0.8.37" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7456cf00f0685ad319c5b1693f291a650eaf345e941d082fc4e03df8a03996ac" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.37" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1328722bbf2115db7e19d69ebcc15e795719e2d66b60827c6a69a117365e37a0" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.111", ] [[package]] @@ -6368,9 +6763,3 @@ name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" - -[[package]] -name = "zmij" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445" diff --git a/Cargo.toml b/Cargo.toml index 0c6386387..92ee1c42a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,6 +119,7 @@ syn = { version = "2.0", features = [ "extra-traits", "printing", ] } +darling = { version = "0.20", features = ["diagnostics"] } thiserror = { package = "miden-thiserror", version = "1.0" } toml = { version = "0.8", features = ["preserve_order"] } tokio = { version = "1.39.2", features = ["rt", "time", "macros", "rt-multi-thread"] } diff --git a/hir-macros/Cargo.toml b/hir-macros/Cargo.toml index 061008eb1..ea0d997ec 100644 --- a/hir-macros/Cargo.toml +++ b/hir-macros/Cargo.toml @@ -17,7 +17,7 @@ proc-macro = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -darling = { version = "0.20", features = ["diagnostics"] } +darling.workspace = true Inflector.workspace = true proc-macro2.workspace = true quote.workspace = true diff --git a/test-harness/README.md b/test-harness/README.md new file mode 100644 index 000000000..63860fcf9 --- /dev/null +++ b/test-harness/README.md @@ -0,0 +1,110 @@ +# Miden Test Harness Library + +Most users will interact with the `miden-test-harness` crate via the `#[miden_test]` attribute, which is used on functions just like rust's `#[test]` attribute; however, it's aimed at providing some Miden specific utilities and reducing the amount of boilerplate code required to write tests. Here's an example: + +```rust +#[miden_test] +fn foo() { + assert_eq!(2, 1 + 1) +} +``` + +By default, it will work just like its standard counterpart, that is, `cargo test` should work like normal, IDE's should display overlays to run that specific test, etc. + +However, one distinguishing feature of `#[miden_test]` is its ability to receive attribute arguments; which are used to set up the test's _context_. +Every attribute behaves and is configured in a similar fashion: `( = value, ... = value)`. The passed in arguments will determine the properties and behavior of the attribute. All arguments are **Optional**, meaning that if they're not passed in, a default value will be used. + +Additionally, some attributes depend on other attributes being present, _however_, the attributes can be declared in whichever order is preferred, since they will be ordered according to their precedence. +The current precedence is as follows: +- package +- chain +- faucet +- account + +There is one "special" attribute which behaves differently from the rest; which is the `help()` attribute. Having the attribute `#[miden_test(help())]` will cause the compiler to display documentation for every supported argument in `#[miden_test]`. Additionally, `help()` itself also supports the `attribute =` argument, which will only display the specified attribute's documentation. For example, `#[miden_test(help(attribute = "account"))]` will display the `account`'s attribute documentation. +The displayed documentation contains a brief explanation of every argument's functionality, its default value, whether it conflicts with another argument, etc. + + +## Attributes + +For a examples using multiple attributes, see the tests present in: `tests/integration-network/src/mockchain/basic_wallet.rs`. Additionally, unit-test style usage can be found in `tests/examples/counter/src/lib.rs`. + +### chain + +Creates a `MockChainBuilder` that simulates the Miden blockchain in tests. Only one chain is permitted per test. + +- `name`: Variable name for this chain in the generated code. Default: `"chain"`. + +```rust +#[miden_test(chain(name = "builder"))] +fn my_test() { + ... +} +``` + +### package + +Loads a compiled Miden package (`.masp` file) for use in tests. + +- `name`: Variable name for this package in the generated code. Default: `"package"`. +- `path`: Path to the Miden Rust project directory to compile. Mutually exclusive with `local`. +- `local`: Load the current crate's package (built via `cargo miden build`). Mainly intended for unit tests in Rust code targeted by midenc. Mutually exclusive with `path`. Default: `false`. + +Note: Either `path` or `local = true` must be specified. + +```rust +#[miden_test(package(name = "wallet", path = "../examples/basic-wallet"))] +fn my_test() { + ... +} +``` + +### faucet + +Creates a faucet account for issuing tokens. Requires a `chain` attribute to be present. + +- `name`: Variable name for this faucet in the generated code. Default: `"faucet"`. +- `max_supply`: Maximum token supply the faucet can issue. Default: `1_000_000_000`. +- `token_symbol`: Token symbol identifier (e.g., `"MIDEN"`, `"BTC"`). Default: `"TEST"`. +- `exists`: Whether the faucet exists on-chain at test start. Default: `true`. +- `issuance`: Initial token amount issued when faucet is created. Default: `0`. + +```rust +#[miden_test( + chain, + faucet(name = "faucet", max_supply = 1_000_000_000, token_symbol = "MIDEN"), +)] +fn my_test() { + ... +} +``` + + +### account +Creates an account and adds it to the mock chain. Requires a `chain` and a `package` attribute to be present. + +- `name`: Variable name for this account in the generated code. Default: `"account"`. +- `component`: Component used by this account. Must match a package name. Default: `"wallet"`. +- `seed`: Seed for account generation, expanded to `[seed; 32]`. Default: `1`. +- `with_basic_wallet`: Whether to include the basic wallet component. Default: `false`. + +```rust +#[miden_test( + chain(name = "builder"), + package(name = "wallet", path = "../examples/basic-wallet"), + account(name = "alice", component = "wallet", seed = 1), +)] +fn my_test() { + ... +} +``` + +## Implementation notes +Every `attribute` gets built with the passed in arguments and performs a validation, making sure that none of its invariants are broken (this varies from attribute to attribute, but it encompasses things like making sure a MockChain is present, making sure that the required package is present, verifying that no two variables share the same name, etc). +Afterwards, items are sorted according to their precedence and then their respective code gets emitted in the beginning of the test function's block. + +For more thorough implementation details see the `test-harness-macros` and `test-harness-lib` crates. + +## Future directions +- The `help` attribute could potentially be expanded upon. For instance, conflicts between fields could be marked with an internal attribute (similar to clap's `conflicts_with`'s attribute). +- Currently, attribute order is simply determined by a hardcoded list of precedence. Potentially, if the order in which they need to emit their code gets more complicated, it might be desirable to implement a dependency graph system. Although, that should probably only be tackled if needed. diff --git a/test-harness/test-harness-derive/Cargo.toml b/test-harness/test-harness-derive/Cargo.toml new file mode 100644 index 000000000..723ab409d --- /dev/null +++ b/test-harness/test-harness-derive/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "miden-test-harness-derive" +description = "Derive macros used internally." +publish = false +version.workspace = true +rust-version.workspace = true +authors.workspace = true +repository.workspace = true +categories.workspace = true +keywords.workspace = true +license.workspace = true +readme.workspace = true +edition.workspace = true + +[lib] +proc-macro = true + +[dependencies] +# Miden dependencies +miden-mast-package.workspace = true +miden-testing = "0.12.4" + +# External dependencies +quote.workspace = true +syn.workspace = true +darling.workspace = true +anyhow.workspace = true +proc-macro2.workspace = true diff --git a/test-harness/test-harness-derive/README.md b/test-harness/test-harness-derive/README.md new file mode 100644 index 000000000..9274beeca --- /dev/null +++ b/test-harness/test-harness-derive/README.md @@ -0,0 +1,3 @@ +# miden-test-harness-derive + +Crate containing internal derive macros for the `miden-test-harness`. diff --git a/test-harness/test-harness-derive/src/lib.rs b/test-harness/test-harness-derive/src/lib.rs new file mode 100644 index 000000000..abfbf225c --- /dev/null +++ b/test-harness/test-harness-derive/src/lib.rs @@ -0,0 +1,178 @@ +use quote::{ToTokens, quote}; + +/// Derive macro that generates a `help()` function for a struct. +/// +/// It is important to note that the struct which contains all the configurable +/// fields is *NOT* the one which determines what's the name of the +/// attribute. That name is derived from its corresponding +/// RecognizedAttrsBuilder enum *variant*. +/// +/// So, to sum up: +/// - The attribute name comes from [[RecognizedAttrsBuilder's variant name. +/// - Attribute fields: The variant's corresponding struct. +#[proc_macro_derive(Help)] +pub fn derive_help(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let input = syn::parse_macro_input!(input as syn::DeriveInput); + + match &input.data { + syn::Data::Struct(_) => derive_help_struct(input), + syn::Data::Enum(_) => derive_help_enum(input), + syn::Data::Union(_) => panic!("Help cannot be derived for unions"), + } +} + +/// Generates the [[RecognizedAttrsBuilder]] enum `help(filter)` function which is +/// called when the help() attribute is used. +fn derive_help_enum(input: syn::DeriveInput) -> proc_macro::TokenStream { + let enum_name = input.ident; + + let syn::Data::Enum(enum_data) = &input.data else { + unreachable!() + }; + + let mut help_elements = Vec::new(); + for variant in &enum_data.variants { + let variant_name = variant.ident.to_string(); + // Help is a "special" variant which is used to trigger the help mechanism. + if variant_name == "Help" { + continue; + } + + let syn::Fields::Unnamed(struct_field) = &variant.fields else { + let error_message = format!( + " +The Help derive macro only works on enums which have a single struct as field.\n +However, {}::{} was found to have something different. +Valid example: + Account(AccountAttrBuilder), +", + enum_name, variant_name + ); + panic!("{error_message}") + }; + + let amount_of_elements = struct_field.unnamed.len(); + if amount_of_elements != 1 { + let list_of_identifiers: String = struct_field + .unnamed + .iter() + .map(|field| field.ty.to_token_stream().to_string().clone()) + .fold(String::new(), |acc, ident| { + if acc.is_empty() { + ident + } else { + format!("{acc}, {ident}") + } + }); + + let error_message = format!( + " +The Help derive macro only works on enums which have a single struct as field.\n +However, {enum_name}::{variant_name} was found to have {amount_of_elements} elements \ + ({list_of_identifiers}). +", + ); + panic!("{error_message}") + } + + // Safety: We just checked it was only 1 + let attribute_struct = &struct_field.unnamed.first().unwrap().ty; + + let help_element = quote! { + (#attribute_struct::struct_name(), #attribute_struct::help()) + }; + + help_elements.push(help_element); + } + + let help_calls = help_elements.iter(); + + // `filter` is the name of an attribute. If the user passes in + // `#[miden_test(help(attribute = ""))]`, only documentation + // for that attribute is displayed. + let code = quote! { + impl #enum_name { + fn help(filter: Option<&str>) -> String { + [#(#help_calls),*] + .into_iter() + .filter_map(|(struct_name, struct_help)| { + if let Some(filter) = filter { + if filter == struct_name { + Some(struct_help) + } else { + None + } + } else { + // If there's no filter, we'll show every help message. + Some(struct_help) + } + }) + .fold(String::new(), |acc, s| acc + "\n" + s) + } + } + }; + + code.into() +} + +/// Generates each [[RecognizedAttrsBuilder]] inner structs `help()` function +/// which outputs the struct's documentation string. This is generated from its +/// name and its fields docstrings. +/// The documentation string follows the following format: +/// --------- +/// : +/// - : +fn derive_help_struct(input: syn::DeriveInput) -> proc_macro::TokenStream { + let struct_name = input.ident; + + // NOTE: This does mean that all the structs have to follow the following: + // () + let struct_name_lowercase = struct_name.to_string().replace("AttrBuilder", "").to_lowercase(); + + let syn::Data::Struct(data) = &input.data else { + unreachable!() + }; + + let syn::Fields::Named(fields) = &data.fields else { + panic!("Help can only be derived for structs with named fields"); + }; + + let mut field_docs = String::new(); + for field in &fields.named { + let name = field.ident.as_ref().unwrap().to_string(); + let mut doc = String::new(); + for attr in &field.attrs { + // Doc comments + if attr.path().is_ident("doc") + && let syn::Meta::NameValue(meta) = &attr.meta + && let syn::Expr::Lit(syn::ExprLit { + lit: syn::Lit::Str(s), + .. + }) = &meta.value + { + doc.push_str(s.value().trim()); + } + } + // Each field line + field_docs.push_str(format!("\t- {}: {}\n", name, doc).as_str()); + } + + let code = quote! { + impl #struct_name { + fn help() -> &'static str { + concat!( + "-------------------------------------------------------------------------------", + '\n', + #struct_name_lowercase, + '\n', + #field_docs, + ) + } + + fn struct_name() -> &'static str { + #struct_name_lowercase + } + } + }; + code.into() +} diff --git a/test-harness/test-harness-macros/Cargo.toml b/test-harness/test-harness-macros/Cargo.toml index 1b8dcd56f..52d2b09fd 100644 --- a/test-harness/test-harness-macros/Cargo.toml +++ b/test-harness/test-harness-macros/Cargo.toml @@ -19,7 +19,11 @@ proc-macro = true # Miden dependencies miden-mast-package.workspace = true miden-testing = "0.13" +miden-test-harness-derive = { path = "../test-harness-derive" } # External dependencies quote.workspace = true syn.workspace = true +darling.workspace = true +anyhow.workspace = true +proc-macro2.workspace = true diff --git a/test-harness/test-harness-macros/src/attributes/attributes.rs b/test-harness/test-harness-macros/src/attributes/attributes.rs new file mode 100644 index 000000000..9998ab830 --- /dev/null +++ b/test-harness/test-harness-macros/src/attributes/attributes.rs @@ -0,0 +1,489 @@ +use anyhow::{Result, bail}; +use darling::FromMeta; +use miden_test_harness_derive::Help; +use proc_macro2::Span; +use quote::quote; +use syn::Ident; + +/// All the recognized attributes for the `miden_test` macro. +/// Each variant* contains a struct which holds all the configurable fields. +/// It is *required* that the inner struct has the enum variant's name as its +/// prefix, followed by the "AttrsBuilder" suffix. For example: +/// - Account(AccountAttrBuilder) is valid +/// - AccountComponent(AccountAttrBuilder) is *NOT* valid +/// - Account(InnerAccountBuilder) is *NOT* valid +#[derive(Debug, Clone, FromMeta, Help)] +pub(crate) enum RecognizedAttrsBuilder { + Account(AccountAttrBuilder), + Chain(ChainAttrBuilder), + Faucet(FaucetAttrBuilder), + Package(PackageAttrBuilder), + Help { attribute: Option }, +} + +impl RecognizedAttrsBuilder { + pub(crate) fn build(self) -> RecognizedAttrs { + match self { + RecognizedAttrsBuilder::Faucet(f) => RecognizedAttrs::Faucet(f.build()), + RecognizedAttrsBuilder::Chain(c) => RecognizedAttrs::Chain(c.build()), + RecognizedAttrsBuilder::Account(a) => RecognizedAttrs::Account(a.build()), + RecognizedAttrsBuilder::Package(p) => RecognizedAttrs::Package(p.build()), + RecognizedAttrsBuilder::Help { attribute } => { + let arg = attribute.as_deref(); + // The RecognizedAttrsBuilder::help() function is generated in + // the test-harness-derive crate, inside the derive_help_enum + // function. + let help_message = RecognizedAttrsBuilder::help(arg); + // Calling "panic!" inside a proc macro triggers the compiler's + // "help: message:" mechanism. + // Thus, when a user uses: #[miden_test(help)], the following is + // displayed: + // + // --> tests/integration-network/src/mockchain/basic_wallet.rs:20:1 + // | + // 20 | #[miden_test(help)] + // | ^^^^^^^^^^^^^^^^^^^ + // | + // = help: message: + // + // + // And since the is generated from the doc + // comments of all the various structs, it should match the + // generated cargo doc html page. + panic!("{help_message}") + } + } + } +} + +/// These structs are the "built" equivalents of the `PackageAttrBuilder` variants. +/// There should be a 1 to 1 correspondence with the exception of +/// [[RecognizedAttrsBuilder::Help]]. +#[derive(Debug)] +pub(crate) enum RecognizedAttrs { + Account(Account), + Chain(MockChainBuilder), + Faucet(Faucet), + Package(Package), +} +impl RecognizedAttrs { + /// Returns the sort order for this variant. Each struct emits some code in + /// its emit() function. Some structs depend on other structs having emitted + /// their code before them. + /// The clearest example is the `Account` variants which require the + /// `Mockchain`, in order for the isntantiated account to be added into it. + fn sort_order(&self) -> u8 { + match self { + RecognizedAttrs::Package(_) => 0, + RecognizedAttrs::Chain(_) => 1, + RecognizedAttrs::Faucet(_) => 2, + RecognizedAttrs::Account(_) => 3, + } + } +} + +impl PartialEq for RecognizedAttrs { + fn eq(&self, other: &Self) -> bool { + self.sort_order() == other.sort_order() + } +} + +impl Eq for RecognizedAttrs {} + +impl PartialOrd for RecognizedAttrs { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + +impl Ord for RecognizedAttrs { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + self.sort_order().cmp(&other.sort_order()) + } +} + +impl RecognizedAttrs { + pub(crate) fn validate(&self, full_attrs: &[RecognizedAttrs]) -> Result<()> { + match self { + RecognizedAttrs::Chain(c) => c.validate(full_attrs), + RecognizedAttrs::Faucet(f) => f.validate(full_attrs), + RecognizedAttrs::Account(a) => a.validate(full_attrs), + RecognizedAttrs::Package(p) => p.validate(full_attrs), + } + } + + pub(crate) fn emit(&self, full_attrs: &[RecognizedAttrs]) -> proc_macro2::TokenStream { + match self { + RecognizedAttrs::Chain(c) => c.emit(full_attrs), + RecognizedAttrs::Faucet(f) => f.emit(full_attrs), + RecognizedAttrs::Account(a) => a.emit(full_attrs), + RecognizedAttrs::Package(p) => p.emit(full_attrs), + } + } +} + +// Misc utility functions +fn check_for_chain(full_attrs: &[RecognizedAttrs]) -> bool { + full_attrs.iter().any(|attr| matches!(attr, RecognizedAttrs::Chain(_))) +} + +// account attribute +#[derive(Debug, FromMeta, Clone, Help)] +pub(crate) struct AccountAttrBuilder { + /// Variable name for this account in generated code. Default: "account". + #[darling(default)] + name: Option, + + /// Component used by this account. Must match a package name. Default: "wallet". + #[darling(default)] + component: Option, + + /// Seed for account generation, expanded to [seed; 32]. Default: 1. + #[darling(default)] + seed: Option, + + /// Whether to include the basic wallet component. Default: false. + #[darling(default)] + with_basic_wallet: Option, +} + +impl AccountAttrBuilder { + fn build(self) -> Account { + Account { + binding: self.name.unwrap_or("account".to_string()), + component: self.component.unwrap_or("wallet".to_string()), + seed: self.seed.unwrap_or(1), + with_basic_wallet: self.with_basic_wallet.unwrap_or(false), + } + } +} + +#[derive(Debug, Clone)] +pub(crate) struct Account { + binding: String, + component: String, + seed: u8, + with_basic_wallet: bool, +} + +impl Account { + fn validate(&self, full_attrs: &[RecognizedAttrs]) -> Result<()> { + // Check for an existing chain. + let has_chain = check_for_chain(full_attrs); + if !has_chain { + bail!("account requires at least the presence of a chain") + } + + // Check that all the required components have a Package available. + { + let component_name = self.component.clone(); + match full_attrs + .iter() + .filter_map(|attr| match attr { + RecognizedAttrs::Package(p) => Some(p), + _ => None, + }) + .filter(|package| package.binding == self.component) + .count() + { + 0 => bail!( + "account needs 1 package named {0}, yet no {0} 'package' found", + component_name + ), + 1 => (), + n => { + bail!( + "account needs only 1 package named {0}, yet {n} {0} were found", + component_name + ) + } + } + } + Ok(()) + } + + fn emit(&self, full_attrs: &[RecognizedAttrs]) -> proc_macro2::TokenStream { + let binding = Ident::new(&self.binding, Span::call_site()); + let pkg_binding = Ident::new(&self.component, Span::call_site()); + let seed = self.seed; + let with_basic_wallet = self.with_basic_wallet; + + // Find chain binding + let builder_binding_name = full_attrs + .iter() + .find_map(|attr| match attr { + RecognizedAttrs::Chain(c) => Some(&c.binding), + _ => None, + }) + .expect("Couldn't find `chain`"); + let builder_binding = Ident::new(builder_binding_name, Span::call_site()); + + quote! { + let #binding = #builder_binding + .add_account_from_builder( + Auth::BasicAuth, + build_existing_basic_wallet_account_builder(#pkg_binding.clone(), #with_basic_wallet, [#seed; 32]), + AccountState::Exists, + ) + .unwrap(); + } + } +} + +// Mock Chain +#[derive(Debug, FromMeta, Clone, Help)] +pub(crate) struct ChainAttrBuilder { + /// Variable name for this chain in generated code. Default: "chain". + #[darling(default)] + name: Option, +} + +impl ChainAttrBuilder { + fn build(self) -> MockChainBuilder { + MockChainBuilder { + binding: self.name.unwrap_or("chain".to_string()), + } + } +} + +#[derive(Debug, Clone)] +pub(crate) struct MockChainBuilder { + binding: String, +} + +impl MockChainBuilder { + fn validate(&self, full_attrs: &[RecognizedAttrs]) -> Result<()> { + let chain_amount = full_attrs + .iter() + .filter(|attr| matches!(attr, RecognizedAttrs::Chain(_))) + .count(); + + if chain_amount > 1 { + panic!("Only one chain is permitted") + } + + Ok(()) + } + + fn emit(&self, _full_attrs: &[RecognizedAttrs]) -> proc_macro2::TokenStream { + let binding = Ident::new(&self.binding, Span::call_site()); + + quote! { + let mut #binding = ::miden_test_harness::reexports::miden_testing::MockChainBuilder::new(); + } + } +} + +// Faucet +#[derive(Debug, FromMeta, Clone, Help)] +pub(crate) struct FaucetAttrBuilder { + /// Variable name for this faucet in generated code. Default: "faucet". + #[darling(default)] + name: Option, + + /// Maximum token supply the faucet can issue. Default: 1_000_000_000. + #[darling(default)] + max_supply: Option, + + /// Token symbol identifier (e.g., "MIDEN", "BTC"). Default: "TEST". + #[darling(default)] + token_symbol: Option, + + /// Whether the faucet exists on-chain at test start. Default: true. + #[darling(default)] + exists: Option, + + /// Initial token amount issued when faucet is created. Default: 0. + #[darling(default)] + issuance: Option, +} + +impl FaucetAttrBuilder { + fn build(self) -> Faucet { + Faucet { + binding: self.name.unwrap_or("faucet".to_string()), + max_supply: self.max_supply.unwrap_or(1_000_000_000u64), + token_symbol: self.token_symbol.unwrap_or("TEST".to_string()), + exists: self.exists.unwrap_or(true), + issuance: self.issuance.unwrap_or(0), + } + } +} + +#[derive(Debug, Clone)] +#[allow(dead_code)] +pub(crate) struct Faucet { + binding: String, + + max_supply: u64, + token_symbol: String, + exists: bool, + issuance: u64, +} + +impl Faucet { + fn validate(&self, full_attrs: &[RecognizedAttrs]) -> Result<()> { + let has_chain = check_for_chain(full_attrs); + + if !has_chain { + bail!("faucet requires at least the presence of a chain") + } + + Ok(()) + } + + fn emit(&self, full_attrs: &[RecognizedAttrs]) -> proc_macro2::TokenStream { + let binding = Ident::new(&self.binding, Span::call_site()); + + let token_symbol = self.token_symbol.clone(); + let max_supply = self.max_supply; + + let builder_binding_name = full_attrs + .iter() + .find_map(|attr| match attr { + RecognizedAttrs::Chain(c) => Some(&c.binding), + _ => None, + }) + .expect("Couldn't find `chain`"); + + let builder_binding = Ident::new(builder_binding_name, Span::call_site()); + + quote! { + let #binding = #builder_binding + .add_existing_basic_faucet(Auth::BasicAuth, #token_symbol, #max_supply, None) + .unwrap(); + } + } +} + +// Package +#[derive(Debug, FromMeta, Clone, Help)] +pub(crate) struct PackageAttrBuilder { + /// Variable name for this package in generated code. Default: "package". + #[darling(default)] + name: Option, + + /// Relative path to the Rust package directory to compile. + /// Mutually exclusive with `local`. + #[darling(default)] + path: Option, + + /// Load the current crate's package (built via `cargo miden build`). + /// Mainly intended for unit tests in rust code targetted by midenc. + /// Mutually exclusive with `path`. Default: false. + #[darling(default)] + local: Option, +} + +impl PackageAttrBuilder { + fn build(self) -> Package { + let local = self.local.unwrap_or(false); + let path = self.path; + + // Validate mutual exclusivity + if local && path.is_some() { + panic!("package: `local` and `path` are mutually exclusive. Use one or the other."); + } + + if !local && path.is_none() { + panic!("package: either `path` or `local = true` must be specified."); + } + + Package { + binding: self.name.unwrap_or("package".to_string()), + path: path.unwrap_or_default(), + local, + } + } +} + +#[derive(Debug, Clone)] +pub(crate) struct Package { + binding: String, + path: String, + local: bool, +} + +impl Package { + fn validate(&self, full_attrs: &[RecognizedAttrs]) -> Result<()> { + // Forbid shadowing in emitted macro code. + // Even though shadowing in rust is valid; we want to avoid using it in + // the generated code; since the user can't see the emitted variables. + { + let already_present_binding = full_attrs + .iter() + .filter_map(|attr| match attr { + RecognizedAttrs::Package(p) => Some(p), + _ => None, + }) + .filter(|package| package.binding == self.binding) + .count(); + + if already_present_binding > 1 { + bail!( + "Only one {} variable can exist, yet {} were found", + self.binding, + already_present_binding + ); + } + } + + // Only one local package is allowed at a time. + { + let local_package_count = full_attrs + .iter() + .filter_map(|attr| match attr { + RecognizedAttrs::Package(p) => Some(p), + _ => None, + }) + .filter(|package| package.local) + .map(|package| package.binding.clone()); + + let binding_count = local_package_count.clone().count(); + if binding_count > 1 { + let bindings = local_package_count.fold(String::new(), |acc, binding| { + if acc.is_empty() { + binding + } else { + acc + ", " + binding.as_str() + } + }); + + bail!( + "Only one package with `local = true` can exist, yet {} were found: {}", + binding_count, + bindings + ); + } + } + + Ok(()) + } + + fn emit(&self, _full_attrs: &[RecognizedAttrs]) -> proc_macro2::TokenStream { + let binding = Ident::new(&self.binding, Span::call_site()); + + if self.local { + quote! { + // We currently rely on rustc's standard libtest function + // registration mechanism. This is because IDEs, like VSCode, + // rely on rust-analyzer's #[test] detection attribute to + // display the "Run Test" icon. As far as I've seen, using + // #[test] on a function generates the *default* registration + // code, even when a custom test harness is being used. This + // restricts what we can do as "setup code", since we can not + // control the order in which tests are executed. For more + // context see: + // https://github.com/0xMiden/compiler/pull/817#issuecomment-3762180898 + let bytes = crate::PACKAGE_BYTES.get_or_init(|| crate::build_package()); + + let #binding = <::miden_objects::vm::Package as ::miden_objects::utils::Deserializable>::read_from_bytes(&bytes).unwrap(); + } + } else { + let path = &self.path; + quote! { + let #binding = compile_rust_package(#path, true); + } + } + } +} diff --git a/test-harness/test-harness-macros/src/attributes/mod.rs b/test-harness/test-harness-macros/src/attributes/mod.rs new file mode 100644 index 000000000..595b33e13 --- /dev/null +++ b/test-harness/test-harness-macros/src/attributes/mod.rs @@ -0,0 +1,4 @@ +#[allow(clippy::module_inception)] +pub mod attributes; + +pub(crate) use attributes::*; diff --git a/test-harness/test-harness-macros/src/lib.rs b/test-harness/test-harness-macros/src/lib.rs index 0ddbdb67e..a8f6027c6 100644 --- a/test-harness/test-harness-macros/src/lib.rs +++ b/test-harness/test-harness-macros/src/lib.rs @@ -1,154 +1,85 @@ -use miden_mast_package::Package; -use miden_testing::MockChainBuilder; -use proc_macro::TokenStream; +use darling::{FromMeta, ast::NestedMeta}; use quote::quote; use syn::{ItemFn, parse_macro_input}; -// Returns the identifier for a specific FnArg -fn get_binding_and_type(fn_arg: &syn::FnArg) -> Option<(&syn::PatIdent, &syn::PathSegment)> { - let syn::FnArg::Typed(arg) = fn_arg else { - return None; - }; - - let syn::Type::Path(syn::TypePath { path, .. }) = arg.ty.as_ref() else { - return None; - }; - - // The last token in the segments vector is the actual type, the rest - // are just path specifiers. - let path_segment = path.segments.last()?; - - let syn::Pat::Ident(binding) = arg.pat.as_ref() else { - return None; - }; - - Some((binding, path_segment)) -} - -/// Function that parses and consumes types T from `function`. `max_args` -/// represents the maximum amount of arguments of type T that `function` may -/// have. -fn process_arguments( - function: &mut syn::ItemFn, - max_args: usize, -) -> Result, String> { - // "T"'s name as used in the argument list. We skip the whole path - let struct_name = std::any::type_name::() - .split("::") - .last() - .unwrap_or_else(|| panic!("Failed to split the {}'s", ::core::any::type_name::())); - - let mut found_vars = Vec::new(); - - let fn_args = &mut function.sig.inputs; - - *fn_args = fn_args - .iter() - .filter(|&fn_arg| { - let Some((binding, var_type)) = get_binding_and_type(fn_arg) else { - return true; - }; - - if var_type.ident != struct_name { - return true; - } +mod attributes; - found_vars.push(binding.ident.clone()); - false - }) - .cloned() - .collect(); - - if found_vars.len() > max_args { - let identifiers = found_vars - .iter() - .map(|ident| ident.to_string()) - .collect::>() - .join(", "); - - let err = format!( - " -Detected that all of the following variables are `{struct_name}`s: {identifiers} - -#[miden_test] only supports having {max_args} `{struct_name}` in its argument list." - ); - return Err(err); - } - - Ok(found_vars) -} - -/// Parse the arguments of a `#[miden-test]` function and check for `Package`s. -/// -/// If the function has a single `Package` as argument, then it is removed from -/// the argument list and the boilerplate code to load the generated `Package` -/// into a variable will be generated. The name of the variable will match the -/// one used as argument. +/// Used to mark a function as a test that runs under miden's test-harness. +/// To see all the recognized attributes, mark a function with the `help` +/// attribute and then compile said function: +/// Like so: /// -/// This will "consume" all the tokens that are of type `Package`. -fn load_package(function: &mut syn::ItemFn) { - let found_packages_vars = - process_arguments::(function, 1).unwrap_or_else(|err| panic!("{err}")); - - let Some(package_binding_name) = found_packages_vars.first() else { - // If there are no variables with `Package` as its type, then don't load - // the `Package`. - return; - }; - - let load_package: Vec = syn::parse_quote! { - // Since we rely on the standard libtest function registration mechanism - // We currently rely on rustc's standard libtest function registration - // mechanism. This is because IDEs, like VSCode, rely on rust-analyzer's - // #[test] detection attribute to display the "Run Test" icon. - // As far as I've seen, using #[test] on a function generates the - // *default* registration code, even when a custom test harness is being - // used. This restricts what we can do as "setup code", since we can not - // control the order in which tests are executed. - let bytes = crate::PACKAGE_BYTES.get_or_init(|| crate::build_package()); +/// #[miden_test(help())] +/// fn function() { +/// } +#[proc_macro_attribute] +pub fn miden_test( + attr: proc_macro::TokenStream, + item: proc_macro::TokenStream, +) -> proc_macro::TokenStream { + let mut input_fn = parse_macro_input!(item as ItemFn); - let #package_binding_name = - <::miden_protocol::vm::Package as ::miden_protocol::utils::serde::Deserializable>::read_from_bytes(&bytes).unwrap(); + let attr_args = match NestedMeta::parse_meta_list(attr.into()) { + Ok(v) => v, + Err(e) => { + return proc_macro::TokenStream::from(darling::Error::from(e).write_errors()); + } }; - // We add the required lines to load the generated Package right at the - // beginning of the function. - for (i, package) in load_package.iter().enumerate() { - function.block.as_mut().stmts.insert(i, package.clone()); + let mut unrecognized_attrs = Vec::new(); + let mut recognized_attrs = Vec::new(); + for attr in attr_args { + if let Ok(attr_typed) = + attributes::RecognizedAttrsBuilder::from_list([attr.clone()].as_ref()) + { + recognized_attrs.push(attr_typed); + } else { + unrecognized_attrs.push(attr); + } } -} - -fn load_mock_chain(function: &mut syn::ItemFn) { - let found_mock_chain = - process_arguments::(function, 1).unwrap_or_else(|err| panic!("{err}")); - let Some(mock_chain_builder_name) = found_mock_chain.first() else { - // If there are no variables with `MockChainBuilder` as its type, then don't load - // the `MockChainBuilder`. - return; - }; + // Build + let mut attrs: Vec<_> = recognized_attrs.into_iter().map(|attr| attr.build()).collect(); - let load_mock_chain_builder: Vec = syn::parse_quote! { - let mut #mock_chain_builder_name = ::miden_test_harness::reexports::miden_testing::MockChainBuilder::new(); - }; - - // We add the required lines to load the generated MockChainBuilder right at the - // beginning of the function. - for (i, package) in load_mock_chain_builder.iter().enumerate() { - function.block.as_mut().stmts.insert(i, package.clone()); + // Check for errors in validation. + { + let errors: Vec<_> = attrs + .iter() + .map(|attr| attr.validate(&attrs)) + .filter(|validation| validation.is_err()) + .collect(); + + if !errors.is_empty() { + let error_message = errors + .iter() + .map(|error| error.as_ref().unwrap_err()) + .fold(String::new(), |acc, err| format!("{acc} \n {}", err)); + panic!("{error_message}") + } } -} -/// Used to mark a function as a test that runs under miden's test-harness. -#[proc_macro_attribute] -pub fn miden_test( - _attr: proc_macro::TokenStream, - item: proc_macro::TokenStream, -) -> proc_macro::TokenStream { - let mut input_fn = parse_macro_input!(item as ItemFn); + // Order attributes so that the emitted code in order to fulfill emit() + // dependencies. + attrs.sort(); - load_package(&mut input_fn); - load_mock_chain(&mut input_fn); + // Emit code + { + let emitted: Vec = + attrs.iter().map(|attr| attr.emit(&attrs)).collect(); + + for (i, tokens) in emitted.into_iter().enumerate() { + // Since the emit() function can potentially return multiple + // statements, we wrap "tokens" in a syn::Block to accommodate + // multiple syn::Statements. + let wrapped = quote! { { #tokens } }; + let block: syn::Block = + syn::parse2(wrapped).expect("Failed to parse emitted tokens as block"); + + for stmt in block.stmts.into_iter().rev() { + input_fn.block.as_mut().stmts.insert(i, stmt); + } + } + } let fn_ident = input_fn.sig.ident.clone(); let fn_name = fn_ident.clone().span().source_text().unwrap_or(String::from("test_function")); @@ -187,7 +118,7 @@ pub fn miden_test( }; - TokenStream::from(function) + proc_macro::TokenStream::from(function) } /// Used to wrap the `mod tests` declaration. diff --git a/tests/examples/counter/Cargo.lock b/tests/examples/counter/Cargo.lock index 2b0b92c5f..903228127 100644 --- a/tests/examples/counter/Cargo.lock +++ b/tests/examples/counter/Cargo.lock @@ -1882,12 +1882,29 @@ dependencies = [ "miden-testing", ] +[[package]] +name = "miden-test-harness-derive" +version = "0.6.0" +dependencies = [ + "anyhow", + "darling", + "miden-mast-package", + "miden-testing", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "miden-test-harness-macros" version = "0.6.0" dependencies = [ + "anyhow", + "darling", "miden-mast-package", + "miden-test-harness-derive", "miden-testing", + "proc-macro2", "quote", "syn 2.0.114", ] diff --git a/tests/examples/counter/src/lib.rs b/tests/examples/counter/src/lib.rs index 85ae7719a..103a5373e 100644 --- a/tests/examples/counter/src/lib.rs +++ b/tests/examples/counter/src/lib.rs @@ -11,7 +11,7 @@ use miden_test_harness::miden_test_suite; #[cfg(target_family = "wasm")] mod component { - use miden::{Felt, StorageMap, StorageMapAccess, Word, component, felt}; + use miden::{component, felt, Felt, StorageMap, StorageMapAccess, Word}; /// Main contract structure for the counter example. #[component] @@ -39,27 +39,26 @@ mod component { } } } - #[miden_test_suite] mod tests { use miden::Felt; use miden_protocol::account::{ - AccountBuilder, AccountComponent, auth::AuthSecretKey, component::InitStorageData, + auth::AuthSecretKey, component::InitStorageData, AccountBuilder, AccountComponent, }; use miden_standards::account::auth::AuthFalcon512Rpo; - // This tests loads the generated package in the `foo` variable and is then + // This tests loads the generated package in the `_bar` variable and is then // printed. - #[miden_test] + #[miden_test(package(local = true, name = "_bar"))] #[should_panic] - fn bar(_bar: Package) { + fn bar() { // To see what the generated Package looks like, uncomment this line: - std::dbg!(&_bar); + // std::dbg!(&_bar); assert_eq!(1, 1 + 1); } - // This test will fail at compile time because it is only legal to have a - // single package as an argument. The following error message is displayed: + // This test will fail at compile time because it is not permitted to have a + // more than one local package. The following error message is displayed: // // error: custom attribute panicked // --> src/lib.rs:55:5 @@ -71,9 +70,12 @@ mod tests { // Detected that all of the following variables are `Package`s: foo, bar // // #[miden_test] only supports having a single `Package` in its argument list. - // Uncomment to see the failure! - // #[miden_test] - // fn bing(foo: Package, bar: Package) { + // Uncomment to see the failure. + // #[miden_test( + // package(local = true, name = "foo"), + // package(local = true, name = "bar") + // )] + // fn bing() { // std::dbg!(&foo); // assert_eq!(1, 1 + 1); // } @@ -86,18 +88,18 @@ mod tests { assert_eq!(2, 1 + 1) } - #[miden_test] - fn foo(chain: MockChainBuilder) { + #[miden_test(chain)] + fn foo() { assert_eq!(2, 1 + 1) } // This function instantiates a `MockChain` with an `Account` with the // `AccountComponent` generated from the rust code from this file.. - #[miden_test] - fn load_generated_account(account: Package, mock: MockChainBuilder) { + #[miden_test(package(local = true, name = "pkg"), chain(name = "mock"))] + fn load_generated_account() { let init_storage_data = InitStorageData::default(); let account_component = - AccountComponent::from_package(&account, &init_storage_data).unwrap(); + AccountComponent::from_package_with_init_data(&pkg, &init_storage_data).unwrap(); let (_key_pair, auth_component) = { let key_pair = AuthSecretKey::new_falcon512_rpo(); diff --git a/tests/integration-network/Cargo.toml b/tests/integration-network/Cargo.toml index 48d85718f..3f43dcd42 100644 --- a/tests/integration-network/Cargo.toml +++ b/tests/integration-network/Cargo.toml @@ -21,6 +21,7 @@ miden-mast-package.workspace = true midenc-frontend-wasm.workspace = true rand = "0.9" tokio.workspace = true +miden-test-harness.workspace = true # For accessing the test builder from the main integration tests miden-integration-tests = { path = "../integration" } diff --git a/tests/integration-network/src/mockchain/basic_wallet.rs b/tests/integration-network/src/mockchain/basic_wallet.rs index b79c9b9e1..4d0410cac 100644 --- a/tests/integration-network/src/mockchain/basic_wallet.rs +++ b/tests/integration-network/src/mockchain/basic_wallet.rs @@ -4,10 +4,11 @@ use miden_client::{ asset::FungibleAsset, crypto::RpoRandomCoin, note::NoteAssets, - testing::{AccountState, Auth, MockChain}, + testing::{AccountState, Auth}, transaction::OutputNote, }; use miden_core::Felt; +use miden_test_harness::miden_test; use super::helpers::{ NoteCreationConfig, assert_account_has_fungible_asset, build_asset_transfer_tx, @@ -16,39 +17,31 @@ use super::helpers::{ }; /// Tests the basic-wallet contract deployment and p2id note consumption workflow on a mock chain. -#[test] +#[miden_test( + // Uncomment this line so see the documentation. Compiling the projec will + // display the available documentationa. + // help(), + // You can also see the documentation for a specific attribute. + // help(attribute = "package"), + chain(name = "builder_from_macro"), + faucet(name = "faucet", max_supply = 1_000_000_000), + package(name = "wallet", path = "../../examples/basic-wallet"), + package(name = "note_package", path = "../../examples/p2id-note"), + package( + name = "tx_script_package", + path = "../../examples/basic-wallet-tx-script" + ), + account(name = "alice_account", component = "wallet", seed = 1), + account(name = "bob_account", component = "wallet", seed = 2) +)] pub fn test_basic_wallet_p2id() { - // Compile the contracts first (before creating any runtime) - let wallet_package = compile_rust_package("../../examples/basic-wallet", true); - let note_package = compile_rust_package("../../examples/p2id-note", true); - let tx_script_package = compile_rust_package("../../examples/basic-wallet-tx-script", true); - - let mut builder = MockChain::builder(); - let max_supply = 1_000_000_000u64; - let faucet_account = builder - .add_existing_basic_faucet(Auth::BasicAuth, "TEST", max_supply, None) - .unwrap(); - let faucet_id = faucet_account.id(); + let faucet_id = faucet.id(); - let alice_account = builder - .add_account_from_builder( - Auth::BasicAuth, - build_existing_basic_wallet_account_builder(wallet_package.clone(), false, [1_u8; 32]), - AccountState::Exists, - ) - .unwrap(); let alice_id = alice_account.id(); - let bob_account = builder - .add_account_from_builder( - Auth::BasicAuth, - build_existing_basic_wallet_account_builder(wallet_package, false, [2_u8; 32]), - AccountState::Exists, - ) - .unwrap(); let bob_id = bob_account.id(); - let mut chain = builder.build().unwrap(); + let mut chain = builder_from_macro.build().unwrap(); chain.prove_next_block().unwrap(); chain.prove_next_block().unwrap(); @@ -121,36 +114,23 @@ pub fn test_basic_wallet_p2id() { /// - Create fungible faucet and mint tokens to Alice /// - Alice creates a p2ide note for Bob (with timelock=0, reclaim=0) /// - Bob consumes the p2ide note and receives the assets -#[test] +#[miden_test( + chain(name = "builder"), + faucet(name = "faucet_account", max_supply = 1_000_000_000), + package(name = "wallet_package", path = "../../examples/basic-wallet"), + package(name = "p2id_note_package", path = "../../examples/p2id-note"), + package(name = "p2ide_note_package", path = "../../examples/p2ide-note"), + account( + name = "alice_account", + component = "wallet_package", + seed = 3, + with_basic_wallet = true + ), + account(name = "bob_account", component = "wallet_package", seed = 4) +)] pub fn test_basic_wallet_p2ide() { - // Compile the contracts first (before creating any runtime) - let wallet_package = compile_rust_package("../../examples/basic-wallet", true); - let p2id_note_package = compile_rust_package("../../examples/p2id-note", true); - let p2ide_note_package = compile_rust_package("../../examples/p2ide-note", true); - - let mut builder = MockChain::builder(); - let max_supply = 1_000_000_000u64; - let faucet_account = builder - .add_existing_basic_faucet(Auth::BasicAuth, "TEST", max_supply, None) - .unwrap(); let faucet_id = faucet_account.id(); - - let alice_account = builder - .add_account_from_builder( - Auth::BasicAuth, - build_existing_basic_wallet_account_builder(wallet_package.clone(), true, [3_u8; 32]), - AccountState::Exists, - ) - .unwrap(); let alice_id = alice_account.id(); - - let bob_account = builder - .add_account_from_builder( - Auth::BasicAuth, - build_existing_basic_wallet_account_builder(wallet_package, false, [4_u8; 32]), - AccountState::Exists, - ) - .unwrap(); let bob_id = bob_account.id(); let mut chain = builder.build().unwrap(); @@ -243,36 +223,23 @@ pub fn test_basic_wallet_p2ide() { /// - Alice creates a p2ide note intended for Bob (with reclaim enabled) /// - Alice reclaims the note herself (exercises the reclaim branch) /// - Verify Alice has her original balance back -#[test] +#[miden_test( + chain(name = "builder"), + faucet(name = "faucet_account", max_supply = 1_000_000_000), + package(name = "wallet_package", path = "../../examples/basic-wallet"), + package(name = "p2id_note_package", path = "../../examples/p2id-note"), + package(name = "p2ide_note_package", path = "../../examples/p2ide-note"), + account( + name = "alice_account", + component = "wallet_package", + seed = 5, + with_basic_wallet = true + ), + account(name = "bob_account", component = "wallet_package", seed = 6) +)] pub fn test_basic_wallet_p2ide_reclaim() { - // Compile the contracts first (before creating any runtime) - let wallet_package = compile_rust_package("../../examples/basic-wallet", true); - let p2id_note_package = compile_rust_package("../../examples/p2id-note", true); - let p2ide_note_package = compile_rust_package("../../examples/p2ide-note", true); - - let mut builder = MockChain::builder(); - let max_supply = 1_000_000_000u64; - let faucet_account = builder - .add_existing_basic_faucet(Auth::BasicAuth, "TEST", max_supply, None) - .unwrap(); let faucet_id = faucet_account.id(); - - let alice_account = builder - .add_account_from_builder( - Auth::BasicAuth, - build_existing_basic_wallet_account_builder(wallet_package.clone(), true, [5_u8; 32]), - AccountState::Exists, - ) - .unwrap(); let alice_id = alice_account.id(); - - let bob_account = builder - .add_account_from_builder( - Auth::BasicAuth, - build_existing_basic_wallet_account_builder(wallet_package, false, [6_u8; 32]), - AccountState::Exists, - ) - .unwrap(); let bob_id = bob_account.id(); let mut chain = builder.build().unwrap(); diff --git a/tests/integration-network/src/mockchain/counter_contract_rust_auth.rs b/tests/integration-network/src/mockchain/counter_contract_rust_auth.rs index 90dee74cd..3a8fcde13 100644 --- a/tests/integration-network/src/mockchain/counter_contract_rust_auth.rs +++ b/tests/integration-network/src/mockchain/counter_contract_rust_auth.rs @@ -5,10 +5,10 @@ //! contract account that uses the Rust-compiled auth component. use miden_client::{ - auth::BasicAuthenticator, crypto::RpoRandomCoin, note::NoteTag, testing::MockChain, - transaction::OutputNote, + auth::BasicAuthenticator, crypto::RpoRandomCoin, note::NoteTag, transaction::OutputNote, }; use miden_protocol::account::StorageSlotName; +use miden_test_harness::miden_test; use super::helpers::{ NoteCreationConfig, assert_counter_storage, block_on, build_counter_account_with_rust_rpo_auth, @@ -18,18 +18,20 @@ use super::helpers::{ /// Verify that another client (without the RPO-Falcon512 key) cannot create notes for /// the counter account which uses the Rust-compiled RPO-Falcon512 authentication component. #[ignore = "until https://github.com/0xMiden/compiler/issues/904 is fixed"] -#[test] +#[miden_test( + chain(name = "builder"), + package(name = "contract_package", path = "../../examples/counter-contract"), + package(name = "note_package", path = "../../examples/counter-note"), + package( + name = "rpo_auth_package", + path = "../../examples/auth-component-rpo-falcon512" + ) +)] pub fn test_counter_contract_rust_auth_blocks_unauthorized_note_creation() { - let contract_package = compile_rust_package("../../examples/counter-contract", true); - let note_package = compile_rust_package("../../examples/counter-note", true); - let rpo_auth_package = - compile_rust_package("../../examples/auth-component-rpo-falcon512", true); - let (counter_account, secret_key) = build_counter_account_with_rust_rpo_auth(contract_package, rpo_auth_package, [0_u8; 32]); let counter_account_id = counter_account.id(); - let mut builder = MockChain::builder(); builder .add_account(counter_account) .expect("failed to add counter account to mock chain builder");