diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index bbd1d694..f8ab0c3a 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -40,5 +40,4 @@ jobs: uses: mozilla-actions/sccache-action@v0.0.3 - name: Run Metal MSM tests for Shaders run: | - cd mopro-msm - cargo test msm::metal_msm::tests + MSM_COMPILE_ALL_SHADERS=1 cargo test --release metal_msm::tests diff --git a/Cargo.toml b/Cargo.toml index de2fa550..e3ccf3a0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,4 @@ [workspace] members = ["mopro-msm"] resolver = "2" -exclude = ["gpu-acceleration-app"] \ No newline at end of file +exclude = ["example-app"] \ No newline at end of file diff --git a/example-app/.gitignore b/example-app/.gitignore new file mode 100644 index 00000000..8647666a --- /dev/null +++ b/example-app/.gitignore @@ -0,0 +1,2 @@ +target/ +build/ \ No newline at end of file diff --git a/example-app/Cargo.lock b/example-app/Cargo.lock new file mode 100644 index 00000000..74f318ac --- /dev/null +++ b/example-app/Cargo.lock @@ -0,0 +1,2694 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "ark-bls12-381" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec 0.4.1", + "ark-ff 0.4.1", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-crypto-primitives" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3a13b34da09176a8baba701233fdffbaa7c1b1192ce031a3da4e55ce1f1a56" +dependencies = [ + "ark-ec 0.4.1", + "ark-ff 0.4.1", + "ark-relations 0.4.0", + "ark-serialize 0.4.1", + "ark-snark 0.4.0", + "ark-std 0.4.0", + "blake2", + "derivative", + "digest", + "rayon", + "sha2", +] + +[[package]] +name = "ark-crypto-primitives" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" +dependencies = [ + "ahash", + "ark-crypto-primitives-macros", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-snark 0.5.1", + "ark-std 0.5.0", + "blake2", + "derivative", + "digest", + "fnv", + "merlin", + "rayon", + "sha2", +] + +[[package]] +name = "ark-crypto-primitives-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "ark-ec" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c60370a92f8e1a5f053cad73a862e1b99bc642333cd676fa11c0c39f80f4ac2" +dependencies = [ + "ark-ff 0.4.1", + "ark-poly 0.4.1", + "ark-serialize 0.4.1", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.3", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c2d42532524bee1da5a4f6f733eb4907301baa480829557adcff5dfaeee1d9a" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.1", + "ark-std 0.4.0", + "derivative", + "digest", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rayon", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.101", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "ark-groth16" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20ceafa83848c3e390f1cbf124bc3193b3e639b3f02009e0e290809a501b95fc" +dependencies = [ + "ark-crypto-primitives 0.4.0", + "ark-ec 0.4.1", + "ark-ff 0.4.1", + "ark-poly 0.4.1", + "ark-relations 0.4.0", + "ark-serialize 0.4.1", + "ark-std 0.4.0", + "rayon", +] + +[[package]] +name = "ark-groth16" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" +dependencies = [ + "ark-crypto-primitives 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "rayon", +] + +[[package]] +name = "ark-poly" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6ec811462cabe265cfe1b102fcfe3df79d7d2929c2425673648ee9abfd0272" +dependencies = [ + "ark-ff 0.4.1", + "ark-serialize 0.4.1", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "rayon", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.3", + "rayon", +] + +[[package]] +name = "ark-relations" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00796b6efc05a3f48225e59cb6a2cda78881e7c390872d5786aaf112f31fb4f0" +dependencies = [ + "ark-ff 0.4.1", + "ark-std 0.4.0", + "tracing", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "ark-relations" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff 0.5.0", + "ark-std 0.5.0", + "tracing", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "ark-serialize" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e735959bc173ea4baf13327b19c22d452b8e9e8e8f7b7fc34e6bf0e316c33e" +dependencies = [ + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest", + "num-bigint", + "rayon", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "ark-snark" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84d3cc6833a335bb8a600241889ead68ee89a3cf8448081fb7694c0fe503da63" +dependencies = [ + "ark-ff 0.4.1", + "ark-relations 0.4.0", + "ark-serialize 0.4.1", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-snark" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" +dependencies = [ + "ark-ff 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", + "rayon", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand", + "rayon", +] + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "basic-toml" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 1.0.39", +] + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cc" +version = "1.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "circom-prover" +version = "0.1.1" +source = "git+https://github.com/zkmopro/mopro.git#ee41c0b82f02c203b857fc3a5a38b14f6999cfe1" +dependencies = [ + "anyhow", + "ark-bls12-381", + "ark-bn254 0.5.0", + "ark-crypto-primitives 0.5.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-groth16 0.5.0", + "ark-poly 0.5.0", + "ark-relations 0.5.1", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "byteorder", + "hex-literal", + "num", + "num-bigint", + "num-traits", + "rand", + "rayon", + "rust-witness", + "serde_json", + "uuid", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "bitflags 1.3.2", + "textwrap 0.11.0", + "unicode-width", +] + +[[package]] +name = "color-eyre" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e1761c0e16f8883bbbb8ce5990867f4f06bf11a0253da6495a04ce4b6ef0ec" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-spantrace" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ddd8d5bfda1e11a501d0a7303f3bfed9aa632ebdb859be40d0fd70478ed70d5" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "criterion" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" +dependencies = [ + "atty", + "cast", + "clap", + "criterion-plot", + "csv", + "itertools 0.10.5", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_cbor", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" +dependencies = [ + "cast", + "itertools 0.10.5", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "csv" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +dependencies = [ + "memchr", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "enumset" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11a6b7c3d347de0a9f7bfd2f853be43fe32fa6fac30c70f6d6d67a1e936b87ee" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6da3ea9e1d1a3b1593e15781f930120e72aa7501610b2f82e5b6739c72e8eac5" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "example-app" +version = "0.1.0" +dependencies = [ + "ark-bn254 0.4.0", + "circom-prover", + "mopro-ffi", + "mopro-msm", + "mopro-wasm", + "num-bigint", + "rust-witness", + "thiserror 2.0.12", + "uniffi", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "goblin" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "half" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +dependencies = [ + "allocator-api2", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown 0.15.3", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.172" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core", + "zeroize", +] + +[[package]] +name = "metal" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +dependencies = [ + "bitflags 2.9.1", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minicov" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27fe9f1cc3c22e1687f9446c2083c4c5fc7f0bcf1c7a86bdbded14985895b4b" +dependencies = [ + "cc", + "walkdir", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +dependencies = [ + "adler2", +] + +[[package]] +name = "mopro-ffi" +version = "0.2.0" +source = "git+https://github.com/zkmopro/mopro.git#ee41c0b82f02c203b857fc3a5a38b14f6999cfe1" +dependencies = [ + "anyhow", + "camino", + "circom-prover", + "color-eyre", + "num-bigint", + "rust-witness", + "serde", + "serde_json", + "thiserror 2.0.12", + "toml 0.8.22", + "uniffi", + "uuid", +] + +[[package]] +name = "mopro-msm" +version = "0.1.0" +dependencies = [ + "ark-bn254 0.4.0", + "ark-crypto-primitives 0.4.0", + "ark-ec 0.4.1", + "ark-ff 0.4.1", + "ark-groth16 0.4.0", + "ark-relations 0.4.0", + "ark-serialize 0.4.1", + "ark-std 0.4.0", + "criterion", + "enumset", + "instant", + "itertools 0.13.0", + "metal", + "num-bigint", + "objc", + "once_cell", + "proptest", + "rand", + "rayon", + "serde", + "serde_derive", + "serde_json", + "thiserror 1.0.39", + "toml 0.8.22", +] + +[[package]] +name = "mopro-wasm" +version = "0.1.0" +source = "git+https://github.com/zkmopro/mopro.git#ee41c0b82f02c203b857fc3a5a38b14f6999cfe1" +dependencies = [ + "console_error_panic_hook", + "getrandom 0.2.16", + "rand", + "serde-wasm-bindgen", + "wasm-bindgen", + "wasm-bindgen-console-logger", + "wasm-bindgen-futures", + "wasm-bindgen-rayon", + "wasm-bindgen-test", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", + "rand", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "oorandom" +version = "11.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" + +[[package]] +name = "owo-colors" +version = "4.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26995317201fa17f3656c36716aed4a7c81743a9634ac4c99c0eeda495db0cec" + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.9.1", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", + "wasm_sync", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", + "wasm_sync", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rinja" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dc4940d00595430b3d7d5a01f6222b5e5b51395d1120bdb28d854bb8abb17a5" +dependencies = [ + "itoa", + "rinja_derive", +] + +[[package]] +name = "rinja_derive" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d9ed0146aef6e2825f1b1515f074510549efba38d71f4554eec32eb36ba18b" +dependencies = [ + "basic-toml", + "memchr", + "mime", + "mime_guess", + "proc-macro2", + "quote", + "rinja_parser", + "rustc-hash", + "serde", + "syn 2.0.101", +] + +[[package]] +name = "rinja_parser" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f9a866e2e00a7a1fb27e46e9e324a6f7c0e7edc4543cae1d38f4e4a100c610" +dependencies = [ + "memchr", + "nom", + "serde", +] + +[[package]] +name = "rust-witness" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2faccec099f52e68adc48f7b5175291dea05f2b26434e7b508dd1c429368b95f" +dependencies = [ + "cc", + "fnv", + "num-bigint", + "num-traits", + "paste", + "walkdir", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scroll" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "textwrap" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" +dependencies = [ + "smawk", +] + +[[package]] +name = "thiserror" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" +dependencies = [ + "thiserror-impl 1.0.39", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-error" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" +dependencies = [ + "tracing", + "tracing-subscriber 0.3.19", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" +dependencies = [ + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "uniffi" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba62a57e90f9baed5ad02a71a0870180fa1cc35499093b2d21be2edfb68ec0f7" +dependencies = [ + "anyhow", + "cargo_metadata", + "uniffi_bindgen", + "uniffi_build", + "uniffi_core", + "uniffi_macros", +] + +[[package]] +name = "uniffi_bindgen" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2242f35214f1e0e3b47c495d340c69f649f9a9ece3a943a29e275686cc884533" +dependencies = [ + "anyhow", + "camino", + "cargo_metadata", + "fs-err", + "glob", + "goblin", + "heck", + "once_cell", + "paste", + "rinja", + "serde", + "textwrap 0.16.2", + "toml 0.5.11", + "uniffi_meta", + "uniffi_udl", +] + +[[package]] +name = "uniffi_build" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c887a6c9a2857d8dc2ab0c8d578e8aa4978145b4fd65ed44296341e89aebc3cc" +dependencies = [ + "anyhow", + "camino", + "uniffi_bindgen", +] + +[[package]] +name = "uniffi_core" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cad9fbdeb7ae4daf8d0f7704a3b638c37018eb16bb701e30fa17a2dd3e2d39c1" +dependencies = [ + "anyhow", + "bytes", + "once_cell", + "paste", + "static_assertions", +] + +[[package]] +name = "uniffi_internal_macros" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83b547d69d699e52f2129fde4b57ae0d00b5216e59ed5b56097c95c86ba06095" +dependencies = [ + "anyhow", + "indexmap", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "uniffi_macros" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78dd5f8eefba5898b901086f5e7916da67b9a5286a01cc44e910cd75fa37c630" +dependencies = [ + "camino", + "fs-err", + "once_cell", + "proc-macro2", + "quote", + "serde", + "syn 2.0.101", + "toml 0.5.11", + "uniffi_meta", +] + +[[package]] +name = "uniffi_meta" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5965b1d4ffacef1eaa72fef9c00d2491641e87ad910f6c5859b9c503ddb16a" +dependencies = [ + "anyhow", + "siphasher", + "uniffi_internal_macros", +] + +[[package]] +name = "uniffi_udl" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279b82bac9a382c796a0d210bb8354a0b813499b28aa1de046c85d78ca389805" +dependencies = [ + "anyhow", + "textwrap 0.16.2", + "uniffi_meta", + "weedle2", +] + +[[package]] +name = "uuid" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" +dependencies = [ + "getrandom 0.3.3", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.101", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-console-logger" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7530a275e7faf7b5b83aabdf78244fb8d9a68a2ec4b26935a05ecc0c9b0185ed" +dependencies = [ + "log", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-rayon" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a16c60a56c81e4dc3b9c43d76ba5633e1c0278211d59a9cb07d61b6cd1c6583" +dependencies = [ + "crossbeam-channel", + "js-sys", + "rayon", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-bindgen-test" +version = "0.3.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66c8d5e33ca3b6d9fa3b4676d774c5778031d27a578c2b007f905acf816152c3" +dependencies = [ + "js-sys", + "minicov", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-bindgen-test-macro", +] + +[[package]] +name = "wasm-bindgen-test-macro" +version = "0.3.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17d5042cc5fa009658f9a7333ef24291b1291a25b6382dd68862a7f3b969f69b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "wasm_sync" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff360cade7fec41ff0e9d2cda57fe58258c5f16def0e21302394659e6bbb0ea" +dependencies = [ + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "weedle2" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" +dependencies = [ + "nom", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] diff --git a/example-app/Cargo.toml b/example-app/Cargo.toml new file mode 100644 index 00000000..d2ac4044 --- /dev/null +++ b/example-app/Cargo.toml @@ -0,0 +1,33 @@ +[package] +name = "example-app" +version = "0.1.0" +edition = "2021" + +# We're going to build a static library named mopro_bindings +# This library name should not be changed +[lib] +crate-type = ["lib", "cdylib", "staticlib"] + +# Adapters for different proof systems +[features] +default = ["mopro-ffi/circom"] + +[dependencies] +mopro-wasm = { git = "https://github.com/zkmopro/mopro.git" } +mopro-ffi = { git = "https://github.com/zkmopro/mopro.git" } +circom-prover = { git = "https://github.com/zkmopro/mopro.git" } +rust-witness = "0.1" +uniffi = { version = "=0.29.0" } +num-bigint = "0.4.0" +thiserror = "2.0.12" + +# Metal MSM dependencies +ark-bn254 = { version = "=0.4.0" } +mopro-msm = { path = "../mopro-msm" } + +[build-dependencies] +mopro-ffi = { git = "https://github.com/zkmopro/mopro.git" } +rust-witness = "0.1" +uniffi = { version = "=0.29.0", features = ["build"] } + + diff --git a/example-app/Config.toml b/example-app/Config.toml new file mode 100644 index 00000000..e14cdbc3 --- /dev/null +++ b/example-app/Config.toml @@ -0,0 +1,4 @@ +target_adapters = ["circom"] +target_platforms = [] +ios = [] +android = [] diff --git a/example-app/README.md b/example-app/README.md new file mode 100644 index 00000000..e2ed1e39 --- /dev/null +++ b/example-app/README.md @@ -0,0 +1,108 @@ +# Mopro example app + +This is the example app of mopro. You can use the following commands to build native bindings for your iOS and/or Android app. + +**📚 To learn more about mopro, visit: https://zkmopro.org** + +## Getting Started + +To set up and build bindings, follow these steps. + +### 1. Install the Mopro CLI Tool + +```sh +git clone https://github.com/zkmopro/mopro +cd mopro/cli +cargo install --path . +``` + +### 2. Initialize adapter + +Navigate to the Mopro example app directory and initialize setup by running: + +```sh +mopro init +``` + +### 3. Generate Native Bindings + +Build bindings for your project by executing: + +```sh +mopro build +``` + +### 4. Create Platform-Specific Templates + +To generate templates tailored to your target platform, use: + +```sh +mopro create +``` + +### 5. Open the project + +Follow the instructions to open the development tools + +For iOS: +```sh +open ios/MoproApp.xcodeproj +``` + +For Android: +```sh +open android -a Android\ Studio +``` + +For Web: +```sh +cd web && yarn && yarn start +``` + +For React Native: +Follow the README in the `react-native` directory. Or [zkmopro/react-native-app/README.md](https://github.com/zkmopro/react-native-app/blob/main/README.md) + +For Flutter: +Follow the README in the `flutter` directory. Or [zkmopro/flutter-app/README.md](https://github.com/zkmopro/flutter-app/blob/main/README.md) + +## Advanced: Customize Builds Using Rust + +For advanced usage, you can manually run Rust commands to build in either debug or release mode. + +### iOS + +- Debug Mode: + ```sh + cargo run --bin ios # Debug mode + ``` +- Release Mode: + ```sh + CONFIGURATION=release cargo run --bin ios # Release mode + ``` + +### Android + +- Debug Mode: + ```sh + cargo run --bin android # Debug mode + ``` +- Release Mode: + ```sh + CONFIGURATION=release cargo run --bin android # Release mode + ``` + +### Web + +- Debug Mode: + ```sh + cargo run --bin web # Debug mode + ``` +- Release Mode: + ```sh + CONFIGURATION=release cargo run --bin web # Release mode + ``` + +## Community + +- X account: +- Telegram group: diff --git a/example-app/build.rs b/example-app/build.rs new file mode 100644 index 00000000..5c7fdd6c --- /dev/null +++ b/example-app/build.rs @@ -0,0 +1,3 @@ +fn main() { + rust_witness::transpile::transpile_wasm("./test-vectors/circom".to_string()); +} diff --git a/example-app/src/bin/ios.rs b/example-app/src/bin/ios.rs new file mode 100644 index 00000000..62673903 --- /dev/null +++ b/example-app/src/bin/ios.rs @@ -0,0 +1,5 @@ +fn main() { + // A simple wrapper around a build command provided by mopro. + // In the future this will likely be published in the mopro crate itself. + mopro_ffi::app_config::ios::build(); +} diff --git a/example-app/src/lib.rs b/example-app/src/lib.rs new file mode 100644 index 00000000..8ca2ad92 --- /dev/null +++ b/example-app/src/lib.rs @@ -0,0 +1,36 @@ +// Here we're calling a macro exported with Uniffi. This macro will +// write some functions and bind them to FFI type. These +// functions will invoke the `get_circom_wtns_fn` generated below. +mopro_ffi::app!(); + +// --- Circom Example of setting up multiplier2 circuit --- +use circom_prover::witness::WitnessFn; + +rust_witness::witness!(multiplier2); + +mopro_ffi::set_circom_circuits! { + ("multiplier2_final.zkey", WitnessFn::RustWitness(multiplier2_witness)) +} + +use mopro_msm::msm::metal_msm::{metal_variable_base_msm, test_utils::generate_random_bases_and_scalars}; + +#[uniffi::export] +fn metal_msm_benchmark(input_size: u32) -> () { + let start = std::time::Instant::now(); + let (bases, scalars) = generate_random_bases_and_scalars(input_size as usize); + println!("Generated bases and scalars in {:?}", start.elapsed()); + + let start = std::time::Instant::now(); + let result = metal_variable_base_msm(&bases, &scalars).unwrap(); + println!("Metal MSM took {:?}", start.elapsed()); +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_metal_msm() { + metal_msm_benchmark(1024); + } +} \ No newline at end of file diff --git a/gpu-acceleration-app/test-vectors/circom/multiplier3.wasm b/example-app/test-vectors/circom/multiplier2.wasm similarity index 100% rename from gpu-acceleration-app/test-vectors/circom/multiplier3.wasm rename to example-app/test-vectors/circom/multiplier2.wasm diff --git a/gpu-acceleration-app/test-vectors/circom/multiplier3_final.zkey b/example-app/test-vectors/circom/multiplier2_final.zkey similarity index 100% rename from gpu-acceleration-app/test-vectors/circom/multiplier3_final.zkey rename to example-app/test-vectors/circom/multiplier2_final.zkey diff --git a/gpu-acceleration-app/.github/workflows/build-and-test.yml b/gpu-acceleration-app/.github/workflows/build-and-test.yml deleted file mode 100644 index 12448e2f..00000000 --- a/gpu-acceleration-app/.github/workflows/build-and-test.yml +++ /dev/null @@ -1,134 +0,0 @@ -name: Build and Test - -on: - push: - pull_request: - types: - - opened - - synchronize - - reopened - - ready_for_review - -env: - CARGO_TERM_COLOR: always - -jobs: - # TODO: Add a job to run clippy - lint: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Check formatting - run: cargo fmt --all -- --check - - test-circom-custom: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Run circom tests - # TODO: Fix this custom jar thing - run: | - curl -L https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar -o jna-5.13.0.jar - CLASSPATH=jna-5.13.0.jar cargo test -- --nocapture - build-xcframework: - runs-on: macos-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Build xcframework - run: cargo run --bin ios - - name: Cache xcframework - id: cache-xcframework - uses: actions/cache/save@v4 - with: - path: MoproiOSBindings - key: ${{ github.sha }}-xcframework - build-ios-app-device: - runs-on: macos-latest - needs: build-xcframework - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Restore cached xcframework - id: cache-restore-xcframework - uses: actions/cache/restore@v4 - with: - path: MoproiOSBindings - key: ${{ github.sha }}-xcframework - - name: Build app for device - run: xcodebuild -project ./ios/mopro-test.xcodeproj -scheme mopro-test -destination generic/platform=iOS build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - build-ios-app-simulator: - runs-on: macos-latest - needs: build-xcframework - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Restore cached xcframework - id: cache-restore-xcframework - uses: actions/cache/restore@v4 - with: - path: MoproiOSBindings - key: ${{ github.sha }}-xcframework - - name: Build app for device - run: xcodebuild -project ./ios/mopro-test.xcodeproj -scheme mopro-test -destination generic/platform=iOS\ Simulator build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - test-ios-app-simulator: - runs-on: macos-14 - needs: build-xcframework - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Restore cached xcframework - id: cache-restore-xcframework - uses: actions/cache/restore@v4 - with: - path: MoproiOSBindings - key: ${{ github.sha }}-xcframework - # to list available simulators: xcrun simctl list devices - - name: Test app in simulator - run: xcodebuild -project ./ios/mopro-test.xcodeproj -scheme mopro-test -destination 'platform=iOS Simulator,name=iPhone 15' test CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - build-android-app: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 17 - - - name: Setup Android SDK - uses: android-actions/setup-android@v2.0.10 - - name: Build android library - run: cargo run --bin android - - name: Build android app - run: cd android && ./gradlew build \ No newline at end of file diff --git a/gpu-acceleration-app/.gitignore b/gpu-acceleration-app/.gitignore deleted file mode 100644 index d1bf292b..00000000 --- a/gpu-acceleration-app/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -/target -*.udl -.DS_Store - -MoproBindings.xcframework/ -build/ -jniLibs/ -MoproAndroidBindings/ -MoproiOSBindings/ diff --git a/gpu-acceleration-app/Cargo.lock b/gpu-acceleration-app/Cargo.lock deleted file mode 100644 index 338b43aa..00000000 --- a/gpu-acceleration-app/Cargo.lock +++ /dev/null @@ -1,4368 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli 0.28.1", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a43b18702501396fa9bcdeecd533bc85fac75150d308fc0f6800a01e6234a003" -dependencies = [ - "arrayvec", - "bytes", -] - -[[package]] -name = "anstream" -version = "0.6.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" - -[[package]] -name = "anstyle-parse" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" -dependencies = [ - "anstyle", - "windows-sys 0.52.0", -] - -[[package]] -name = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - -[[package]] -name = "ark-bls12-381" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" -dependencies = [ - "ark-ec", - "ark-ff 0.4.1", - "ark-serialize 0.4.1", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bn254" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" -dependencies = [ - "ark-ec", - "ark-ff 0.4.1", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-circom" -version = "0.1.0" -source = "git+https://github.com/zkmopro/circom-compat.git?branch=wasm-delete#83a6bad2a16b1383281d114e6eaeb19b373a2c1a" -dependencies = [ - "ark-bls12-381", - "ark-bn254", - "ark-crypto-primitives", - "ark-ec", - "ark-ff 0.4.1", - "ark-groth16", - "ark-poly", - "ark-relations", - "ark-serialize 0.4.1", - "ark-std 0.4.0", - "byteorder", - "cfg-if", - "color-eyre", - "criterion", - "ethers-core", - "fnv", - "hex", - "num", - "num-bigint", - "num-traits", - "thiserror", - "url", -] - -[[package]] -name = "ark-circom" -version = "0.1.0" -source = "git+https://github.com/vimwitch/circom-compat.git#21c6d43132c062364c270147e876dbc00d505a1c" -dependencies = [ - "ark-bn254", - "ark-crypto-primitives", - "ark-ec", - "ark-ff 0.4.1", - "ark-groth16", - "ark-poly", - "ark-relations", - "ark-serialize 0.4.1", - "ark-std 0.4.0", - "byteorder", - "cfg-if", - "color-eyre", - "criterion", - "ethers-core", - "fnv", - "hex", - "num", - "num-bigint", - "num-traits", - "thiserror", - "wasmer 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ark-crypto-primitives" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3a13b34da09176a8baba701233fdffbaa7c1b1192ce031a3da4e55ce1f1a56" -dependencies = [ - "ark-ec", - "ark-ff 0.4.1", - "ark-relations", - "ark-serialize 0.4.1", - "ark-snark", - "ark-std 0.4.0", - "blake2", - "derivative", - "digest 0.10.7", - "rayon", - "sha2", -] - -[[package]] -name = "ark-ec" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c60370a92f8e1a5f053cad73a862e1b99bc642333cd676fa11c0c39f80f4ac2" -dependencies = [ - "ark-ff 0.4.1", - "ark-poly", - "ark-serialize 0.4.1", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", - "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2d42532524bee1da5a4f6f733eb4907301baa480829557adcff5dfaeee1d9a" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.1", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rayon", - "rustc_version 0.4.0", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-groth16" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ceafa83848c3e390f1cbf124bc3193b3e639b3f02009e0e290809a501b95fc" -dependencies = [ - "ark-crypto-primitives", - "ark-ec", - "ark-ff 0.4.1", - "ark-poly", - "ark-relations", - "ark-serialize 0.4.1", - "ark-std 0.4.0", - "rayon", -] - -[[package]] -name = "ark-poly" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6ec811462cabe265cfe1b102fcfe3df79d7d2929c2425673648ee9abfd0272" -dependencies = [ - "ark-ff 0.4.1", - "ark-serialize 0.4.1", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", - "rayon", -] - -[[package]] -name = "ark-relations" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00796b6efc05a3f48225e59cb6a2cda78881e7c390872d5786aaf112f31fb4f0" -dependencies = [ - "ark-ff 0.4.1", - "ark-std 0.4.0", - "tracing", - "tracing-subscriber 0.2.25", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7e735959bc173ea4baf13327b19c22d452b8e9e8e8f7b7fc34e6bf0e316c33e" -dependencies = [ - "ark-serialize-derive", - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-snark" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d3cc6833a335bb8a600241889ead68ee89a3cf8448081fb7694c0fe503da63" -dependencies = [ - "ark-ff 0.4.1", - "ark-relations", - "ark-serialize 0.4.1", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand", - "rayon", -] - -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "askama" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" -dependencies = [ - "askama_derive", - "askama_escape", -] - -[[package]] -name = "askama_derive" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83" -dependencies = [ - "askama_parser", - "basic-toml", - "mime", - "mime_guess", - "proc-macro2", - "quote", - "serde", - "syn 2.0.71", -] - -[[package]] -name = "askama_escape" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" - -[[package]] -name = "askama_parser" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0" -dependencies = [ - "nom", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "auto_impl" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "autocfg" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[package]] -name = "backtrace" -version = "0.3.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object 0.32.2", - "rustc-demangle", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "basic-toml" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" -dependencies = [ - "serde", -] - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "byte-slice-cast" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" - -[[package]] -name = "bytecheck" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" -dependencies = [ - "serde", -] - -[[package]] -name = "camino" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.23", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - -[[package]] -name = "cc" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9711f33475c22aab363b05564a17d7b789bf3dfec5ebabb586adee56f0e271b5" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "num-traits", -] - -[[package]] -name = "clap" -version = "2.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "bitflags 1.3.2", - "textwrap 0.11.0", - "unicode-width", -] - -[[package]] -name = "clap" -version = "4.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "clap_lex" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" - -[[package]] -name = "cobs" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" - -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "color-eyre" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204" -dependencies = [ - "backtrace", - "color-spantrace", - "eyre", - "indenter", - "once_cell", - "owo-colors", - "tracing-error", -] - -[[package]] -name = "color-spantrace" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" -dependencies = [ - "once_cell", - "owo-colors", - "tracing-core", - "tracing-error", -] - -[[package]] -name = "colorchoice" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" - -[[package]] -name = "core-graphics-types" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "libc", -] - -[[package]] -name = "corosensei" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80128832c58ea9cbd041d2a759ec449224487b2c1e400453d99d244eead87a8e" -dependencies = [ - "autocfg", - "cfg-if", - "libc", - "scopeguard", - "windows-sys 0.33.0", -] - -[[package]] -name = "cpufeatures" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" -dependencies = [ - "libc", -] - -[[package]] -name = "cranelift-bforest" -version = "0.82.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38faa2a16616c8e78a18d37b4726b98bfd2de192f2fdc8a39ddf568a408a0f75" -dependencies = [ - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen" -version = "0.82.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26f192472a3ba23860afd07d2b0217dc628f21fcc72617aa1336d98e1671f33b" -dependencies = [ - "cranelift-bforest", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-entity", - "gimli 0.26.2", - "log", - "regalloc", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cranelift-codegen-meta" -version = "0.82.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32ddb89e9b89d3d9b36a5b7d7ea3261c98235a76ac95ba46826b8ec40b1a24" -dependencies = [ - "cranelift-codegen-shared", -] - -[[package]] -name = "cranelift-codegen-shared" -version = "0.82.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01fd0d9f288cc1b42d9333b7a776b17e278fc888c28e6a0f09b5573d45a150bc" - -[[package]] -name = "cranelift-entity" -version = "0.82.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3bfe172b83167604601faf9dc60453e0d0a93415b57a9c4d1a7ae6849185cf" - -[[package]] -name = "cranelift-frontend" -version = "0.82.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a006e3e32d80ce0e4ba7f1f9ddf66066d052a8c884a110b91d05404d6ce26dce" -dependencies = [ - "cranelift-codegen", - "log", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "criterion" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" -dependencies = [ - "atty", - "cast", - "clap 2.34.0", - "criterion-plot", - "csv", - "itertools 0.10.5", - "lazy_static", - "num-traits", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_cbor", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" -dependencies = [ - "cast", - "itertools 0.10.5", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "csv" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" -dependencies = [ - "csv-core", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" -dependencies = [ - "memchr", -] - -[[package]] -name = "cxx" -version = "1.0.124" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273dcfd3acd4e1e276af13ed2a43eea7001318823e7a726a6b3ed39b4acc0b82" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.124" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b2766fbd92be34e9ed143898fce6c572dc009de39506ed6903e5a05b68914e" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.71", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.124" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839fcd5e43464614ffaa989eaf1c139ef1f0c51672a1ed08023307fa1b909ccd" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.124" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2c1c1776b986979be68bb2285da855f8d8a35851a769fca8740df7c3d07877" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "darling" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "darling_macro" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "embedded-io" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" - -[[package]] -name = "enum-iterator" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eeac5c5edb79e4e39fe8439ef35207780a11f69c52cbe424ce3dfad4cb78de6" -dependencies = [ - "enum-iterator-derive", -] - -[[package]] -name = "enum-iterator-derive" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "enumset" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a4b049558765cef5f0c1a273c3fc57084d768b44d2f98127aef4cceb17293" -dependencies = [ - "enumset_derive", -] - -[[package]] -name = "enumset_derive" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c3b24c345d8c314966bdc1832f6c2635bfcce8e7cf363bd115987bba2ee242" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "ethabi" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" -dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror", - "uint", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", -] - -[[package]] -name = "ethers-core" -version = "2.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6da5fa198af0d3be20c19192df2bd9590b92ce09a8421e793bec8851270f1b05" -dependencies = [ - "arrayvec", - "bytes", - "chrono", - "elliptic-curve", - "ethabi", - "generic-array", - "hex", - "k256", - "num_enum", - "open-fastrlp", - "rand", - "rlp", - "serde", - "serde_json", - "strum", - "tempfile", - "thiserror", - "tiny-keccak", - "unicode-xid", -] - -[[package]] -name = "eyre" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" -dependencies = [ - "indenter", - "once_cell", -] - -[[package]] -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" - -[[package]] -name = "fastrand" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - -[[package]] -name = "fastrlp" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "rand_core", - "subtle", -] - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs-err" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" -dependencies = [ - "autocfg", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "gimli" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" -dependencies = [ - "fallible-iterator", - "indexmap 1.9.3", - "stable_deref_trait", -] - -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "goblin" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" -dependencies = [ - "log", - "plain", - "scroll", -] - -[[package]] -name = "gpu-acceleration-app" -version = "0.1.0" -dependencies = [ - "mopro-ffi", - "num-bigint", - "rust-witness", - "uniffi", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core", - "subtle", -] - -[[package]] -name = "half" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" - -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash 0.7.8", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.8", -] - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.11", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" -dependencies = [ - "serde", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "indenter" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.5", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "js-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "k256" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2", -] - -[[package]] -name = "keccak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "leb128" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" - -[[package]] -name = "libc" -version = "0.2.155" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - -[[package]] -name = "libm" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" - -[[package]] -name = "link-cplusplus" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9" -dependencies = [ - "cc", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "loupe" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6a72dfa44fe15b5e76b94307eeb2ff995a8c5b283b55008940c02e0c5b634d" -dependencies = [ - "indexmap 1.9.3", - "loupe-derive", - "rustversion", -] - -[[package]] -name = "loupe-derive" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fbfc88337168279f2e9ae06e157cfed4efd3316e14dc96ed074d4f2e6c5952" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "mach" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" -dependencies = [ - "libc", -] - -[[package]] -name = "mach2" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" -dependencies = [ - "libc", -] - -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "memmap2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "metal" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5637e166ea14be6063a3f8ba5ccb9a4159df7d8f6d61c02fc3d480b1f90dcfcb" -dependencies = [ - "bitflags 2.6.0", - "block", - "core-graphics-types", - "foreign-types", - "log", - "objc", - "paste", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "mopro-ffi" -version = "0.1.0" -source = "git+https://github.com/zkmopro/mopro.git?branch=feat/integrate-gpu-acceleration#e97a19cf97bb6203c312f0092baae9ff408e24c1" -dependencies = [ - "ark-bls12-381", - "ark-bn254", - "ark-circom 0.1.0 (git+https://github.com/zkmopro/circom-compat.git?branch=wasm-delete)", - "ark-crypto-primitives", - "ark-ec", - "ark-ff 0.4.1", - "ark-groth16", - "ark-relations", - "ark-serialize 0.4.1", - "ark-std 0.4.0", - "byteorder", - "color-eyre", - "mopro-msm", - "num-bigint", - "num-traits", - "rust-witness", - "thiserror", - "uniffi", - "uuid", -] - -[[package]] -name = "mopro-msm" -version = "0.1.0" -source = "git+https://github.com/zkmopro/gpu-acceleration.git#bef26a6eadec9653cee61289a7a900fc1fc2e447" -dependencies = [ - "ark-bn254", - "ark-circom 0.1.0 (git+https://github.com/vimwitch/circom-compat.git)", - "ark-crypto-primitives", - "ark-ec", - "ark-ff 0.4.1", - "ark-groth16", - "ark-relations", - "ark-serialize 0.4.1", - "ark-std 0.4.0", - "color-eyre", - "criterion", - "enumset", - "instant", - "itertools 0.13.0", - "metal", - "num-bigint", - "objc", - "once_cell", - "proptest", - "rayon", - "ruint", - "serde", - "serde_derive", - "serde_json", - "thiserror", - "toml 0.8.15", - "wasmer 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "witness", -] - -[[package]] -name = "more-asserts" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "num" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", - "rand", -] - -[[package]] -name = "num-complex" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_enum" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "objc" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de18d64e2e7bb681d29fedfe98dc3d12518602f9928171398032b5230fedb57" -dependencies = [ - "malloc_buf", -] - -[[package]] -name = "object" -version = "0.28.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" -dependencies = [ - "crc32fast", - "hashbrown 0.11.2", - "indexmap 1.9.3", - "memchr", -] - -[[package]] -name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "oorandom" -version = "11.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" - -[[package]] -name = "open-fastrlp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", -] - -[[package]] -name = "open-fastrlp-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "owo-colors" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" - -[[package]] -name = "parity-scale-codec" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" -dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pest" -version = "2.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" -dependencies = [ - "memchr", - "thiserror", - "ucd-trie", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "plain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" - -[[package]] -name = "plotters" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" - -[[package]] -name = "plotters-svg" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" -dependencies = [ - "plotters-backend", -] - -[[package]] -name = "postcard" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" -dependencies = [ - "cobs", - "embedded-io", - "serde", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" -dependencies = [ - "toml_edit 0.21.1", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax", - "rusty-fork", - "tempfile", - "unarray", -] - -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quote" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_xorshift" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" -dependencies = [ - "rand_core", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "regalloc" -version = "0.0.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62446b1d3ebf980bdc68837700af1d77b37bc430e524bf95319c6eada2a4cc02" -dependencies = [ - "log", - "rustc-hash", - "smallvec", -] - -[[package]] -name = "regex" -version = "1.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" - -[[package]] -name = "region" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b6ebd13bc009aef9cd476c1310d49ac354d36e240cf1bd753290f3dc7199a7" -dependencies = [ - "bitflags 1.3.2", - "libc", - "mach2", - "windows-sys 0.52.0", -] - -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "rkyv" -version = "0.7.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" -dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rlp-derive", - "rustc-hex", -] - -[[package]] -name = "rlp-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ruint" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95294d6e3a6192f3aabf91c38f56505a625aa495533442744185a36d75a790c4" -dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.1", - "bytes", - "fastrlp", - "num-bigint", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand", - "rlp", - "ruint-macro", - "serde", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rust-witness" -version = "0.1.0" -source = "git+https://github.com/vimwitch/rust-witness.git#768dd39b6987be78e45556d56755097bfe77934f" -dependencies = [ - "cc", - "fnv", - "num-bigint", - "num-traits", - "paste", - "walkdir", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver 1.0.23", -] - -[[package]] -name = "rustix" -version = "0.38.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustversion" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "rusty-fork" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scale-info" -version = "2.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" -dependencies = [ - "cfg-if", - "derive_more", - "parity-scale-codec", - "scale-info-derive", -] - -[[package]] -name = "scale-info-derive" -version = "2.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" -dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scratch" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" - -[[package]] -name = "scroll" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" -dependencies = [ - "scroll_derive", -] - -[[package]] -name = "scroll_derive" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.204" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_bytes" -version = "0.11.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_cbor" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" -dependencies = [ - "half", - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.204" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "serde_json" -version = "1.0.120" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_spanned" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" -dependencies = [ - "serde", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core", -] - -[[package]] -name = "simdutf8" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "smawk" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "target-lexicon" -version = "0.12.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" - -[[package]] -name = "tempfile" -version = "3.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" -dependencies = [ - "cfg-if", - "fastrand", - "rustix", - "windows-sys 0.52.0", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "textwrap" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" -dependencies = [ - "smawk", -] - -[[package]] -name = "thiserror" -version = "1.0.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "tinyvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.22.16", -] - -[[package]] -name = "toml_datetime" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" -dependencies = [ - "indexmap 2.2.6", - "serde", - "serde_spanned", - "toml_datetime", - "winnow 0.6.15", -] - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-error" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" -dependencies = [ - "tracing", - "tracing-subscriber 0.3.18", -] - -[[package]] -name = "tracing-subscriber" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" -dependencies = [ - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "ucd-trie" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-width" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "uniffi" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31bff6daf87277a9014bcdefbc2842b0553392919d1096843c5aad899ca4588" -dependencies = [ - "anyhow", - "camino", - "clap 4.5.9", - "uniffi_bindgen", - "uniffi_build", - "uniffi_core", - "uniffi_macros", -] - -[[package]] -name = "uniffi_bindgen" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96061d7e01b185aa405f7c9b134741ab3e50cc6796a47d6fd8ab9a5364b5feed" -dependencies = [ - "anyhow", - "askama", - "camino", - "cargo_metadata", - "fs-err", - "glob", - "goblin", - "heck 0.5.0", - "once_cell", - "paste", - "serde", - "textwrap 0.16.1", - "toml 0.5.11", - "uniffi_meta", - "uniffi_testing", - "uniffi_udl", -] - -[[package]] -name = "uniffi_build" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6b86f9b221046af0c533eafe09ece04e2f1ded04ccdc9bba0ec09aec1c52bd" -dependencies = [ - "anyhow", - "camino", - "uniffi_bindgen", -] - -[[package]] -name = "uniffi_checksum_derive" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fcfa22f55829d3aaa7acfb1c5150224188fe0f27c59a8a3eddcaa24d1ffbe58" -dependencies = [ - "quote", - "syn 2.0.71", -] - -[[package]] -name = "uniffi_core" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3210d57d6ab6065ab47a2898dacdb7c606fd6a4156196831fa3bf82e34ac58a6" -dependencies = [ - "anyhow", - "bytes", - "camino", - "log", - "once_cell", - "paste", - "static_assertions", -] - -[[package]] -name = "uniffi_macros" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58691741080935437dc862122e68d7414432a11824ac1137868de46181a0bd2" -dependencies = [ - "bincode", - "camino", - "fs-err", - "once_cell", - "proc-macro2", - "quote", - "serde", - "syn 2.0.71", - "toml 0.5.11", - "uniffi_meta", -] - -[[package]] -name = "uniffi_meta" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7663eacdbd9fbf4a88907ddcfe2e6fa85838eb6dc2418a7d91eebb3786f8e20b" -dependencies = [ - "anyhow", - "bytes", - "siphasher", - "uniffi_checksum_derive", -] - -[[package]] -name = "uniffi_testing" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f922465f7566f25f8fe766920205fdfa9a3fcdc209c6bfb7557f0b5bf45b04dd" -dependencies = [ - "anyhow", - "camino", - "cargo_metadata", - "fs-err", - "once_cell", -] - -[[package]] -name = "uniffi_udl" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef408229a3a407fafa4c36dc4f6ece78a6fb258ab28d2b64bddd49c8cb680f6" -dependencies = [ - "anyhow", - "textwrap 0.16.1", - "uniffi_meta", - "uniffi_testing", - "weedle2", -] - -[[package]] -name = "url" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "uuid" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" -dependencies = [ - "getrandom", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -dependencies = [ - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.71", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" - -[[package]] -name = "wasm-encoder" -version = "0.214.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff694f02a8d7a50b6922b197ae03883fbf18cdb2ae9fbee7b6148456f5f44041" -dependencies = [ - "leb128", -] - -[[package]] -name = "wasmer" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea8d8361c9d006ea3d7797de7bd6b1492ffd0f91a22430cfda6c1658ad57bedf" -dependencies = [ - "cfg-if", - "indexmap 1.9.3", - "js-sys", - "loupe", - "more-asserts", - "target-lexicon", - "thiserror", - "wasm-bindgen", - "wasmer-artifact 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-compiler 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-compiler-cranelift 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-derive 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-engine 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-engine-dylib 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-engine-universal 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-vm 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wat", - "winapi", -] - -[[package]] -name = "wasmer" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "cfg-if", - "indexmap 1.9.3", - "js-sys", - "loupe", - "more-asserts", - "target-lexicon", - "thiserror", - "wasm-bindgen", - "wasmer-artifact 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-compiler 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-compiler-cranelift 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-derive 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-engine 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-engine-dylib 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-engine-universal 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-vm 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wat", - "winapi", -] - -[[package]] -name = "wasmer-artifact" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aaf9428c29c1d8ad2ac0e45889ba8a568a835e33fd058964e5e500f2f7ce325" -dependencies = [ - "enumset", - "loupe", - "thiserror", - "wasmer-compiler 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasmer-artifact" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "enumset", - "loupe", - "thiserror", - "wasmer-compiler 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", -] - -[[package]] -name = "wasmer-compiler" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67a6cd866aed456656db2cfea96c18baabbd33f676578482b85c51e1ee19d2c" -dependencies = [ - "enumset", - "loupe", - "rkyv", - "serde", - "serde_bytes", - "smallvec", - "target-lexicon", - "thiserror", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmparser", -] - -[[package]] -name = "wasmer-compiler" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "enumset", - "loupe", - "rkyv", - "serde", - "serde_bytes", - "smallvec", - "target-lexicon", - "thiserror", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmparser", -] - -[[package]] -name = "wasmer-compiler-cranelift" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48be2f9f6495f08649e4f8b946a2cbbe119faf5a654aa1457f9504a99d23dae0" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "gimli 0.26.2", - "loupe", - "more-asserts", - "rayon", - "smallvec", - "target-lexicon", - "tracing", - "wasmer-compiler 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasmer-compiler-cranelift" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "gimli 0.26.2", - "loupe", - "more-asserts", - "rayon", - "smallvec", - "target-lexicon", - "tracing", - "wasmer-compiler 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", -] - -[[package]] -name = "wasmer-derive" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e50405cc2a2f74ff574584710a5f2c1d5c93744acce2ca0866084739284b51" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "wasmer-derive" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "wasmer-engine" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f98f010978c244db431b392aeab0661df7ea0822343334f8f2a920763548e45" -dependencies = [ - "backtrace", - "enumset", - "lazy_static", - "loupe", - "memmap2", - "more-asserts", - "rustc-demangle", - "serde", - "serde_bytes", - "target-lexicon", - "thiserror", - "wasmer-artifact 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-compiler 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-vm 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasmer-engine" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "backtrace", - "enumset", - "lazy_static", - "loupe", - "memmap2", - "more-asserts", - "rustc-demangle", - "serde", - "serde_bytes", - "target-lexicon", - "thiserror", - "wasmer-artifact 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-compiler 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-vm 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", -] - -[[package]] -name = "wasmer-engine-dylib" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0358af9c154724587731175553805648d9acb8f6657880d165e378672b7e53" -dependencies = [ - "cfg-if", - "enum-iterator", - "enumset", - "leb128", - "libloading", - "loupe", - "object 0.28.4", - "rkyv", - "serde", - "tempfile", - "tracing", - "wasmer-artifact 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-compiler 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-engine 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-object 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-vm 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "which", -] - -[[package]] -name = "wasmer-engine-dylib" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "cfg-if", - "enum-iterator", - "enumset", - "leb128", - "libloading", - "loupe", - "object 0.28.4", - "rkyv", - "serde", - "tempfile", - "tracing", - "wasmer-artifact 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-compiler 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-engine 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-object 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-vm 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "which", -] - -[[package]] -name = "wasmer-engine-universal" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "440dc3d93c9ca47865a4f4edd037ea81bf983b5796b59b3d712d844b32dbef15" -dependencies = [ - "cfg-if", - "enumset", - "leb128", - "loupe", - "region", - "rkyv", - "wasmer-compiler 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-engine 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-engine-universal-artifact 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-vm 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi", -] - -[[package]] -name = "wasmer-engine-universal" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "cfg-if", - "enumset", - "leb128", - "loupe", - "region", - "rkyv", - "wasmer-compiler 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-engine 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-engine-universal-artifact 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-vm 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "winapi", -] - -[[package]] -name = "wasmer-engine-universal-artifact" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f1db3f54152657eb6e86c44b66525ff7801dad8328fe677da48dd06af9ad41" -dependencies = [ - "enum-iterator", - "enumset", - "loupe", - "rkyv", - "thiserror", - "wasmer-artifact 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-compiler 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasmer-engine-universal-artifact" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "enum-iterator", - "enumset", - "loupe", - "rkyv", - "thiserror", - "wasmer-artifact 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-compiler 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", -] - -[[package]] -name = "wasmer-object" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d831335ff3a44ecf451303f6f891175c642488036b92ceceb24ac8623a8fa8b" -dependencies = [ - "object 0.28.4", - "thiserror", - "wasmer-compiler 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "wasmer-object" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "object 0.28.4", - "thiserror", - "wasmer-compiler 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", -] - -[[package]] -name = "wasmer-types" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39df01ea05dc0a9bab67e054c7cb01521e53b35a7bb90bd02eca564ed0b2667f" -dependencies = [ - "backtrace", - "enum-iterator", - "indexmap 1.9.3", - "loupe", - "more-asserts", - "rkyv", - "serde", - "thiserror", -] - -[[package]] -name = "wasmer-types" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "backtrace", - "enum-iterator", - "indexmap 1.9.3", - "loupe", - "more-asserts", - "rkyv", - "serde", - "thiserror", -] - -[[package]] -name = "wasmer-vm" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d965fa61f4dc4cdb35a54daaf7ecec3563fbb94154a6c35433f879466247dd" -dependencies = [ - "backtrace", - "cc", - "cfg-if", - "corosensei", - "enum-iterator", - "indexmap 1.9.3", - "lazy_static", - "libc", - "loupe", - "mach", - "memoffset", - "more-asserts", - "region", - "rkyv", - "scopeguard", - "serde", - "thiserror", - "wasmer-artifact 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmer-types 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi", -] - -[[package]] -name = "wasmer-vm" -version = "2.3.0" -source = "git+https://github.com/oskarth/wasmer.git?rev=09c7070#09c7070d8f0baf3aa949c990ad4972d0bcbd022c" -dependencies = [ - "backtrace", - "cc", - "cfg-if", - "corosensei", - "enum-iterator", - "indexmap 1.9.3", - "lazy_static", - "libc", - "loupe", - "mach", - "memoffset", - "more-asserts", - "region", - "rkyv", - "scopeguard", - "serde", - "thiserror", - "wasmer-artifact 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "wasmer-types 2.3.0 (git+https://github.com/oskarth/wasmer.git?rev=09c7070)", - "winapi", -] - -[[package]] -name = "wasmparser" -version = "0.83.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" - -[[package]] -name = "wast" -version = "214.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "694bcdb24c49c8709bd8713768b71301a11e823923eee355d530f1d8d0a7f8e9" -dependencies = [ - "bumpalo", - "leb128", - "memchr", - "unicode-width", - "wasm-encoder", -] - -[[package]] -name = "wat" -version = "1.214.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "347249eb56773fa728df2656cfe3a8c19437ded61a922a0b5e0839d9790e278e" -dependencies = [ - "wast", -] - -[[package]] -name = "web-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "weedle2" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" -dependencies = [ - "nom", -] - -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43dbb096663629518eb1dfa72d80243ca5a6aca764cae62a2df70af760a9be75" -dependencies = [ - "windows_aarch64_msvc 0.33.0", - "windows_i686_gnu 0.33.0", - "windows_i686_msvc 0.33.0", - "windows_x86_64_gnu 0.33.0", - "windows_x86_64_msvc 0.33.0", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd761fd3eb9ab8cc1ed81e56e567f02dd82c4c837e48ac3b2181b9ffc5060807" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab0cf703a96bab2dc0c02c0fa748491294bf9b7feb27e1f4f96340f208ada0e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cfdbe89cc9ad7ce618ba34abc34bbb6c36d99e96cae2245b7943cd75ee773d0" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4dd9b0c0e9ece7bb22e84d70d01b71c6d6248b81a3c60d11869451b4cb24784" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1e4aa646495048ec7f3ffddc411e1d829c026a2ec62b39da15c1055e406eaa" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "557404e450152cd6795bb558bca69e43c585055f4606e3bcae5894fc6dac9ba0" -dependencies = [ - "memchr", -] - -[[package]] -name = "witness" -version = "0.2.0" -source = "git+https://github.com/philsippl/circom-witness-rs.git#fed7d591a4a6adfde371d3dac3fde23d755bcd39" -dependencies = [ - "ark-bn254", - "ark-ff 0.4.1", - "ark-serialize 0.4.1", - "byteorder", - "cxx", - "cxx-build", - "eyre", - "hex", - "postcard", - "rand", - "ruint", - "serde", - "serde_json", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.71", -] diff --git a/gpu-acceleration-app/Cargo.toml b/gpu-acceleration-app/Cargo.toml deleted file mode 100644 index 04a66a25..00000000 --- a/gpu-acceleration-app/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "gpu-acceleration-app" -version = "0.1.0" -edition = "2021" - -[workspace] - -# We're going to build a static library named mopro_bindings -# This library name should not be changed -[lib] -crate-type = ["lib", "cdylib", "staticlib"] -name = "mopro_bindings" - -# This is a script used to build the iOS static library -[[bin]] -name = "ios" - -# We're going to build support for circom proofs only -[features] -default = ["mopro-ffi/circom"] - -[dependencies] -mopro-ffi = { git = "https://github.com/zkmopro/mopro.git", branch = "feat/integrate-gpu-acceleration", features = ["gpu-acceleration"] } -uniffi = { version = "0.28", features = ["cli"] } -rust-witness = { git = "https://github.com/vimwitch/rust-witness.git" } -num-bigint = "0.4.0" - -[build-dependencies] -mopro-ffi = { git = "https://github.com/zkmopro/mopro.git", branch = "feat/integrate-gpu-acceleration", features = ["gpu-acceleration"] } -uniffi = { version = "0.28", features = ["build"] } -rust-witness = { git = "https://github.com/vimwitch/rust-witness.git" } diff --git a/gpu-acceleration-app/README.md b/gpu-acceleration-app/README.md deleted file mode 100644 index 45fed4ff..00000000 --- a/gpu-acceleration-app/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# GPU Acceleration App - -This is an example for GPU accelerating exploration and a test for benchmarking results for different implemented msm functions, which might also focus on different parts of operations in SNARKs. - -## Usage - -Clone this repo then run either - -``` -# CONFIGURATION is either debug or release -CONFIGURATION=release cargo run --bin ios -CONFIGURATION=debug cargo run --bin ios -``` - -### running Benchmarks on IOS devices - -1. Make sure you are in `./gpu-acceleartion-app/`. -2. Run `CONFIGURATION=release cargo run --bin ios` for release building. - - -The result would be like: - -![benchmark result on simulator](image/simulator_benchmark_result.png) diff --git a/gpu-acceleration-app/build.rs b/gpu-acceleration-app/build.rs deleted file mode 100644 index 59bdc34a..00000000 --- a/gpu-acceleration-app/build.rs +++ /dev/null @@ -1,5 +0,0 @@ -fn main() { - rust_witness::transpile::transpile_wasm("./test-vectors/circom".to_string()); - std::fs::write("./src/mopro.udl", mopro_ffi::app_config::UDL).expect("Failed to write UDL"); - uniffi::generate_scaffolding("./src/mopro.udl").unwrap(); -} diff --git a/gpu-acceleration-app/ios/.gitignore b/gpu-acceleration-app/ios/.gitignore deleted file mode 100644 index fda4de3a..00000000 --- a/gpu-acceleration-app/ios/.gitignore +++ /dev/null @@ -1,62 +0,0 @@ -# Xcode -# -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - -## User settings -xcuserdata/ - -## Obj-C/Swift specific -*.hmap - -## App packaging -*.ipa -*.dSYM.zip -*.dSYM - -## Playgrounds -timeline.xctimeline -playground.xcworkspace - -# Swift Package Manager -# -# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. -# Packages/ -# Package.pins -# Package.resolved -# *.xcodeproj -# -# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata -# hence it is not needed unless you have added a package configuration file to your project -# .swiftpm - -.build/ - -# CocoaPods -# -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -# Pods/ -# -# Add this line if you want to avoid checking in source code from the Xcode workspace -# *.xcworkspace - -# Carthage -# -# Add this line if you want to avoid checking in source code from Carthage dependencies. -# Carthage/Checkouts - -Carthage/Build/ - -# fastlane -# -# It is recommended to not store the screenshots in the git repo. -# Instead, use fastlane to re-generate the screenshots whenever they are needed. -# For more information about the recommended setup visit: -# https://docs.fastlane.tools/best-practices/source-control/#source-control - -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots/**/*.png -fastlane/test_output \ No newline at end of file diff --git a/gpu-acceleration-app/ios/gpu-acceleration-UITests/gpu_acceleration_UITests.swift b/gpu-acceleration-app/ios/gpu-acceleration-UITests/gpu_acceleration_UITests.swift deleted file mode 100644 index 49fceee1..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration-UITests/gpu_acceleration_UITests.swift +++ /dev/null @@ -1,40 +0,0 @@ -import XCTest -@testable import gpu_acceleration - -class MSMBenchmarkViewUITests: XCTestCase { - - var app: XCUIApplication! - - override func setUpWithError() throws { - continueAfterFailure = false - app = XCUIApplication() - app.launch() - } - - func testMSMBenchmarkViewUI() throws { - // Navigate to MSMBenchmarkView - app.buttons["Generate Benchmarks"].tap() - - // Check if the navigation title is correct - XCTAssertTrue(app.navigationBars["MSM Benchmark"].exists) - - // Check if both algorithms are listed - XCTAssertTrue(app.staticTexts["1. Arkwork (Baseline)"].exists) - XCTAssertTrue(app.staticTexts["2. Metal (GPU)"].exists) - - // Check if the "Generate Benchmarks" button exists - XCTAssertTrue(app.buttons["Generate Benchmarks"].exists) - - // Check if the results section exists - XCTAssertTrue(app.staticTexts["BENCHMARK RESULTS"].exists) - - // Tap on the Metal (GPU) algorithm to select it - app.staticTexts["2. Metal (GPU)"].tap() - - // Verify that both algorithms are now selected (checkmarks exist) - XCTAssertEqual(app.images.matching(identifier: "checkmark").count, 2) - - // Tap the "Generate Benchmarks" button - app.buttons["Generate Benchmarks"].tap() - } -} diff --git a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/project.pbxproj b/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/project.pbxproj deleted file mode 100644 index 7a6f626d..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/project.pbxproj +++ /dev/null @@ -1,492 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 56; - objects = { - -/* Begin PBXBuildFile section */ - 4C05CDB22C327C4F00BEBACD /* gpu_acceleration_UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C05CDB12C327C4F00BEBACD /* gpu_acceleration_UITests.swift */; }; - 4CBAB2782C3334B300B536B7 /* MoproBindings.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CBAB2772C3334B300B536B7 /* MoproBindings.xcframework */; }; - 4CBAB27A2C3334B800B536B7 /* mopro.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CBAB2792C3334B800B536B7 /* mopro.swift */; }; - 4CF977EF2C2BCF0000CE1139 /* gpu-accelerationApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF977EE2C2BCF0000CE1139 /* gpu-accelerationApp.swift */; }; - 4CF977F32C2BCF0300CE1139 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4CF977F22C2BCF0300CE1139 /* Assets.xcassets */; }; - 4CF977F62C2BCF0300CE1139 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4CF977F52C2BCF0300CE1139 /* Preview Assets.xcassets */; }; - 4CF9780F2C2BF43000CE1139 /* multiplier3_final.zkey in Resources */ = {isa = PBXBuildFile; fileRef = 4CF9780E2C2BF43000CE1139 /* multiplier3_final.zkey */; }; - E1367E072C4B936B008A0475 /* MSMBenchmarkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1367E062C4B936B008A0475 /* MSMBenchmarkView.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 4C05CDB52C327C4F00BEBACD /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 4CF977E32C2BCF0000CE1139 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4CF977EA2C2BCF0000CE1139; - remoteInfo = "mopro-test"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 4C05CDAF2C327C4F00BEBACD /* gpu-acceleration-UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "gpu-acceleration-UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4C05CDB12C327C4F00BEBACD /* gpu_acceleration_UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = gpu_acceleration_UITests.swift; sourceTree = ""; }; - 4CBAB2772C3334B300B536B7 /* MoproBindings.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = MoproBindings.xcframework; path = ../MoproiOSBindings/MoproBindings.xcframework; sourceTree = ""; }; - 4CBAB2792C3334B800B536B7 /* mopro.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = mopro.swift; path = ../../MoproiOSBindings/mopro.swift; sourceTree = ""; }; - 4CF977EB2C2BCF0000CE1139 /* gpu-acceleration.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "gpu-acceleration.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4CF977EE2C2BCF0000CE1139 /* gpu-accelerationApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "gpu-accelerationApp.swift"; sourceTree = ""; }; - 4CF977F22C2BCF0300CE1139 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 4CF977F52C2BCF0300CE1139 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 4CF9780E2C2BF43000CE1139 /* multiplier3_final.zkey */ = {isa = PBXFileReference; lastKnownFileType = file; name = multiplier3_final.zkey; path = "../test-vectors/circom/multiplier3_final.zkey"; sourceTree = ""; }; - E1367E062C4B936B008A0475 /* MSMBenchmarkView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MSMBenchmarkView.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 4C05CDAC2C327C4F00BEBACD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4CF977E82C2BCF0000CE1139 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 4CBAB2782C3334B300B536B7 /* MoproBindings.xcframework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 4C05CDB02C327C4F00BEBACD /* gpu-acceleration-UITests */ = { - isa = PBXGroup; - children = ( - 4C05CDB12C327C4F00BEBACD /* gpu_acceleration_UITests.swift */, - ); - path = "gpu-acceleration-UITests"; - sourceTree = ""; - }; - 4CF977E22C2BCF0000CE1139 = { - isa = PBXGroup; - children = ( - 4CF9780E2C2BF43000CE1139 /* multiplier3_final.zkey */, - 4CF977ED2C2BCF0000CE1139 /* gpu-acceleration */, - 4C05CDB02C327C4F00BEBACD /* gpu-acceleration-UITests */, - 4CF977EC2C2BCF0000CE1139 /* Products */, - 4CF978102C2BF45500CE1139 /* Frameworks */, - ); - sourceTree = ""; - }; - 4CF977EC2C2BCF0000CE1139 /* Products */ = { - isa = PBXGroup; - children = ( - 4CF977EB2C2BCF0000CE1139 /* gpu-acceleration.app */, - 4C05CDAF2C327C4F00BEBACD /* gpu-acceleration-UITests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 4CF977ED2C2BCF0000CE1139 /* gpu-acceleration */ = { - isa = PBXGroup; - children = ( - 4CBAB2792C3334B800B536B7 /* mopro.swift */, - E1367E062C4B936B008A0475 /* MSMBenchmarkView.swift */, - 4CF977EE2C2BCF0000CE1139 /* gpu-accelerationApp.swift */, - 4CF977F22C2BCF0300CE1139 /* Assets.xcassets */, - 4CF977F42C2BCF0300CE1139 /* Preview Content */, - ); - path = "gpu-acceleration"; - sourceTree = ""; - }; - 4CF977F42C2BCF0300CE1139 /* Preview Content */ = { - isa = PBXGroup; - children = ( - 4CF977F52C2BCF0300CE1139 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - 4CF978102C2BF45500CE1139 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 4CBAB2772C3334B300B536B7 /* MoproBindings.xcframework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 4C05CDAE2C327C4F00BEBACD /* gpu-acceleration-UITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4C05CDB92C327C4F00BEBACD /* Build configuration list for PBXNativeTarget "gpu-acceleration-UITests" */; - buildPhases = ( - 4C05CDAB2C327C4F00BEBACD /* Sources */, - 4C05CDAC2C327C4F00BEBACD /* Frameworks */, - 4C05CDAD2C327C4F00BEBACD /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 4C05CDB62C327C4F00BEBACD /* PBXTargetDependency */, - ); - name = "gpu-acceleration-UITests"; - productName = "mopro-test-UITests"; - productReference = 4C05CDAF2C327C4F00BEBACD /* gpu-acceleration-UITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; - 4CF977EA2C2BCF0000CE1139 /* gpu-acceleration */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4CF977F92C2BCF0300CE1139 /* Build configuration list for PBXNativeTarget "gpu-acceleration" */; - buildPhases = ( - 4CF977E72C2BCF0000CE1139 /* Sources */, - 4CF977E92C2BCF0000CE1139 /* Resources */, - 4CF977E82C2BCF0000CE1139 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "gpu-acceleration"; - productName = "mopro-test"; - productReference = 4CF977EB2C2BCF0000CE1139 /* gpu-acceleration.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 4CF977E32C2BCF0000CE1139 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1540; - LastUpgradeCheck = 1540; - TargetAttributes = { - 4C05CDAE2C327C4F00BEBACD = { - CreatedOnToolsVersion = 15.4; - TestTargetID = 4CF977EA2C2BCF0000CE1139; - }; - 4CF977EA2C2BCF0000CE1139 = { - CreatedOnToolsVersion = 15.4; - }; - }; - }; - buildConfigurationList = 4CF977E62C2BCF0000CE1139 /* Build configuration list for PBXProject "gpu-acceleration" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 4CF977E22C2BCF0000CE1139; - productRefGroup = 4CF977EC2C2BCF0000CE1139 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 4CF977EA2C2BCF0000CE1139 /* gpu-acceleration */, - 4C05CDAE2C327C4F00BEBACD /* gpu-acceleration-UITests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 4C05CDAD2C327C4F00BEBACD /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4CF977E92C2BCF0000CE1139 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4CF9780F2C2BF43000CE1139 /* multiplier3_final.zkey in Resources */, - 4CF977F62C2BCF0300CE1139 /* Preview Assets.xcassets in Resources */, - 4CF977F32C2BCF0300CE1139 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 4C05CDAB2C327C4F00BEBACD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4C05CDB22C327C4F00BEBACD /* gpu_acceleration_UITests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4CF977E72C2BCF0000CE1139 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E1367E072C4B936B008A0475 /* MSMBenchmarkView.swift in Sources */, - 4CBAB27A2C3334B800B536B7 /* mopro.swift in Sources */, - 4CF977EF2C2BCF0000CE1139 /* gpu-accelerationApp.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 4C05CDB62C327C4F00BEBACD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 4CF977EA2C2BCF0000CE1139 /* gpu-acceleration */; - targetProxy = 4C05CDB52C327C4F00BEBACD /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 4C05CDB72C327C4F00BEBACD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 82Y79L4XYJ; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.mopro.gpu-acceleration-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = "gpu-acceleration"; - }; - name = Debug; - }; - 4C05CDB82C327C4F00BEBACD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 82Y79L4XYJ; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.mopro.gpu-acceleration-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = "gpu-acceleration"; - }; - name = Release; - }; - 4CF977F72C2BCF0300CE1139 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.5; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 4CF977F82C2BCF0300CE1139 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.5; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 4CF977FA2C2BCF0300CE1139 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "\"gpu-acceleration/Preview Content\""; - DEVELOPMENT_TEAM = 82Y79L4XYJ; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.mopro.gpu-acceleration-app"; - PRODUCT_NAME = "gpu-acceleration"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 4CF977FB2C2BCF0300CE1139 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "\"gpu-acceleration/Preview Content\""; - DEVELOPMENT_TEAM = 82Y79L4XYJ; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.mopro.gpu-acceleration-app"; - PRODUCT_NAME = "gpu-acceleration"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 4C05CDB92C327C4F00BEBACD /* Build configuration list for PBXNativeTarget "gpu-acceleration-UITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4C05CDB72C327C4F00BEBACD /* Debug */, - 4C05CDB82C327C4F00BEBACD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4CF977E62C2BCF0000CE1139 /* Build configuration list for PBXProject "gpu-acceleration" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4CF977F72C2BCF0300CE1139 /* Debug */, - 4CF977F82C2BCF0300CE1139 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4CF977F92C2BCF0300CE1139 /* Build configuration list for PBXNativeTarget "gpu-acceleration" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4CF977FA2C2BCF0300CE1139 /* Debug */, - 4CF977FB2C2BCF0300CE1139 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 4CF977E32C2BCF0000CE1139 /* Project object */; -} diff --git a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21cae922..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/xcshareddata/xcschemes/mopro-bindings.xcscheme b/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/xcshareddata/xcschemes/mopro-bindings.xcscheme deleted file mode 100644 index 63e95015..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/xcshareddata/xcschemes/mopro-bindings.xcscheme +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/xcshareddata/xcschemes/mopro-test.xcscheme b/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/xcshareddata/xcschemes/mopro-test.xcscheme deleted file mode 100644 index 1f690bbc..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration.xcodeproj/xcshareddata/xcschemes/mopro-test.xcscheme +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gpu-acceleration-app/ios/gpu-acceleration/Assets.xcassets/AccentColor.colorset/Contents.json b/gpu-acceleration-app/ios/gpu-acceleration/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb878970..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/gpu-acceleration-app/ios/gpu-acceleration/Assets.xcassets/AppIcon.appiconset/Contents.json b/gpu-acceleration-app/ios/gpu-acceleration/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 13613e3e..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/gpu-acceleration-app/ios/gpu-acceleration/Assets.xcassets/Contents.json b/gpu-acceleration-app/ios/gpu-acceleration/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/gpu-acceleration-app/ios/gpu-acceleration/MSMBenchmarkView.swift b/gpu-acceleration-app/ios/gpu-acceleration/MSMBenchmarkView.swift deleted file mode 100644 index e4d033c1..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration/MSMBenchmarkView.swift +++ /dev/null @@ -1,185 +0,0 @@ -// -// MSMBenchmarkView.swift -// GPU Acceleration -// -// Created by Fuchuan Chung on 2024/4/21. -// Copyright © 2024 CocoaPods. All rights reserved. -// - -import SwiftUI -import moproFFI - -struct AlgorithmBenchmark: Identifiable { - let id = UUID() - var algorithm: String - var avgMsmTime: Double - var diffWithBaseline: Double -} - -struct MSMBenchmarkView: View { - @State private var selectedAlgorithms: Set = ["Arkwork (Baseline)", "Metal (GPU)"] - let algorithms = ["Arkwork (Baseline)", "Metal (GPU)", "Bucket Wise Msm", "Precompute Msm"] - @State private var benchmarkResults: [AlgorithmBenchmark] = [] - @State private var isSubmitting: Bool = false - - let msmBenchmarkMapping: [String: (UInt32, UInt32, String) throws -> BenchmarkResult] = [ - "Arkwork (Baseline)": arkworksPippenger, - "Metal (GPU)": metalMsm, - "Bucket Wise Msm": bucketWiseMsm, - "Precompute Msm": precomputeMsm - ] - - var body: some View { - ZStack { - Color.black.edgesIgnoringSafeArea(.all) // Set the background to gray - - ScrollView { - VStack(spacing: 20) { - Text("MSM Benchmark") - .font(.title) - .fontWeight(.bold) - .foregroundColor(.white) - - VStack(alignment: .leading, spacing: 10) { - Text("SELECT MSM ALGORITHMS") - .font(.subheadline) - .foregroundColor(.white) - - VStack(spacing: 0) { - ForEach(algorithms, id: \.self) { algorithm in - Button(action: { - toggleAlgorithm(algorithm) - }) { - HStack { - Text(algorithm) - Spacer() - if selectedAlgorithms.contains(algorithm) { - Image(systemName: "checkmark") - } - } - .padding() - .background(selectedAlgorithms.contains(algorithm) ? Color.blue.opacity(0.3) : Color.gray.opacity(0.3)) - .foregroundColor(.white) - } - .buttonStyle(PlainButtonStyle()) - Divider().background(Color.white.opacity(0.3)) - } - } - .background(Color.gray.opacity(0.2)) - .cornerRadius(10) - } - - VStack(alignment: .leading, spacing: 10) { - Text("BENCHMARK RESULTS") - .font(.subheadline) - .foregroundColor(.white) - - VStack(spacing: 0) { - HStack { - Text("Algorithm") - Spacer() - Text("Avg Time\n(ms)") - Text("Diff(%)") - .frame(width: 70, alignment: .trailing) - } - .padding() - .background(Color.gray.opacity(0.3)) - .font(.subheadline) - .foregroundColor(.white) - - if benchmarkResults.isEmpty { - Text("No results yet") - .padding() - .frame(maxWidth: .infinity, alignment: .center) - .foregroundColor(.white) - } else { - ForEach(benchmarkResults) { result in - HStack { - Text(result.algorithm) - Spacer() - Text(String(format: "%.2f", result.avgMsmTime)) - .frame(width: 80, alignment: .trailing) - Text(String(format: "%.2f", result.diffWithBaseline)) - .frame(width: 70, alignment: .trailing) - } - .padding() - .foregroundColor(.white) - if result.id != benchmarkResults.last?.id { - Divider().background(Color.white.opacity(0.3)) - } - } - } - } - .background(Color.gray.opacity(0.2)) - .cornerRadius(10) - } - - Spacer() - - Button(action: submitAction) { - Text("Generate Benchmarks") - .fontWeight(.semibold) - .foregroundColor(.white) - .frame(maxWidth: .infinity) - .padding() - .background(Color.blue) - .cornerRadius(10) - } - .disabled(isSubmitting || selectedAlgorithms.isEmpty) - } - .padding() - } - } - } - - func toggleAlgorithm(_ algorithm: String) { - if selectedAlgorithms.contains(algorithm) { - selectedAlgorithms.remove(algorithm) - } else { - selectedAlgorithms.insert(algorithm) - } - } - - func submitAction() { - let instanceSize: UInt32 = 10 - let numInstance: UInt32 = 5 - let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.path - - isSubmitting = true - benchmarkResults.removeAll() - - DispatchQueue.global(qos: .userInitiated).async { - var tempResults: [AlgorithmBenchmark] = [] - var baselineTiming: Double = 0.0 - - for algorithm in selectedAlgorithms.sorted() { - if let benchmarkFunction = msmBenchmarkMapping[algorithm] { - do { - let benchData = try benchmarkFunction(instanceSize, numInstance, documentsPath) - - if algorithm == "Arkwork (Baseline)" { - baselineTiming = benchData.avgProcessingTime - } - - let diff = algorithm == "Arkwork (Baseline)" ? 0.0 : - (baselineTiming - benchData.avgProcessingTime) / baselineTiming * 100 - - let algorithmBenchmark = AlgorithmBenchmark( - algorithm: algorithm, - avgMsmTime: benchData.avgProcessingTime, - diffWithBaseline: diff - ) - tempResults.append(algorithmBenchmark) - } catch { - print("Error running benchmark for \(algorithm): \(error)") - } - } - } - - DispatchQueue.main.async { - benchmarkResults = tempResults - isSubmitting = false - } - } - } -} diff --git a/gpu-acceleration-app/ios/gpu-acceleration/Preview Content/Preview Assets.xcassets/Contents.json b/gpu-acceleration-app/ios/gpu-acceleration/Preview Content/Preview Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration/Preview Content/Preview Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/gpu-acceleration-app/ios/gpu-acceleration/gpu-accelerationApp.swift b/gpu-acceleration-app/ios/gpu-acceleration/gpu-accelerationApp.swift deleted file mode 100644 index db434e92..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration/gpu-accelerationApp.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// mopro_testApp.swift -// mopro-test -// -// Created by Chance on 6/25/24. -// - -import SwiftUI - -@main -struct gpu_accelerationApp: App { - var body: some Scene { - WindowGroup { - MSMBenchmarkView() - } - } -} diff --git a/gpu-acceleration-app/ios/gpu-acceleration/mopro.swift b/gpu-acceleration-app/ios/gpu-acceleration/mopro.swift deleted file mode 100644 index 1ef7b478..00000000 --- a/gpu-acceleration-app/ios/gpu-acceleration/mopro.swift +++ /dev/null @@ -1,812 +0,0 @@ -// This file was autogenerated by some hot garbage in the `uniffi` crate. -// Trust me, you don't want to mess with it! -import Foundation - -// Depending on the consumer's build setup, the low-level FFI code -// might be in a separate module, or it might be compiled inline into -// this module. This is a bit of light hackery to work with both. -#if canImport(moproFFI) -import moproFFI -#endif - -fileprivate extension RustBuffer { - // Allocate a new buffer, copying the contents of a `UInt8` array. - init(bytes: [UInt8]) { - let rbuf = bytes.withUnsafeBufferPointer { ptr in - RustBuffer.from(ptr) - } - self.init(capacity: rbuf.capacity, len: rbuf.len, data: rbuf.data) - } - - static func from(_ ptr: UnsafeBufferPointer) -> RustBuffer { - try! rustCall { ffi_mopro_bindings_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) } - } - - // Frees the buffer in place. - // The buffer must not be used after this is called. - func deallocate() { - try! rustCall { ffi_mopro_bindings_rustbuffer_free(self, $0) } - } -} - -fileprivate extension ForeignBytes { - init(bufferPointer: UnsafeBufferPointer) { - self.init(len: Int32(bufferPointer.count), data: bufferPointer.baseAddress) - } -} - -// For every type used in the interface, we provide helper methods for conveniently -// lifting and lowering that type from C-compatible data, and for reading and writing -// values of that type in a buffer. - -// Helper classes/extensions that don't change. -// Someday, this will be in a library of its own. - -fileprivate extension Data { - init(rustBuffer: RustBuffer) { - // TODO: This copies the buffer. Can we read directly from a - // Rust buffer? - self.init(bytes: rustBuffer.data!, count: Int(rustBuffer.len)) - } -} - -// Define reader functionality. Normally this would be defined in a class or -// struct, but we use standalone functions instead in order to make external -// types work. -// -// With external types, one swift source file needs to be able to call the read -// method on another source file's FfiConverter, but then what visibility -// should Reader have? -// - If Reader is fileprivate, then this means the read() must also -// be fileprivate, which doesn't work with external types. -// - If Reader is internal/public, we'll get compile errors since both source -// files will try define the same type. -// -// Instead, the read() method and these helper functions input a tuple of data - -fileprivate func createReader(data: Data) -> (data: Data, offset: Data.Index) { - (data: data, offset: 0) -} - -// Reads an integer at the current offset, in big-endian order, and advances -// the offset on success. Throws if reading the integer would move the -// offset past the end of the buffer. -fileprivate func readInt(_ reader: inout (data: Data, offset: Data.Index)) throws -> T { - let range = reader.offset...size - guard reader.data.count >= range.upperBound else { - throw UniffiInternalError.bufferOverflow - } - if T.self == UInt8.self { - let value = reader.data[reader.offset] - reader.offset += 1 - return value as! T - } - var value: T = 0 - let _ = withUnsafeMutableBytes(of: &value, { reader.data.copyBytes(to: $0, from: range)}) - reader.offset = range.upperBound - return value.bigEndian -} - -// Reads an arbitrary number of bytes, to be used to read -// raw bytes, this is useful when lifting strings -fileprivate func readBytes(_ reader: inout (data: Data, offset: Data.Index), count: Int) throws -> Array { - let range = reader.offset..<(reader.offset+count) - guard reader.data.count >= range.upperBound else { - throw UniffiInternalError.bufferOverflow - } - var value = [UInt8](repeating: 0, count: count) - value.withUnsafeMutableBufferPointer({ buffer in - reader.data.copyBytes(to: buffer, from: range) - }) - reader.offset = range.upperBound - return value -} - -// Reads a float at the current offset. -fileprivate func readFloat(_ reader: inout (data: Data, offset: Data.Index)) throws -> Float { - return Float(bitPattern: try readInt(&reader)) -} - -// Reads a float at the current offset. -fileprivate func readDouble(_ reader: inout (data: Data, offset: Data.Index)) throws -> Double { - return Double(bitPattern: try readInt(&reader)) -} - -// Indicates if the offset has reached the end of the buffer. -fileprivate func hasRemaining(_ reader: (data: Data, offset: Data.Index)) -> Bool { - return reader.offset < reader.data.count -} - -// Define writer functionality. Normally this would be defined in a class or -// struct, but we use standalone functions instead in order to make external -// types work. See the above discussion on Readers for details. - -fileprivate func createWriter() -> [UInt8] { - return [] -} - -fileprivate func writeBytes(_ writer: inout [UInt8], _ byteArr: S) where S: Sequence, S.Element == UInt8 { - writer.append(contentsOf: byteArr) -} - -// Writes an integer in big-endian order. -// -// Warning: make sure what you are trying to write -// is in the correct type! -fileprivate func writeInt(_ writer: inout [UInt8], _ value: T) { - var value = value.bigEndian - withUnsafeBytes(of: &value) { writer.append(contentsOf: $0) } -} - -fileprivate func writeFloat(_ writer: inout [UInt8], _ value: Float) { - writeInt(&writer, value.bitPattern) -} - -fileprivate func writeDouble(_ writer: inout [UInt8], _ value: Double) { - writeInt(&writer, value.bitPattern) -} - -// Protocol for types that transfer other types across the FFI. This is -// analogous go the Rust trait of the same name. -fileprivate protocol FfiConverter { - associatedtype FfiType - associatedtype SwiftType - - static func lift(_ value: FfiType) throws -> SwiftType - static func lower(_ value: SwiftType) -> FfiType - static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType - static func write(_ value: SwiftType, into buf: inout [UInt8]) -} - -// Types conforming to `Primitive` pass themselves directly over the FFI. -fileprivate protocol FfiConverterPrimitive: FfiConverter where FfiType == SwiftType { } - -extension FfiConverterPrimitive { - public static func lift(_ value: FfiType) throws -> SwiftType { - return value - } - - public static func lower(_ value: SwiftType) -> FfiType { - return value - } -} - -// Types conforming to `FfiConverterRustBuffer` lift and lower into a `RustBuffer`. -// Used for complex types where it's hard to write a custom lift/lower. -fileprivate protocol FfiConverterRustBuffer: FfiConverter where FfiType == RustBuffer {} - -extension FfiConverterRustBuffer { - public static func lift(_ buf: RustBuffer) throws -> SwiftType { - var reader = createReader(data: Data(rustBuffer: buf)) - let value = try read(from: &reader) - if hasRemaining(reader) { - throw UniffiInternalError.incompleteData - } - buf.deallocate() - return value - } - - public static func lower(_ value: SwiftType) -> RustBuffer { - var writer = createWriter() - write(value, into: &writer) - return RustBuffer(bytes: writer) - } -} -// An error type for FFI errors. These errors occur at the UniFFI level, not -// the library level. -fileprivate enum UniffiInternalError: LocalizedError { - case bufferOverflow - case incompleteData - case unexpectedOptionalTag - case unexpectedEnumCase - case unexpectedNullPointer - case unexpectedRustCallStatusCode - case unexpectedRustCallError - case unexpectedStaleHandle - case rustPanic(_ message: String) - - public var errorDescription: String? { - switch self { - case .bufferOverflow: return "Reading the requested value would read past the end of the buffer" - case .incompleteData: return "The buffer still has data after lifting its containing value" - case .unexpectedOptionalTag: return "Unexpected optional tag; should be 0 or 1" - case .unexpectedEnumCase: return "Raw enum value doesn't match any cases" - case .unexpectedNullPointer: return "Raw pointer value was null" - case .unexpectedRustCallStatusCode: return "Unexpected RustCallStatus code" - case .unexpectedRustCallError: return "CALL_ERROR but no errorClass specified" - case .unexpectedStaleHandle: return "The object in the handle map has been dropped already" - case let .rustPanic(message): return message - } - } -} - -fileprivate let CALL_SUCCESS: Int8 = 0 -fileprivate let CALL_ERROR: Int8 = 1 -fileprivate let CALL_PANIC: Int8 = 2 -fileprivate let CALL_CANCELLED: Int8 = 3 - -fileprivate extension RustCallStatus { - init() { - self.init( - code: CALL_SUCCESS, - errorBuf: RustBuffer.init( - capacity: 0, - len: 0, - data: nil - ) - ) - } -} - -private func rustCall(_ callback: (UnsafeMutablePointer) -> T) throws -> T { - try makeRustCall(callback, errorHandler: nil) -} - -private func rustCallWithError( - _ errorHandler: @escaping (RustBuffer) throws -> Error, - _ callback: (UnsafeMutablePointer) -> T) throws -> T { - try makeRustCall(callback, errorHandler: errorHandler) -} - -private func makeRustCall( - _ callback: (UnsafeMutablePointer) -> T, - errorHandler: ((RustBuffer) throws -> Error)? -) throws -> T { - uniffiEnsureInitialized() - var callStatus = RustCallStatus.init() - let returnedVal = callback(&callStatus) - try uniffiCheckCallStatus(callStatus: callStatus, errorHandler: errorHandler) - return returnedVal -} - -private func uniffiCheckCallStatus( - callStatus: RustCallStatus, - errorHandler: ((RustBuffer) throws -> Error)? -) throws { - switch callStatus.code { - case CALL_SUCCESS: - return - - case CALL_ERROR: - if let errorHandler = errorHandler { - throw try errorHandler(callStatus.errorBuf) - } else { - callStatus.errorBuf.deallocate() - throw UniffiInternalError.unexpectedRustCallError - } - - case CALL_PANIC: - // When the rust code sees a panic, it tries to construct a RustBuffer - // with the message. But if that code panics, then it just sends back - // an empty buffer. - if callStatus.errorBuf.len > 0 { - throw UniffiInternalError.rustPanic(try FfiConverterString.lift(callStatus.errorBuf)) - } else { - callStatus.errorBuf.deallocate() - throw UniffiInternalError.rustPanic("Rust panic") - } - - case CALL_CANCELLED: - throw CancellationError() - - default: - throw UniffiInternalError.unexpectedRustCallStatusCode - } -} - -// Public interface members begin here. - - -fileprivate struct FfiConverterBool : FfiConverter { - typealias FfiType = Int8 - typealias SwiftType = Bool - - public static func lift(_ value: Int8) throws -> Bool { - return value != 0 - } - - public static func lower(_ value: Bool) -> Int8 { - return value ? 1 : 0 - } - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Bool { - return try lift(readInt(&buf)) - } - - public static func write(_ value: Bool, into buf: inout [UInt8]) { - writeInt(&buf, lower(value)) - } -} - -fileprivate struct FfiConverterString: FfiConverter { - typealias SwiftType = String - typealias FfiType = RustBuffer - - public static func lift(_ value: RustBuffer) throws -> String { - defer { - value.deallocate() - } - if value.data == nil { - return String() - } - let bytes = UnsafeBufferPointer(start: value.data!, count: Int(value.len)) - return String(bytes: bytes, encoding: String.Encoding.utf8)! - } - - public static func lower(_ value: String) -> RustBuffer { - return value.utf8CString.withUnsafeBufferPointer { ptr in - // The swift string gives us int8_t, we want uint8_t. - ptr.withMemoryRebound(to: UInt8.self) { ptr in - // The swift string gives us a trailing null byte, we don't want it. - let buf = UnsafeBufferPointer(rebasing: ptr.prefix(upTo: ptr.count - 1)) - return RustBuffer.from(buf) - } - } - } - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> String { - let len: Int32 = try readInt(&buf) - return String(bytes: try readBytes(&buf, count: Int(len)), encoding: String.Encoding.utf8)! - } - - public static func write(_ value: String, into buf: inout [UInt8]) { - let len = Int32(value.utf8.count) - writeInt(&buf, len) - writeBytes(&buf, value.utf8) - } -} - -fileprivate struct FfiConverterData: FfiConverterRustBuffer { - typealias SwiftType = Data - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Data { - let len: Int32 = try readInt(&buf) - return Data(try readBytes(&buf, count: Int(len))) - } - - public static func write(_ value: Data, into buf: inout [UInt8]) { - let len = Int32(value.count) - writeInt(&buf, len) - writeBytes(&buf, value) - } -} - - -public struct G1 { - public var x: String - public var y: String - - // Default memberwise initializers are never public by default, so we - // declare one manually. - public init(x: String, y: String) { - self.x = x - self.y = y - } -} - - -extension G1: Equatable, Hashable { - public static func ==(lhs: G1, rhs: G1) -> Bool { - if lhs.x != rhs.x { - return false - } - if lhs.y != rhs.y { - return false - } - return true - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(x) - hasher.combine(y) - } -} - - -public struct FfiConverterTypeG1: FfiConverterRustBuffer { - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> G1 { - return try G1( - x: FfiConverterString.read(from: &buf), - y: FfiConverterString.read(from: &buf) - ) - } - - public static func write(_ value: G1, into buf: inout [UInt8]) { - FfiConverterString.write(value.x, into: &buf) - FfiConverterString.write(value.y, into: &buf) - } -} - - -public func FfiConverterTypeG1_lift(_ buf: RustBuffer) throws -> G1 { - return try FfiConverterTypeG1.lift(buf) -} - -public func FfiConverterTypeG1_lower(_ value: G1) -> RustBuffer { - return FfiConverterTypeG1.lower(value) -} - - -public struct G2 { - public var x: [String] - public var y: [String] - - // Default memberwise initializers are never public by default, so we - // declare one manually. - public init(x: [String], y: [String]) { - self.x = x - self.y = y - } -} - - -extension G2: Equatable, Hashable { - public static func ==(lhs: G2, rhs: G2) -> Bool { - if lhs.x != rhs.x { - return false - } - if lhs.y != rhs.y { - return false - } - return true - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(x) - hasher.combine(y) - } -} - - -public struct FfiConverterTypeG2: FfiConverterRustBuffer { - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> G2 { - return try G2( - x: FfiConverterSequenceString.read(from: &buf), - y: FfiConverterSequenceString.read(from: &buf) - ) - } - - public static func write(_ value: G2, into buf: inout [UInt8]) { - FfiConverterSequenceString.write(value.x, into: &buf) - FfiConverterSequenceString.write(value.y, into: &buf) - } -} - - -public func FfiConverterTypeG2_lift(_ buf: RustBuffer) throws -> G2 { - return try FfiConverterTypeG2.lift(buf) -} - -public func FfiConverterTypeG2_lower(_ value: G2) -> RustBuffer { - return FfiConverterTypeG2.lower(value) -} - - -public struct GenerateProofResult { - public var proof: Data - public var inputs: Data - - // Default memberwise initializers are never public by default, so we - // declare one manually. - public init(proof: Data, inputs: Data) { - self.proof = proof - self.inputs = inputs - } -} - - -extension GenerateProofResult: Equatable, Hashable { - public static func ==(lhs: GenerateProofResult, rhs: GenerateProofResult) -> Bool { - if lhs.proof != rhs.proof { - return false - } - if lhs.inputs != rhs.inputs { - return false - } - return true - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(proof) - hasher.combine(inputs) - } -} - - -public struct FfiConverterTypeGenerateProofResult: FfiConverterRustBuffer { - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> GenerateProofResult { - return try GenerateProofResult( - proof: FfiConverterData.read(from: &buf), - inputs: FfiConverterData.read(from: &buf) - ) - } - - public static func write(_ value: GenerateProofResult, into buf: inout [UInt8]) { - FfiConverterData.write(value.proof, into: &buf) - FfiConverterData.write(value.inputs, into: &buf) - } -} - - -public func FfiConverterTypeGenerateProofResult_lift(_ buf: RustBuffer) throws -> GenerateProofResult { - return try FfiConverterTypeGenerateProofResult.lift(buf) -} - -public func FfiConverterTypeGenerateProofResult_lower(_ value: GenerateProofResult) -> RustBuffer { - return FfiConverterTypeGenerateProofResult.lower(value) -} - - -public struct ProofCalldata { - public var a: G1 - public var b: G2 - public var c: G1 - - // Default memberwise initializers are never public by default, so we - // declare one manually. - public init(a: G1, b: G2, c: G1) { - self.a = a - self.b = b - self.c = c - } -} - - -extension ProofCalldata: Equatable, Hashable { - public static func ==(lhs: ProofCalldata, rhs: ProofCalldata) -> Bool { - if lhs.a != rhs.a { - return false - } - if lhs.b != rhs.b { - return false - } - if lhs.c != rhs.c { - return false - } - return true - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(a) - hasher.combine(b) - hasher.combine(c) - } -} - - -public struct FfiConverterTypeProofCalldata: FfiConverterRustBuffer { - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> ProofCalldata { - return try ProofCalldata( - a: FfiConverterTypeG1.read(from: &buf), - b: FfiConverterTypeG2.read(from: &buf), - c: FfiConverterTypeG1.read(from: &buf) - ) - } - - public static func write(_ value: ProofCalldata, into buf: inout [UInt8]) { - FfiConverterTypeG1.write(value.a, into: &buf) - FfiConverterTypeG2.write(value.b, into: &buf) - FfiConverterTypeG1.write(value.c, into: &buf) - } -} - - -public func FfiConverterTypeProofCalldata_lift(_ buf: RustBuffer) throws -> ProofCalldata { - return try FfiConverterTypeProofCalldata.lift(buf) -} - -public func FfiConverterTypeProofCalldata_lower(_ value: ProofCalldata) -> RustBuffer { - return FfiConverterTypeProofCalldata.lower(value) -} - -public enum MoproError { - - - - // Simple error enums only carry a message - case CircomError(message: String) - - // Simple error enums only carry a message - case Halo2Error(message: String) - - - fileprivate static func uniffiErrorHandler(_ error: RustBuffer) throws -> Error { - return try FfiConverterTypeMoproError.lift(error) - } -} - - -public struct FfiConverterTypeMoproError: FfiConverterRustBuffer { - typealias SwiftType = MoproError - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MoproError { - let variant: Int32 = try readInt(&buf) - switch variant { - - - - - case 1: return .CircomError( - message: try FfiConverterString.read(from: &buf) - ) - - case 2: return .Halo2Error( - message: try FfiConverterString.read(from: &buf) - ) - - - default: throw UniffiInternalError.unexpectedEnumCase - } - } - - public static func write(_ value: MoproError, into buf: inout [UInt8]) { - switch value { - - - - - case .CircomError(_ /* message is ignored*/): - writeInt(&buf, Int32(1)) - case .Halo2Error(_ /* message is ignored*/): - writeInt(&buf, Int32(2)) - - - } - } -} - - -extension MoproError: Equatable, Hashable {} - -extension MoproError: Error { } - -fileprivate struct FfiConverterSequenceString: FfiConverterRustBuffer { - typealias SwiftType = [String] - - public static func write(_ value: [String], into buf: inout [UInt8]) { - let len = Int32(value.count) - writeInt(&buf, len) - for item in value { - FfiConverterString.write(item, into: &buf) - } - } - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [String] { - let len: Int32 = try readInt(&buf) - var seq = [String]() - seq.reserveCapacity(Int(len)) - for _ in 0 ..< len { - seq.append(try FfiConverterString.read(from: &buf)) - } - return seq - } -} - -fileprivate struct FfiConverterDictionaryStringSequenceString: FfiConverterRustBuffer { - public static func write(_ value: [String: [String]], into buf: inout [UInt8]) { - let len = Int32(value.count) - writeInt(&buf, len) - for (key, value) in value { - FfiConverterString.write(key, into: &buf) - FfiConverterSequenceString.write(value, into: &buf) - } - } - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [String: [String]] { - let len: Int32 = try readInt(&buf) - var dict = [String: [String]]() - dict.reserveCapacity(Int(len)) - for _ in 0.. GenerateProofResult { - return try FfiConverterTypeGenerateProofResult.lift( - try rustCallWithError(FfiConverterTypeMoproError.lift) { - uniffi_mopro_bindings_fn_func_generate_circom_proof( - FfiConverterString.lower(zkeyPath), - FfiConverterDictionaryStringSequenceString.lower(circuitInputs),$0) -} - ) -} - -public func generateHalo2Proof(circuitInputs: [String: [String]]) throws -> GenerateProofResult { - return try FfiConverterTypeGenerateProofResult.lift( - try rustCallWithError(FfiConverterTypeMoproError.lift) { - uniffi_mopro_bindings_fn_func_generate_halo2_proof( - FfiConverterDictionaryStringSequenceString.lower(circuitInputs),$0) -} - ) -} - -public func toEthereumInputs(inputs: Data) -> [String] { - return try! FfiConverterSequenceString.lift( - try! rustCall() { - uniffi_mopro_bindings_fn_func_to_ethereum_inputs( - FfiConverterData.lower(inputs),$0) -} - ) -} - -public func toEthereumProof(proof: Data) -> ProofCalldata { - return try! FfiConverterTypeProofCalldata.lift( - try! rustCall() { - uniffi_mopro_bindings_fn_func_to_ethereum_proof( - FfiConverterData.lower(proof),$0) -} - ) -} - -public func verifyCircomProof(zkeyPath: String, proof: Data, publicInput: Data) throws -> Bool { - return try FfiConverterBool.lift( - try rustCallWithError(FfiConverterTypeMoproError.lift) { - uniffi_mopro_bindings_fn_func_verify_circom_proof( - FfiConverterString.lower(zkeyPath), - FfiConverterData.lower(proof), - FfiConverterData.lower(publicInput),$0) -} - ) -} - -public func verifyHalo2Proof(proof: Data, publicInput: Data) throws -> Bool { - return try FfiConverterBool.lift( - try rustCallWithError(FfiConverterTypeMoproError.lift) { - uniffi_mopro_bindings_fn_func_verify_halo2_proof( - FfiConverterData.lower(proof), - FfiConverterData.lower(publicInput),$0) -} - ) -} - -private enum InitializationResult { - case ok - case contractVersionMismatch - case apiChecksumMismatch -} -// Use a global variables to perform the versioning checks. Swift ensures that -// the code inside is only computed once. -private var initializationResult: InitializationResult { - // Get the bindings contract version from our ComponentInterface - let bindings_contract_version = 24 - // Get the scaffolding contract version by calling the into the dylib - let scaffolding_contract_version = ffi_mopro_bindings_uniffi_contract_version() - if bindings_contract_version != scaffolding_contract_version { - return InitializationResult.contractVersionMismatch - } - if (uniffi_mopro_bindings_checksum_func_generate_circom_proof() != 36365) { - return InitializationResult.apiChecksumMismatch - } - if (uniffi_mopro_bindings_checksum_func_generate_halo2_proof() != 57994) { - return InitializationResult.apiChecksumMismatch - } - if (uniffi_mopro_bindings_checksum_func_to_ethereum_inputs() != 35703) { - return InitializationResult.apiChecksumMismatch - } - if (uniffi_mopro_bindings_checksum_func_to_ethereum_proof() != 52508) { - return InitializationResult.apiChecksumMismatch - } - if (uniffi_mopro_bindings_checksum_func_verify_circom_proof() != 63612) { - return InitializationResult.apiChecksumMismatch - } - if (uniffi_mopro_bindings_checksum_func_verify_halo2_proof() != 45481) { - return InitializationResult.apiChecksumMismatch - } - - return InitializationResult.ok -} - -private func uniffiEnsureInitialized() { - switch initializationResult { - case .ok: - break - case .contractVersionMismatch: - fatalError("UniFFI contract version mismatch: try cleaning and rebuilding your project") - case .apiChecksumMismatch: - fatalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } -} \ No newline at end of file diff --git a/gpu-acceleration-app/src/bin/ios.rs b/gpu-acceleration-app/src/bin/ios.rs deleted file mode 100644 index 4a504e90..00000000 --- a/gpu-acceleration-app/src/bin/ios.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - mopro_ffi::app_config::ios::build(); -} diff --git a/gpu-acceleration-app/src/lib.rs b/gpu-acceleration-app/src/lib.rs deleted file mode 100644 index a3ae2c92..00000000 --- a/gpu-acceleration-app/src/lib.rs +++ /dev/null @@ -1,12 +0,0 @@ -use mopro_ffi::{app, WtnsFn}; - -rust_witness::witness!(multiplier3); - -app!(); - -fn zkey_witness_map(name: &str) -> Result { - match name { - "multiplier3_final.zkey" => Ok(multiplier3_witness), - _ => Err(MoproError::CircomError("Unknown circuit name".to_string())), - } -} diff --git a/gpu-acceleration-app/tests/bindings/test_mopro.swift b/gpu-acceleration-app/tests/bindings/test_mopro.swift deleted file mode 100644 index e1ae8f64..00000000 --- a/gpu-acceleration-app/tests/bindings/test_mopro.swift +++ /dev/null @@ -1,66 +0,0 @@ -import mopro -import Foundation - -func serializeOutputs(_ stringArray: [String]) -> [UInt8] { - var bytesArray: [UInt8] = [] - let length = stringArray.count - var littleEndianLength = length.littleEndian - let targetLength = 32 - withUnsafeBytes(of: &littleEndianLength) { - bytesArray.append(contentsOf: $0) - } - for value in stringArray { - // TODO: should handle 254-bit input - var littleEndian = Int32(value)!.littleEndian - var byteLength = 0 - withUnsafeBytes(of: &littleEndian) { - bytesArray.append(contentsOf: $0) - byteLength = byteLength + $0.count - } - if byteLength < targetLength { - let paddingCount = targetLength - byteLength - let paddingArray = [UInt8](repeating: 0, count: paddingCount) - bytesArray.append(contentsOf: paddingArray) - } - } - return bytesArray -} - -do { - let zkeyPath = "../../../test-vectors/circom/multiplier3_final.zkey" - - // Prepare inputs - var inputs = [String: [String]]() - let a = 3 - let b = 5 - let c = a*b - inputs["a"] = [String(a)] - inputs["b"] = [String(b)] - - // Expected outputs - let outputs: [String] = [String(c), String(a)] - let expectedOutput: [UInt8] = serializeOutputs(outputs) - - // Generate Proof - let generateProofResult = try generateCircomProof(zkeyPath: zkeyPath, circuitInputs: inputs) - assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") - - // Verify Proof - assert(Data(expectedOutput) == generateProofResult.inputs, "Circuit outputs mismatch the expected outputs") - - let isValid = try verifyCircomProof(zkeyPath: zkeyPath, proof: generateProofResult.proof, publicInput: generateProofResult.inputs) - assert(isValid, "Proof verification should succeed") - - // Convert proof to Ethereum compatible proof - let convertProofResult = toEthereumProof(proof: generateProofResult.proof) - let convertInputsResult = toEthereumInputs(inputs: generateProofResult.inputs) - assert(convertProofResult.a.x.count > 0, "Proof should not be empty") - assert(convertInputsResult.count > 0, "Inputs should not be empty") - -} catch let error as MoproError { - print("MoproError: \(error)") - throw error -} catch { - print("Unexpected error: \(error)") - throw error -} diff --git a/gpu-acceleration-app/tests/test_generated_bindings.rs b/gpu-acceleration-app/tests/test_generated_bindings.rs deleted file mode 100644 index 30b82d65..00000000 --- a/gpu-acceleration-app/tests/test_generated_bindings.rs +++ /dev/null @@ -1,3 +0,0 @@ -uniffi::build_foreign_language_testcases!( - "tests/bindings/test_mopro.swift", -); diff --git a/guide-for-extending-ffi.md b/guide-for-extending-ffi.md deleted file mode 100644 index 05843d9b..00000000 --- a/guide-for-extending-ffi.md +++ /dev/null @@ -1,144 +0,0 @@ -# Guide for Extending Custom Functions Through Mopro - -This guide will show you how to embed your own function into `mopro-ffi`, successfully generate either Swift or Kotlin bindings, and create a corresponding static library (e.g. xcframework if your target is iOS). - -## Prerequisites - -Before getting started, ensure you have: -1. Created your own function logic in Rust. -2. Forked the `mopro` repository. - -## Import Your Crates in `mopro-ffi/src/lib.rs` - -To generate Rust scaffolding, import your crates inside the `lib.rs` file in `mopro-ffi`. We recommend creating a replicate function in `lib.rs` that calls your functions from the imported crates. Then, create the same function inside the macro to get the relevant functions into scope and call FFI. - -For example: - -```rust -// mopro-ffi/src/lib.rs - -use your_crates; - -pub fn your_function(a: u32, b: u32) -> Result { - // Function logic - your_crates::some_function() -} - -#[macro_export] -macro_rules! app { - () => { - // Remember to import the struct here if you are using a custom one - use mopro_ffi::{BenchmarkResult, GenerateProofResult, MoproError, ProofCalldata, G1, G2}; - use std::collections::HashMap; - - fn your_function(a: u32, b: u32) -> Result { - mopro_ffi::your_function(a, b) - } - - uniffi::include_scaffolding!("mopro"); - }; -} -``` - -### Using Feature Flags - -If you are using a feature flag, handle the situation when the flag is not activated. - -For example: - -```rust -// mopro-ffi/src/lib.rs - -use your_crates; - -#[cfg(feature = "your-feature")] -pub fn your_function(a: u32, b: u32) -> Result { - // Function logic - your_crates::some_function() -} - -#[cfg(not(feature = "your-feature"))] -pub fn your_function(_: u32, _: u32) -> Result { - Err(MoproError::YourCustomError("something went wrong".to_string())) -} -``` - -## Extend the UDL File for Custom Functions - -Modify `mopro-ffi/src/mopro.udl` to define your functions and variable types. Follow the [uniffi documentation](https://mozilla.github.io/uniffi-rs/0.28/udl/builtin_types.html) for more details. - -For example: - -```udl -// mopro-ffi/src/mopro.udl - -namespace mopro { - // ... other definitions - - [Throws=MoproError] - boolean your_function(u32 a, u32 b); -}; - -dictionary YourStruct { - u32 a; - u32 b; -}; -``` - -## Build Bindings for Swift and Kotlin - -First, ensure the library name in `mopro-ffi/Cargo.toml` is "mopro_bindings". This guarantees the configuration is correctly set up for binding generation. - -```toml -# mopro-ffi/Cargo.toml - -[lib] -name = "mopro_bindings" # Make sure the lib name is correct -``` - -Next, run the `mopro-ffi/build_bindings.sh` script to generate bindings for your custom functions. Remember to re-run it every time you modify the UDL file and push the resulting output to your repo. - -## Access Custom Mopro Repo from Your App - -Congratulations! Your custom functions have been successfully added to `mopro`. Now, let's integrate `mopro` into your app project. If you don't have an app project yet, we recommend forking one from [mopro-app](https://github.com/chancehudson/mopro-app). - -First, follow the steps in [Mopro/Rust-setup](https://zkmopro.org/docs/getting-started/rust-setup) to create a valid setup. - -Next, include your forked `mopro` dependencies and [uniffi](https://crates.io/crates/uniffi) in your Rust directory. - -```toml -[package] -name = "your_app" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["lib", "cdylib", "staticlib"] -name = "mopro_bindings" # This library name should not be changed - -[[bin]] -name = "ios" - -[features] -default = ["mopro-ffi/circom"] - -[dependencies] -# ... other dependencies -mopro-ffi = { git = "https://github.com/zkmopro/mopro.git", branch = "feat/integrate-gpu-acceleration", features = ["gpu-acceleration"] } -uniffi = { version = "0.28", features = ["cli"] } - -[build-dependencies] -# ... other dependencies -mopro-ffi = { git = "https://github.com/zkmopro/mopro.git", branch = "feat/integrate-gpu-acceleration", features = ["gpu-acceleration"] } -uniffi = { version = "0.28", features = ["build"] } -``` - -Finally, run the following command in the terminal to build the static library. - -```sh -# CONFIGURATION is either debug or release -CONFIGURATION=release cargo run --bin ios -CONFIGURATION=debug cargo run --bin ios -``` - -Now, you can open `your-app/ios/your-app.xcodeproj` to check that your custom functions have been successfully bound to your app. diff --git a/mopro-msm/build.rs b/mopro-msm/build.rs index c6e9d4f0..7c23a2fe 100644 --- a/mopro-msm/build.rs +++ b/mopro-msm/build.rs @@ -1,116 +1,152 @@ -use std::{env, path::Path, process::Command}; - -fn main() { - compile_shaders(); +use std::env; +use std::fs; +use std::io::Write; +use std::path::{Path, PathBuf}; +use std::process::Command; + +fn main() -> std::io::Result<()> { + compile_shaders()?; + Ok(()) } -fn compile_shaders() { - let shader_dir = "src/msm/metal/shader/"; - let out_dir = env::var("OUT_DIR").unwrap(); - - // List your Metal shaders here. - let shaders = vec!["all.metal"]; - - let shaders_to_check = vec!["all.metal", "msm.h.metal"]; - - let mut air_files = vec![]; - - // Step 1: Compile every shader to AIR format - for shader in &shaders { - let shader_path = Path::new(shader_dir).join(shader); - let air_output = Path::new(&out_dir).join(format!("{}.air", shader)); - - let mut args = vec![ - "-sdk", - get_sdk(), - "metal", - "-c", - shader_path.to_str().unwrap(), - "-o", - air_output.to_str().unwrap(), - ]; - - if cfg!(feature = "profiling-release") { - args.push("-frecord-sources"); - } - - // Compile shader into .air files - let status = Command::new("xcrun") - .args(&args) - .status() - .expect("Shader compilation failed"); - - if !status.success() { - panic!("Shader compilation failed for {}", shader); - } - - air_files.push(air_output); +fn compile_shaders() -> std::io::Result<()> { + let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()); + let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); + let shader_out_dir = out_dir.join("shaders"); + fs::create_dir_all(&shader_out_dir)?; + + // Check if we should compile all shaders for testing + // Check environment variable first, then check if this is a test build + let compile_all_shaders = env::var("MSM_COMPILE_ALL_SHADERS") + .map(|v| v == "1") + .unwrap_or(false) + || env::var("CARGO_CFG_TEST").is_ok() + || env::var("PROFILE").map(|p| p == "test").unwrap_or(false) + || env::args().any(|arg| arg.contains("test")); + + let shader_root = manifest_dir + .join("src") + .join("msm") + .join("metal_msm") + .join("shader"); + + let mut metal_paths = Vec::new(); + + if compile_all_shaders { + println!("cargo:warning=Compiling ALL Metal shaders for testing"); + // Scan entire shader directory for all .metal files + visit_dirs(&shader_root, &mut metal_paths)?; + // Filter out .lib files and keep only .metal files + metal_paths.retain(|path| { + let path_str = path.to_string_lossy(); + path.extension().and_then(|e| e.to_str()) == Some("metal") + && !path_str.contains(".lib") + && !path_str.contains(".metallib") + }); + } else { + println!("cargo:warning=Compiling only MSM production shaders"); + // Only scan cuzk directory for MSM shaders + let cuzk_root = shader_root.join("cuzk"); + visit_dirs(&cuzk_root, &mut metal_paths)?; + // Filter only the MSM kernels + metal_paths.retain(|path| { + path.file_name() + .and_then(|n| n.to_str()) + .map(|name| { + name.starts_with("convert_point") + || name.starts_with("barrett_reduction") + || name.starts_with("pbpr") + || name.starts_with("smvp") + || name.starts_with("transpose") + }) + .unwrap_or(false) + }); } - // Step 2: Link all the .air files into a Metallib archive - let metallib_output = Path::new(&out_dir).join("msm.metallib"); - - let mut metallib_args = vec![ - "-sdk", - get_sdk(), - "metal", - "-o", - metallib_output.to_str().unwrap(), - ]; - - if cfg!(feature = "profiling-release") { - metallib_args.push("-frecord-sources"); + if metal_paths.is_empty() { + panic!("No Metal shader files found to compile"); } - for air_file in &air_files { - metallib_args.push(air_file.to_str().unwrap()); + println!( + "cargo:warning=Found {} Metal shaders to compile", + metal_paths.len() + ); + for path in &metal_paths { + println!("cargo:warning=Including shader: {}", path.display()); } + // Combine selected kernels into one .metal file + let combined = shader_out_dir.join("msm_combined.metal"); + let mut combined_src = String::new(); + combined_src.push_str("#include \n#include \n"); + for path in &metal_paths { + let inc = path.to_str().unwrap(); + combined_src.push_str(&format!("#include \"{}\"\n", inc)); + println!("cargo:rerun-if-changed={}", inc); + } + fs::write(&combined, &combined_src)?; + + // Compile combined source to AIR + let target = env::var("TARGET").unwrap_or_default(); + let sdk = if target.contains("apple-ios") { + "iphoneos" + } else { + "macosx" + }; + let air = shader_out_dir.join("msm.air"); let status = Command::new("xcrun") - .args(&metallib_args) + .args(&[ + "-sdk", + sdk, + "metal", + "-c", + combined.to_str().unwrap(), + "-o", + air.to_str().unwrap(), + ]) .status() - .expect("Failed to link shaders into metallib"); - + .expect("Failed to invoke metal"); if !status.success() { - panic!("Failed to link shaders into metallib"); + panic!("Metal compile failed"); } - let symbols_args = vec![ - "metal-dsymutil", - "-flat", - "-remove-source", - metallib_output.to_str().unwrap(), - ]; - + // Link AIR into msm.metallib + let msm_lib = shader_out_dir.join("msm.metallib"); let status = Command::new("xcrun") - .args(&symbols_args) + .args(&[ + "-sdk", + sdk, + "metallib", + air.to_str().unwrap(), + "-o", + msm_lib.to_str().unwrap(), + ]) .status() - .expect("Failed to extract symbols"); - + .expect("Failed to invoke metallib"); if !status.success() { - panic!("Failed to extract symbols"); - } - - // Inform cargo to watch all shader files for changes - for shader in &shaders_to_check { - let shader_path = Path::new(shader_dir).join(shader); - println!("cargo:rerun-if-changed={}", shader_path.to_str().unwrap()); + panic!("Metallib linking failed"); } -} -#[cfg(feature = "macos")] -fn get_sdk() -> &'static str { - "macosx" + // Emit a single built_shaders.rs with embedded msm.metallib + let dest = out_dir.join("built_shaders.rs"); + let mut f = fs::File::create(&dest)?; + writeln!( + f, + "pub const MSM_METALLIB: &[u8] = include_bytes!(concat!(env!(\"OUT_DIR\"), \"/shaders/msm.metallib\"));" + )?; + Ok(()) } -#[cfg(not(feature = "macos"))] -#[cfg(feature = "ios")] -fn get_sdk() -> &'static str { - "iphoneos" -} - -#[cfg(not(feature = "macos"))] -#[cfg(not(feature = "ios"))] -fn get_sdk() -> &'static str { - panic!("one of the features macos or ios needs to be enabled"); +fn visit_dirs(dir: &Path, paths: &mut Vec) -> std::io::Result<()> { + if dir.is_dir() { + for entry in fs::read_dir(dir)? { + let p = entry?.path(); + if p.is_dir() { + visit_dirs(&p, paths)?; + } else if p.extension().and_then(|e| e.to_str()) == Some("metal") { + paths.push(p); + } + } + } + Ok(()) } diff --git a/mopro-msm/src/msm/metal_msm/host/shader.rs b/mopro-msm/src/msm/metal_msm/host/shader.rs index e63b1153..988c2b97 100644 --- a/mopro-msm/src/msm/metal_msm/host/shader.rs +++ b/mopro-msm/src/msm/metal_msm/host/shader.rs @@ -21,8 +21,6 @@ use ark_ff::{BigInt, PrimeField, Zero}; use num_bigint::BigUint; use std::fs; use std::path::PathBuf; -use std::process::Command; -use std::string::String; macro_rules! write_constant_array { ($data:expr, $name:expr, $values:expr, $size:expr) => { @@ -36,108 +34,6 @@ macro_rules! write_constant_array { }; } -/// Get the shader directory path using CARGO_MANIFEST_DIR for proper OS file location -/// This function provides robust path resolution that works across different build environments -pub fn get_shader_dir() -> PathBuf { - let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - let shader_path = manifest_dir - .join("src") - .join("msm") - .join("metal_msm") - .join("shader"); - - // Verify the path exists, if not try alternative locations - if shader_path.exists() { - shader_path - } else { - // Fallback: try relative path from workspace root - let workspace_shader_path = manifest_dir - .parent() // go up one level from mopro-msm to workspace root - .unwrap_or(&manifest_dir) - .join("mopro-msm") - .join("src") - .join("msm") - .join("metal_msm") - .join("shader"); - - if workspace_shader_path.exists() { - workspace_shader_path - } else { - // Final fallback: use the original path and let error handling take care of it - shader_path - } - } -} - -pub fn compile_metal(path_from_cargo_manifest_dir: &str, input_filename: &str) -> String { - let input_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join(path_from_cargo_manifest_dir) - .join(input_filename); - let c = input_path.clone().into_os_string().into_string().unwrap(); - - let lib = input_path.clone().into_os_string().into_string().unwrap(); - let lib = format!("{}.lib", lib); - - let exe = if cfg!(target_os = "ios") { - Command::new("xcrun") - .args([ - "-sdk", - "iphoneos", - "metal", - "-std=metal3.2", - "-target", - "air64-apple-ios18.0", - "-fmetal-enable-logging", - "-o", - lib.as_str(), - c.as_str(), - ]) - .output() - .expect("failed to compile") - } else if cfg!(target_os = "macos") { - let macos_version = std::process::Command::new("sw_vers") - .args(["-productVersion"]) - .output() - .ok() - .and_then(|output| String::from_utf8(output.stdout).ok()) - .and_then(|version| { - version - .trim() - .split('.') - .next() - .and_then(|major| major.parse::().ok()) - }) - .unwrap_or(0); - - let mut args = vec!["-sdk", "macosx", "metal"]; - - // Only specify Metal 3.2 for metal logging if macOS version is 15.0 or higher - if macos_version >= 15 { - args.extend([ - "-std=metal3.2", - "-target", - "air64-apple-macos15.0", - "-fmetal-enable-logging", - ]); - } - - args.extend(["-o", lib.as_str(), c.as_str()]); - - Command::new("xcrun") - .args(args) - .output() - .expect("failed to compile") - } else { - panic!("Unsupported architecture"); - }; - - if exe.stderr.len() != 0 { - panic!("{}", String::from_utf8(exe.stderr).unwrap()); - } - - lib -} - pub fn write_constants( filepath: &str, num_limbs: usize, @@ -293,16 +189,6 @@ pub fn write_constants( pub mod tests { use super::*; - #[test] - #[serial_test::serial] - pub fn test_compile() { - let lib_filepath = compile_metal( - "../mopro-msm/src/msm/metal_msm/shader", - "bigint/bigint_add_unsafe.metal", - ); - println!("{}", lib_filepath); - } - #[test] #[serial_test::serial] pub fn test_write_constants() { diff --git a/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_add_unsafe.metal b/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_add_unsafe.metal index 6b967d68..f38216aa 100644 --- a/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_add_unsafe.metal +++ b/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_add_unsafe.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "bigint.metal" -kernel void run( +kernel void test_bigint_add_unsafe( device BigInt* a [[ buffer(0) ]], device BigInt* b [[ buffer(1) ]], device BigInt* res [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_add_wide.metal b/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_add_wide.metal index 9a66517e..8b6f5191 100644 --- a/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_add_wide.metal +++ b/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_add_wide.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "bigint.metal" -kernel void run( +kernel void test_bigint_add_wide( device BigInt* a [[ buffer(0) ]], device BigInt* b [[ buffer(1) ]], device BigIntWide* res [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_sub.metal b/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_sub.metal index 95a80920..af029941 100644 --- a/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_sub.metal +++ b/mopro-msm/src/msm/metal_msm/shader/bigint/bigint_sub.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "bigint.metal" -kernel void run( +kernel void test_bigint_sub( device BigInt* a [[ buffer(0) ]], device BigInt* b [[ buffer(1) ]], device BigInt* res [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_add_2007_bl.metal b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_add_2007_bl.metal index 28d64412..8193dc18 100644 --- a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_add_2007_bl.metal +++ b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_add_2007_bl.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "jacobian.metal" -kernel void run( +kernel void test_jacobian_add_2007_bl( device BigInt* a_xr [[ buffer(0) ]], device BigInt* a_yr [[ buffer(1) ]], device BigInt* a_zr [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_dataflow_test.metal b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_dataflow_test.metal deleted file mode 100644 index 5f36113a..00000000 --- a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_dataflow_test.metal +++ /dev/null @@ -1,12 +0,0 @@ -using namespace metal; -#include -#include -#include "jacobian.metal" - -kernel void run( - constant Jacobian* points [[ buffer(0) ]], - device Jacobian* out [[ buffer(1) ]], - uint gid [[ thread_position_in_grid ]] -) { - out[gid] = jacobian_scalar_mul(points[gid], 2); -} diff --git a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_dbl_2009_l.metal b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_dbl_2009_l.metal index bc6594e4..cca7f899 100644 --- a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_dbl_2009_l.metal +++ b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_dbl_2009_l.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "jacobian.metal" -kernel void run( +kernel void test_jacobian_dbl_2009_l( device BigInt* a_xr [[ buffer(0) ]], device BigInt* a_yr [[ buffer(1) ]], device BigInt* a_zr [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_madd_2007_bl.metal b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_madd_2007_bl.metal index a66a2003..b83ccaa7 100644 --- a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_madd_2007_bl.metal +++ b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_madd_2007_bl.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "jacobian.metal" -kernel void run( +kernel void test_jacobian_madd_2007_bl( device BigInt* a_xr [[ buffer(0) ]], device BigInt* a_yr [[ buffer(1) ]], device BigInt* a_zr [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_neg.metal b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_neg.metal index 18cf0605..bb1e2037 100644 --- a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_neg.metal +++ b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_neg.metal @@ -3,7 +3,7 @@ using namespace metal; #include #include "jacobian.metal" -kernel void run( +kernel void test_jacobian_neg( device BigInt* a_xr [[ buffer(0) ]], device BigInt* a_yr [[ buffer(1) ]], device BigInt* a_zr [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_scalar_mul.metal b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_scalar_mul.metal index 1164f281..ff41d880 100644 --- a/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_scalar_mul.metal +++ b/mopro-msm/src/msm/metal_msm/shader/curve/jacobian_scalar_mul.metal @@ -3,7 +3,7 @@ using namespace metal; #include #include "jacobian.metal" -kernel void run( +kernel void test_jacobian_scalar_mul( device Jacobian& a [[ buffer(0) ]], device uint* scalar [[ buffer(1) ]], device Jacobian& result [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/cuzk/kernel_barrett_reduction.metal b/mopro-msm/src/msm/metal_msm/shader/cuzk/kernel_barrett_reduction.metal index 6f47070f..1cb44833 100644 --- a/mopro-msm/src/msm/metal_msm/shader/cuzk/kernel_barrett_reduction.metal +++ b/mopro-msm/src/msm/metal_msm/shader/cuzk/kernel_barrett_reduction.metal @@ -5,13 +5,13 @@ using namespace metal; #if defined(__METAL_VERSION__) && (__METAL_VERSION__ >= 320) #include - constant os_log logger_kernel(/*subsystem=*/"ketnel_barret_reduction", /*category=*/"metal"); - #define LOG_DEBUG(...) logger_kernel.log_debug(__VA_ARGS__) + constant os_log barrett_reduction_logger_kernel(/*subsystem=*/"barrett_reduction", /*category=*/"metal"); + #define LOG_DEBUG(...) barrett_reduction_logger_kernel.log_debug(__VA_ARGS__) #else #define LOG_DEBUG(...) ((void)0) #endif -kernel void run( +kernel void test_barrett_reduction( device BigIntExtraWide* a [[ buffer(0) ]], device BigInt* res [[ buffer(1) ]], uint gid [[ thread_position_in_grid ]] diff --git a/mopro-msm/src/msm/metal_msm/shader/cuzk/kernel_field_mul.metal b/mopro-msm/src/msm/metal_msm/shader/cuzk/kernel_field_mul.metal index a0f9c069..312fe165 100644 --- a/mopro-msm/src/msm/metal_msm/shader/cuzk/kernel_field_mul.metal +++ b/mopro-msm/src/msm/metal_msm/shader/cuzk/kernel_field_mul.metal @@ -3,7 +3,7 @@ #include "barrett_reduction.metal" using namespace metal; -kernel void run( +kernel void test_field_mul( device BigIntWide* a [[ buffer(0) ]], device BigIntWide* b [[ buffer(1) ]], device BigInt* res [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/cuzk/pbpr.metal b/mopro-msm/src/msm/metal_msm/shader/cuzk/pbpr.metal index 645a9f34..c77fa03b 100644 --- a/mopro-msm/src/msm/metal_msm/shader/cuzk/pbpr.metal +++ b/mopro-msm/src/msm/metal_msm/shader/cuzk/pbpr.metal @@ -5,8 +5,8 @@ using namespace metal; #if defined(__METAL_VERSION__) && (__METAL_VERSION__ >= 320) #include - constant os_log logger_kernel(/*subsystem=*/"pbpr", /*category=*/"metal"); - #define LOG_DEBUG(...) logger_kernel.log_debug(__VA_ARGS__) + constant os_log pbpr_logger_kernel(/*subsystem=*/"pbpr", /*category=*/"metal"); + #define LOG_DEBUG(...) pbpr_logger_kernel.log_debug(__VA_ARGS__) #else #define LOG_DEBUG(...) ((void)0) #endif @@ -45,9 +45,10 @@ kernel void bpr_stage_1( const uint subtask_idx = params[0]; const uint num_columns = params[1]; - const uint num_subtasks_per_bpr = params[2]; // Number of subtasks per shader invocation (must be power of 2). + const uint num_subtasks_per_bpr = params[2]; // Number of subtasks per shader invocation const uint num_buckets_per_subtask = num_columns / 2u; + const uint total_buckets = num_buckets_per_subtask * num_subtasks_per_bpr; // Number of buckets to reduce per thread. const uint buckets_per_thread = num_buckets_per_subtask / num_threads_per_subtask; @@ -59,6 +60,8 @@ kernel void bpr_stage_1( if (thread_id % num_threads_per_subtask != 0u) { idx = (num_threads_per_subtask - (thread_id % num_threads_per_subtask)) * buckets_per_thread + offset; } + // guard bucket bounds + if (idx >= total_buckets) { return; } Jacobian m = { .x = bucket_sum_x[idx], @@ -86,6 +89,12 @@ kernel void bpr_stage_1( bucket_sum_z[idx] = m.z; uint g_rw_idx = (subtask_idx / num_subtasks_per_bpr) * (num_threads_per_subtask * num_subtasks_per_bpr) + thread_id; + // guard write into g_points buffers + if (g_rw_idx < num_threads_per_subtask * num_subtasks_per_bpr) { + g_points_x[g_rw_idx] = g.x; + g_points_y[g_rw_idx] = g.y; + g_points_z[g_rw_idx] = g.z; + } g_points_x[g_rw_idx] = g.x; g_points_y[g_rw_idx] = g.y; g_points_z[g_rw_idx] = g.z; diff --git a/mopro-msm/src/msm/metal_msm/shader/cuzk/smvp.metal b/mopro-msm/src/msm/metal_msm/shader/cuzk/smvp.metal index 193163ae..c557208b 100644 --- a/mopro-msm/src/msm/metal_msm/shader/cuzk/smvp.metal +++ b/mopro-msm/src/msm/metal_msm/shader/cuzk/smvp.metal @@ -5,8 +5,8 @@ using namespace metal; #if defined(__METAL_VERSION__) && (__METAL_VERSION__ >= 320) #include - constant os_log logger_kernel(/*subsystem=*/"smvp", /*category=*/"metal"); - #define LOG_DEBUG(...) logger_kernel.log_debug(__VA_ARGS__) + constant os_log smvp_logger_kernel(/*subsystem=*/"smvp", /*category=*/"metal"); + #define LOG_DEBUG(...) smvp_logger_kernel.log_debug(__VA_ARGS__) #else #define LOG_DEBUG(...) ((void)0) #endif diff --git a/mopro-msm/src/msm/metal_msm/shader/field/ff_add.metal b/mopro-msm/src/msm/metal_msm/shader/field/ff_add.metal index 6840d390..4e4e7ac2 100644 --- a/mopro-msm/src/msm/metal_msm/shader/field/ff_add.metal +++ b/mopro-msm/src/msm/metal_msm/shader/field/ff_add.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "ff.metal" -kernel void run( +kernel void test_ff_add( device BigInt* a [[ buffer(0) ]], device BigInt* b [[ buffer(1) ]], device BigInt* res [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/field/ff_reduce.metal b/mopro-msm/src/msm/metal_msm/shader/field/ff_reduce.metal index f838ddce..7db86a2c 100644 --- a/mopro-msm/src/msm/metal_msm/shader/field/ff_reduce.metal +++ b/mopro-msm/src/msm/metal_msm/shader/field/ff_reduce.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "ff.metal" -kernel void run( +kernel void test_ff_reduce( device BigInt* a [[ buffer(0) ]], device BigInt* res [[ buffer(1) ]], uint gid [[ thread_position_in_grid ]] diff --git a/mopro-msm/src/msm/metal_msm/shader/field/ff_sub.metal b/mopro-msm/src/msm/metal_msm/shader/field/ff_sub.metal index 45279e84..a51d9bdb 100644 --- a/mopro-msm/src/msm/metal_msm/shader/field/ff_sub.metal +++ b/mopro-msm/src/msm/metal_msm/shader/field/ff_sub.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "ff.metal" -kernel void run( +kernel void test_ff_sub( device BigInt* a [[ buffer(0) ]], device BigInt* b [[ buffer(1) ]], device BigInt* res [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_cios.metal b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_cios.metal index 2e348818..8d111df3 100644 --- a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_cios.metal +++ b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_cios.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "mont.metal" -kernel void run( +kernel void test_mont_mul_cios( device BigInt* lhs [[ buffer(0) ]], device BigInt* rhs [[ buffer(1) ]], device BigInt* result [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_cios_benchmarks.metal b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_cios_benchmarks.metal index 7cc27f87..bd2a01a6 100644 --- a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_cios_benchmarks.metal +++ b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_cios_benchmarks.metal @@ -3,7 +3,7 @@ using namespace metal; #include #include "mont.metal" -kernel void run( +kernel void test_mont_mul_cios_benchmarks( device BigInt* lhs [[ buffer(0) ]], device BigInt* rhs [[ buffer(1) ]], device array* cost [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_modified.metal b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_modified.metal index 9f5a090e..0be881f9 100644 --- a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_modified.metal +++ b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_modified.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "mont.metal" -kernel void run( +kernel void test_mont_mul_modified( device BigInt* lhs [[ buffer(0) ]], device BigInt* rhs [[ buffer(1) ]], device BigInt* result [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_modified_benchmarks.metal b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_modified_benchmarks.metal index a87aa7e8..2a5ac962 100644 --- a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_modified_benchmarks.metal +++ b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_modified_benchmarks.metal @@ -3,7 +3,7 @@ using namespace metal; #include #include "mont.metal" -kernel void run( +kernel void test_mont_mul_modified_benchmarks( device BigInt* lhs [[ buffer(0) ]], device BigInt* rhs [[ buffer(1) ]], device array* cost [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_optimised.metal b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_optimised.metal index e79b017f..b539f9a7 100644 --- a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_optimised.metal +++ b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_optimised.metal @@ -5,7 +5,7 @@ using namespace metal; #include #include "mont.metal" -kernel void run( +kernel void test_mont_mul_optimised( device BigInt* lhs [[ buffer(0) ]], device BigInt* rhs [[ buffer(1) ]], device BigInt* result [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_optimised_benchmarks.metal b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_optimised_benchmarks.metal index 20f77e0f..3d29c772 100644 --- a/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_optimised_benchmarks.metal +++ b/mopro-msm/src/msm/metal_msm/shader/mont_backend/mont_mul_optimised_benchmarks.metal @@ -3,7 +3,7 @@ using namespace metal; #include #include "mont.metal" -kernel void run( +kernel void test_mont_mul_optimised_benchmarks( device BigInt* lhs [[ buffer(0) ]], device BigInt* rhs [[ buffer(1) ]], device array* cost [[ buffer(2) ]], diff --git a/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_add_unsafe.rs b/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_add_unsafe.rs index 758354b8..a18ce8c1 100644 --- a/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_add_unsafe.rs +++ b/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_add_unsafe.rs @@ -10,7 +10,7 @@ pub fn test_bigint_add_unsafe() { log_limb_size: 16, num_limbs: 16, shader_file: "bigint/bigint_add_unsafe.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_bigint_add_unsafe".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_add_wide.rs b/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_add_wide.rs index 018f4ac7..b3fbc6b3 100644 --- a/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_add_wide.rs +++ b/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_add_wide.rs @@ -38,7 +38,7 @@ fn run_bigint_add_test(a: &BigInt<4>, b: &BigInt<4>, expected: &BigInt<4>) { log_limb_size: 16, num_limbs: 16, shader_file: "bigint/bigint_add_wide.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_bigint_add_wide".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_sub.rs b/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_sub.rs index 753f3e7c..9c779e54 100644 --- a/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_sub.rs +++ b/mopro-msm/src/msm/metal_msm/tests/bigint/bigint_sub.rs @@ -23,7 +23,7 @@ fn run_bigint_sub_test(a: BigInt<4>, b: BigInt<4>, expected: BigInt<4>) { log_limb_size: 16, num_limbs: 16, shader_file: "bigint/bigint_sub.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_bigint_sub".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_add_2007_b1.rs b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_add_2007_b1.rs index faee7d31..90b34458 100644 --- a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_add_2007_b1.rs +++ b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_add_2007_b1.rs @@ -16,7 +16,7 @@ fn jacobian_add_2007_bl_kernel(a: G, b: G, shader_name: &str) -> G { log_limb_size, num_limbs, shader_file: format!("curve/{}.metal", shader_name), - kernel_name: "run".to_string(), + kernel_name: "test_jacobian_add_2007_bl".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_dbl_2009_l.rs b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_dbl_2009_l.rs index 4f49700e..0c00ab46 100644 --- a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_dbl_2009_l.rs +++ b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_dbl_2009_l.rs @@ -18,7 +18,7 @@ pub fn test_jacobian_dbl_2009_l() { log_limb_size, num_limbs, shader_file: "curve/jacobian_dbl_2009_l.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_jacobian_dbl_2009_l".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_madd_2007_bl.rs b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_madd_2007_bl.rs index 7c929277..85d22e1c 100644 --- a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_madd_2007_bl.rs +++ b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_madd_2007_bl.rs @@ -18,7 +18,7 @@ pub fn test_jacobian_madd_2007_bl() { log_limb_size, num_limbs, shader_file: "curve/jacobian_madd_2007_bl.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_jacobian_madd_2007_bl".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_neg.rs b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_neg.rs index 9e3d35c8..dd03343d 100644 --- a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_neg.rs +++ b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_neg.rs @@ -18,7 +18,7 @@ pub fn test_jacobian_neg() { log_limb_size, num_limbs, shader_file: "curve/jacobian_neg.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_jacobian_neg".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_scalar_mul.rs b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_scalar_mul.rs index d945bd33..ddd3e511 100644 --- a/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_scalar_mul.rs +++ b/mopro-msm/src/msm/metal_msm/tests/curve/jacobian_scalar_mul.rs @@ -7,7 +7,7 @@ use rand::{self, Rng}; use crate::msm::metal_msm::utils::limbs_conversion::GenericLimbConversion; use crate::msm::metal_msm::utils::metal_wrapper::*; -fn jacobian_scalar_mul_kernel(point: G, scalar: u32, name: &str) -> G { +fn jacobian_scalar_mul_kernel(point: G, scalar: u32) -> G { let log_limb_size = 16; let modulus_bits = BaseField::MODULUS_BIT_SIZE as u32; let num_limbs = ((modulus_bits + log_limb_size - 1) / log_limb_size) as usize; @@ -15,8 +15,8 @@ fn jacobian_scalar_mul_kernel(point: G, scalar: u32, name: &str) -> G { let config = MetalConfig { log_limb_size, num_limbs, - shader_file: format!("curve/{}.metal", name), - kernel_name: "run".to_string(), + shader_file: format!("curve/jacobian_scalar_mul.metal"), + kernel_name: "test_jacobian_scalar_mul".to_string(), }; let mut helper = MetalHelper::new(); @@ -100,7 +100,7 @@ pub fn test_jacobian_scalar_mul() { let base_point = GAffine::generator().into_group(); let scalar: u32 = 100; let expected = base_point * ScalarField::from(scalar as u64); - let result = jacobian_scalar_mul_kernel(base_point, scalar, "jacobian_scalar_mul"); + let result = jacobian_scalar_mul_kernel(base_point, scalar); assert!(expected == result); } @@ -116,6 +116,6 @@ pub fn test_jacobian_scalar_mul_random() { let rand_scalar_field = ScalarField::from(rand_scalar); let expected = point * rand_scalar_field; - let result = jacobian_scalar_mul_kernel(point, rand_scalar, "jacobian_scalar_mul"); + let result = jacobian_scalar_mul_kernel(point, rand_scalar); assert!(expected == result); } diff --git a/mopro-msm/src/msm/metal_msm/tests/cuzk/barrett_reduction.rs b/mopro-msm/src/msm/metal_msm/tests/cuzk/barrett_reduction.rs index bc8bd77d..fe74d27b 100644 --- a/mopro-msm/src/msm/metal_msm/tests/cuzk/barrett_reduction.rs +++ b/mopro-msm/src/msm/metal_msm/tests/cuzk/barrett_reduction.rs @@ -17,7 +17,7 @@ pub fn test_barrett_reduce_with_mont_params() { log_limb_size, num_limbs, shader_file: "cuzk/kernel_barrett_reduction.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_barrett_reduction".to_string(), }; let mut helper = MetalHelper::new(); @@ -70,7 +70,7 @@ pub fn test_field_mul_with_mont_params() { log_limb_size, num_limbs, shader_file: "cuzk/kernel_field_mul.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_field_mul".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/field/ff_add.rs b/mopro-msm/src/msm/metal_msm/tests/field/ff_add.rs index 50ede69f..ee5398ed 100644 --- a/mopro-msm/src/msm/metal_msm/tests/field/ff_add.rs +++ b/mopro-msm/src/msm/metal_msm/tests/field/ff_add.rs @@ -12,7 +12,7 @@ pub fn test_ff_add() { log_limb_size: 16, num_limbs: 16, shader_file: "field/ff_add.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_ff_add".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/field/ff_reduce.rs b/mopro-msm/src/msm/metal_msm/tests/field/ff_reduce.rs index 469dae82..d298466b 100644 --- a/mopro-msm/src/msm/metal_msm/tests/field/ff_reduce.rs +++ b/mopro-msm/src/msm/metal_msm/tests/field/ff_reduce.rs @@ -12,7 +12,7 @@ pub fn test_ff_reduce_a_less_than_p() { log_limb_size: 16, num_limbs: 16, shader_file: "field/ff_reduce.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_ff_reduce".to_string(), }; let mut helper = MetalHelper::new(); @@ -50,7 +50,7 @@ pub fn test_ff_reduce_a_greater_than_p_less_than_2p() { log_limb_size: 16, num_limbs: 16, shader_file: "field/ff_reduce.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_ff_reduce".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/field/ff_sub.rs b/mopro-msm/src/msm/metal_msm/tests/field/ff_sub.rs index ce57ab7c..df2c6f04 100644 --- a/mopro-msm/src/msm/metal_msm/tests/field/ff_sub.rs +++ b/mopro-msm/src/msm/metal_msm/tests/field/ff_sub.rs @@ -12,7 +12,7 @@ pub fn test_ff_sub() { log_limb_size: 16, num_limbs: 16, shader_file: "field/ff_sub.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_ff_sub".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_benchmarks.rs b/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_benchmarks.rs index f8af6b86..78056125 100644 --- a/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_benchmarks.rs +++ b/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_benchmarks.rs @@ -63,7 +63,7 @@ pub fn benchmark(log_limb_size: u32, shader_file: &str) -> Result { log_limb_size, num_limbs, shader_file: shader_file.to_string(), - kernel_name: "run".to_string(), + kernel_name: format!("test_{}_benchmarks", shader_file), }; // Get constants for this configuration diff --git a/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_cios.rs b/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_cios.rs index 4fcb0858..5aa8b6e7 100644 --- a/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_cios.rs +++ b/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_cios.rs @@ -8,6 +8,8 @@ use rand::thread_rng; #[test] #[serial_test::serial] +#[ignore] +/// Ignore by default since it requires different constants config compared to our optimized config for current implementation pub fn test_mont_mul_15() { do_test(15); } @@ -26,7 +28,7 @@ pub fn do_test(log_limb_size: u32) { log_limb_size, num_limbs, shader_file: "mont_backend/mont_mul_cios.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_mont_mul_cios".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_modified.rs b/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_modified.rs index f7cec4a2..bd50a350 100644 --- a/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_modified.rs +++ b/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_modified.rs @@ -8,6 +8,8 @@ use rand::thread_rng; #[test] #[serial_test::serial] +#[ignore] +/// Ignore by default since it requires different constants config compared to our optimized config for current implementation pub fn test_mont_mul_15() { do_test(15); } @@ -20,7 +22,7 @@ pub fn do_test(log_limb_size: u32) { log_limb_size, num_limbs, shader_file: "mont_backend/mont_mul_modified.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_mont_mul_modified".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_optimised.rs b/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_optimised.rs index 3ab2bc64..0bcc93f5 100644 --- a/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_optimised.rs +++ b/mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_optimised.rs @@ -8,6 +8,8 @@ use rand::thread_rng; #[test] #[serial_test::serial] +#[ignore] +/// Ignore by default since it requires different constants config compared to our optimized config for current implementation pub fn test_mont_mul_13() { do_test(13); } @@ -20,7 +22,7 @@ pub fn do_test(log_limb_size: u32) { log_limb_size, num_limbs, shader_file: "mont_backend/mont_mul_optimised.metal".to_string(), - kernel_name: "run".to_string(), + kernel_name: "test_mont_mul_optimised".to_string(), }; let mut helper = MetalHelper::new(); diff --git a/mopro-msm/src/msm/metal_msm/utils/metal_wrapper.rs b/mopro-msm/src/msm/metal_msm/utils/metal_wrapper.rs index 73b43379..404cffd8 100644 --- a/mopro-msm/src/msm/metal_msm/utils/metal_wrapper.rs +++ b/mopro-msm/src/msm/metal_msm/utils/metal_wrapper.rs @@ -1,7 +1,7 @@ use crate::msm::metal_msm::host::gpu::{ create_buffer, create_empty_buffer, get_default_device, read_buffer, }; -use crate::msm::metal_msm::host::shader::{compile_metal, get_shader_dir, write_constants}; +// no runtime shader compilation, drop constants generation here use crate::msm::metal_msm::utils::barrett_params::calc_barrett_mu; use crate::msm::metal_msm::utils::mont_params::{calc_mont_radix, calc_nsafe, calc_rinv_and_n0}; @@ -13,6 +13,8 @@ use num_bigint::BigUint; use once_cell::sync::Lazy; use std::collections::HashMap; use std::sync::Mutex; +// Embed the precompiled Metal library +include!(concat!(env!("OUT_DIR"), "/built_shaders.rs")); /// Cache of precomputed constants static CONSTANTS_CACHE: Lazy>> = @@ -143,42 +145,14 @@ impl MetalHelper { let encoder = command_buffer.compute_command_encoder_with_descriptor(compute_pass_descriptor); - // Setup shader constants - let constants = get_or_calc_constants(config.num_limbs, config.log_limb_size); - write_constants( - get_shader_dir().to_str().unwrap(), - config.num_limbs, - config.log_limb_size, - constants.n0, - constants.nsafe, - ); - - // Prepare full shader path - let shader_path = format!( - "{}/{}", - get_shader_dir().to_str().unwrap(), - config.shader_file - ); - let parts: Vec<&str> = shader_path.rsplitn(2, '/').collect(); - let shader_dir = if parts.len() > 1 { parts[1] } else { "" }; - let shader_file = parts[0]; - - // Compile shader - let library_path = compile_metal(shader_dir, shader_file); - let library = self.device.new_library_with_file(library_path).unwrap(); + // Load precompiled Metal library and create pipeline + let library = self.device.new_library_with_data(MSM_METALLIB).unwrap(); let kernel = library .get_function(config.kernel_name.as_str(), None) .unwrap(); - - // Create pipeline - let pipeline_state_descriptor = ComputePipelineDescriptor::new(); - pipeline_state_descriptor.set_compute_function(Some(&kernel)); - let pipeline_state = self .device - .new_compute_pipeline_state_with_function( - pipeline_state_descriptor.compute_function().unwrap(), - ) + .new_compute_pipeline_state_with_function(&kernel) .unwrap(); encoder.set_compute_pipeline_state(&pipeline_state); diff --git a/mopro-msm/src/msm/metal_msm/utils/shader_manager.rs b/mopro-msm/src/msm/metal_msm/utils/shader_manager.rs index 10c91591..6ee15c0a 100644 --- a/mopro-msm/src/msm/metal_msm/utils/shader_manager.rs +++ b/mopro-msm/src/msm/metal_msm/utils/shader_manager.rs @@ -1,14 +1,16 @@ use crate::msm::metal_msm::host::gpu::get_default_device; -use crate::msm::metal_msm::host::shader::{compile_metal, get_shader_dir, write_constants}; +// no runtime codegen of shader constants use crate::msm::metal_msm::utils::metal_wrapper::{ get_or_calc_constants, MSMConstants, MetalConfig, }; use metal::*; use once_cell::sync::Lazy; use std::collections::HashMap; -use std::path::PathBuf; use std::sync::Mutex; +// Include the single precompiled MSM metallib +include!(concat!(env!("OUT_DIR"), "/built_shaders.rs")); + /// Cache of compiled pipeline states static PIPELINE_CACHE: Lazy>> = Lazy::new(|| Mutex::new(HashMap::new())); @@ -98,124 +100,43 @@ impl ShaderManager { pub fn new(config: ShaderManagerConfig) -> Result> { let device = get_default_device(); let constants = get_or_calc_constants(config.num_limbs, config.log_limb_size); - - // Pre-write constants to avoid doing it on every shader execution - write_constants( - get_shader_dir().to_str().unwrap(), - config.num_limbs, - config.log_limb_size, - constants.n0, - constants.nsafe, - ); - let mut manager = Self { device, config: config.clone(), shaders: HashMap::new(), constants, }; - - // Pre-compile all shaders - manager.compile_all_shaders()?; - - Ok(manager) - } - - /// Create a shader manager with default configuration - pub fn with_default_config() -> Result> { - Self::new(ShaderManagerConfig::default()) - } - - /// Get the shader directory path (useful for debugging and external tools) - pub fn get_shader_directory() -> PathBuf { - get_shader_dir() - } - - /// Pre-compile all shaders used in the MSM pipeline - fn compile_all_shaders(&mut self) -> Result<(), Box> { - let shader_types = vec![ + // Load precompiled library and build pipelines + let library = manager.device.new_library_with_data(MSM_METALLIB)?; + for shader_type in [ ShaderType::ConvertPointAndDecompose, ShaderType::Transpose, ShaderType::SMVP, ShaderType::BPRStage1, ShaderType::BPRStage2, - ]; - - for shader_type in shader_types { - let precompiled = self.compile_shader(&shader_type)?; - self.shaders.insert(shader_type, precompiled); + ] { + let conf = + shader_type.get_config(manager.config.num_limbs, manager.config.log_limb_size); + let kernel = library.get_function(&conf.kernel_name, None)?; + let ps = manager + .device + .new_compute_pipeline_state_with_function(&kernel)?; + manager.shaders.insert( + shader_type, + PrecompiledShader { + pipeline_state: ps, + config: conf, + constants: manager.constants.clone(), + }, + ); } - Ok(()) + Ok(manager) } - /// Compile a single shader and return precompiled information - fn compile_shader( - &self, - shader_type: &ShaderType, - ) -> Result> { - let config = shader_type.get_config(self.config.num_limbs, self.config.log_limb_size); - let cache_key = format!( - "{}_{}_{}_{}", - config.shader_file, - config.kernel_name, - self.config.num_limbs, - self.config.log_limb_size - ); - - // Check if already cached - { - let cache = PIPELINE_CACHE.lock().unwrap(); - if let Some(pipeline_state) = cache.get(&cache_key) { - return Ok(PrecompiledShader { - pipeline_state: pipeline_state.clone(), - config, - constants: self.constants.clone(), - }); - } - } - - // Compile shader - let shader_path = format!( - "{}/{}", - get_shader_dir().to_str().unwrap(), - config.shader_file - ); - let parts: Vec<&str> = shader_path.rsplitn(2, '/').collect(); - let shader_dir = if parts.len() > 1 { parts[1] } else { "" }; - let shader_file = parts[0]; - - let library_path = compile_metal(shader_dir, shader_file); - let library = self - .device - .new_library_with_file(library_path) - .map_err(|e| format!("Failed to create library: {:?}", e))?; - - let kernel = library - .get_function(config.kernel_name.as_str(), None) - .map_err(|e| { - format!( - "Failed to get kernel function {}: {:?}", - config.kernel_name, e - ) - })?; - - let pipeline_state = self - .device - .new_compute_pipeline_state_with_function(&kernel) - .map_err(|e| format!("Failed to create pipeline state: {:?}", e))?; - - // Cache the pipeline state - { - let mut cache = PIPELINE_CACHE.lock().unwrap(); - cache.insert(cache_key, pipeline_state.clone()); - } - - Ok(PrecompiledShader { - pipeline_state, - config, - constants: self.constants.clone(), - }) + /// Create a shader manager with default configuration + pub fn with_default_config() -> Result> { + Self::new(ShaderManagerConfig::default()) } /// Get a precompiled shader by type @@ -238,34 +159,6 @@ impl ShaderManager { &self.constants } - /// Update configuration and recompile shaders if needed - pub fn update_config( - &mut self, - new_config: ShaderManagerConfig, - ) -> Result<(), Box> { - if self.config.num_limbs != new_config.num_limbs - || self.config.log_limb_size != new_config.log_limb_size - { - self.config = new_config; - self.constants = - get_or_calc_constants(self.config.num_limbs, self.config.log_limb_size); - - // Re-write constants - write_constants( - get_shader_dir().to_str().unwrap(), - self.config.num_limbs, - self.config.log_limb_size, - self.constants.n0, - self.constants.nsafe, - ); - - // Re-compile all shaders - self.shaders.clear(); - self.compile_all_shaders()?; - } - Ok(()) - } - /// Clear the pipeline cache (useful for development/testing) pub fn clear_cache() { let mut cache = PIPELINE_CACHE.lock().unwrap(); diff --git a/mopro-msm/src/msm/mod.rs b/mopro-msm/src/msm/mod.rs index 5ab18761..dcb4cdcd 100644 --- a/mopro-msm/src/msm/mod.rs +++ b/mopro-msm/src/msm/mod.rs @@ -1,6 +1,6 @@ pub mod arkworks_pippenger; pub mod bucket_wise_msm; -pub mod metal; +// pub mod metal; pub mod metal_msm; // TODO: fix(precompute_msm): the correctness test will fail occasionally // pub mod precompute_msm; diff --git a/mopro-msm/src/msm/utils/mod.rs b/mopro-msm/src/msm/utils/mod.rs index 3a8d13a6..d38b33a3 100644 --- a/mopro-msm/src/msm/utils/mod.rs +++ b/mopro-msm/src/msm/utils/mod.rs @@ -1,3 +1,3 @@ pub mod benchmark; -pub mod precomputation; +// pub mod precomputation; pub mod preprocess;