diff --git a/.gitignore b/.gitignore index 9f66f57ab..fcdd76343 100755 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ rust-project.json !.vscode/extensions.json *.iml *.o -solutions/ \ No newline at end of file +solutions/ +**/runner-crate/src/lib.cairo diff --git a/Cargo.lock b/Cargo.lock index d18b6386e..b86c7e049 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,11 +2,26 @@ # 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", +] + +[[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.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ "getrandom", "once_cell", @@ -20,6 +35,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if 1.0.0", + "getrandom", "once_cell", "version_check", ] @@ -33,6 +49,21 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + [[package]] name = "allocator-api2" version = "0.2.16" @@ -93,6 +124,12 @@ version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +[[package]] +name = "arc-swap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" + [[package]] name = "argh" version = "0.1.12" @@ -295,12 +332,58 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" +[[package]] +name = "async-compression" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f658e2baef915ba0f26f1f7c42bfb8e12f532a01f449a090ded75ae7a07e9ba2" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-trait" +version = "0.1.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + [[package]] name = "bincode" version = "2.0.0-rc.3" @@ -358,6 +441,47 @@ dependencies = [ "generic-array", ] +[[package]] +name = "brotli" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c79ad7fb2dd38f3dabd76b09c6a5a20c038fc0213ef1e9afd30eb777f120f019" +dependencies = [ + "memchr", + "regex-automata 0.4.3", + "serde", +] + +[[package]] +name = "btoi" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad" +dependencies = [ + "num-traits 0.2.16", +] + [[package]] name = "bumpalo" version = "3.14.0" @@ -370,6 +494,30 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "bytesize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" + +[[package]] +name = "byteyarn" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7534301c0ea17abb4db06d75efc7b4b0fa360fce8e175a4330d721c71c942ff" + [[package]] name = "cairo-felt" version = "0.8.7" @@ -385,10 +533,26 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "indoc", + "num-bigint", + "num-traits 0.2.16", + "parity-scale-codec", + "parity-scale-codec-derive", + "schemars", + "serde", + "thiserror", +] + +[[package]] +name = "cairo-lang-casm" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" dependencies = [ - "cairo-lang-utils", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "indoc", "num-bigint", "num-traits 0.2.16", @@ -401,49 +565,93 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ "anyhow", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-parser", - "cairo-lang-plugins", - "cairo-lang-project", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-generator", - "cairo-lang-syntax", - "cairo-lang-utils", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-lowering 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-plugins 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-project 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-generator 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "itertools 0.11.0", + "salsa", + "thiserror", +] + +[[package]] +name = "cairo-lang-compiler" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "anyhow", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-lowering 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-plugins 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-project 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-generator 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "itertools 0.11.0", - "log", "salsa", - "smol_str", "thiserror", ] [[package]] name = "cairo-lang-debug" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", +] + +[[package]] +name = "cairo-lang-debug" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" dependencies = [ - "cairo-lang-utils", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", ] [[package]] name = "cairo-lang-defs" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-parser", - "cairo-lang-syntax", - "cairo-lang-utils", - "indexmap 2.0.2", +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "itertools 0.11.0", + "salsa", + "smol_str", +] + +[[package]] +name = "cairo-lang-defs" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "itertools 0.11.0", "salsa", "smol_str", @@ -451,54 +659,127 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ - "cairo-lang-debug", - "cairo-lang-filesystem", - "cairo-lang-utils", + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "itertools 0.11.0", +] + +[[package]] +name = "cairo-lang-diagnostics" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "itertools 0.11.0", - "salsa", ] [[package]] name = "cairo-lang-eq-solver" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ - "cairo-lang-utils", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "good_lp", +] + +[[package]] +name = "cairo-lang-eq-solver" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "good_lp", - "indexmap 2.0.2", - "itertools 0.11.0", ] [[package]] name = "cairo-lang-filesystem" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "path-clean", + "salsa", + "serde", + "smol_str", +] + +[[package]] +name = "cairo-lang-filesystem" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" dependencies = [ - "cairo-lang-debug", - "cairo-lang-utils", + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "path-clean", "salsa", "serde", "smol_str", ] +[[package]] +name = "cairo-lang-formatter" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "anyhow", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "diffy", + "ignore", + "itertools 0.11.0", + "salsa", + "serde", + "smol_str", +] + [[package]] name = "cairo-lang-lowering" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-parser", - "cairo-lang-proc-macros", - "cairo-lang-semantic", - "cairo-lang-syntax", - "cairo-lang-utils", +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-proc-macros 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "id-arena", + "indexmap 2.0.2", + "itertools 0.11.0", + "log", + "num-bigint", + "num-traits 0.2.16", + "once_cell", + "salsa", +] + +[[package]] +name = "cairo-lang-lowering" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-proc-macros 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "id-arena", "indexmap 2.0.2", "itertools 0.11.0", @@ -512,17 +793,35 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" -dependencies = [ - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-syntax", - "cairo-lang-syntax-codegen", - "cairo-lang-utils", +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax-codegen 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "colored", + "itertools 0.11.0", + "num-bigint", + "num-traits 0.2.16", + "salsa", + "smol_str", + "unescaper", +] + +[[package]] +name = "cairo-lang-parser" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax-codegen 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "colored", "itertools 0.11.0", - "log", "num-bigint", "num-traits 0.2.16", "salsa", @@ -532,40 +831,80 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" -dependencies = [ - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-parser", - "cairo-lang-syntax", - "cairo-lang-utils", +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "indent", + "indoc", + "itertools 0.11.0", + "salsa", + "smol_str", +] + +[[package]] +name = "cairo-lang-plugins" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "indent", "indoc", "itertools 0.11.0", - "num-bigint", "salsa", "smol_str", ] [[package]] name = "cairo-lang-proc-macros" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "cairo-lang-proc-macros" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" dependencies = [ - "cairo-lang-debug", + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "quote", "syn 2.0.37", ] [[package]] name = "cairo-lang-project" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "serde", + "smol_str", + "thiserror", + "toml 0.7.8", +] + +[[package]] +name = "cairo-lang-project" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" dependencies = [ - "cairo-lang-filesystem", - "cairo-lang-utils", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "serde", "smol_str", "thiserror", @@ -574,57 +913,68 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ - "anyhow", "ark-ff", "ark-secp256k1", "ark-secp256r1", "ark-std 0.4.0", "cairo-felt", - "cairo-lang-casm", - "cairo-lang-compiler", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-sierra-generator", - "cairo-lang-sierra-to-casm", - "cairo-lang-sierra-type-size", - "cairo-lang-starknet", - "cairo-lang-utils", + "cairo-lang-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-ap-change 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-gas 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-to-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-type-size 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-starknet 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", "cairo-vm", "itertools 0.11.0", "keccak", "num-bigint", "num-integer", "num-traits 0.2.16", - "salsa", "thiserror", ] [[package]] name = "cairo-lang-semantic" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-parser", - "cairo-lang-plugins", - "cairo-lang-proc-macros", - "cairo-lang-syntax", - "cairo-lang-utils", +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-proc-macros 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "id-arena", + "itertools 0.11.0", + "num-bigint", + "num-traits 0.2.16", + "once_cell", + "salsa", + "smol_str", +] + +[[package]] +name = "cairo-lang-semantic" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-proc-macros 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "id-arena", "itertools 0.11.0", - "log", "num-bigint", "num-traits 0.2.16", "once_cell", @@ -634,10 +984,11 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ - "cairo-lang-utils", + "anyhow", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", "const-fnv1a-hash", "convert_case", "derivative", @@ -655,49 +1006,118 @@ dependencies = [ ] [[package]] -name = "cairo-lang-sierra-ap-change" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +name = "cairo-lang-sierra" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" dependencies = [ - "cairo-lang-eq-solver", - "cairo-lang-sierra", - "cairo-lang-sierra-type-size", - "cairo-lang-utils", + "anyhow", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "const-fnv1a-hash", + "convert_case", + "derivative", + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "num-bigint", + "num-traits 0.2.16", + "regex", + "salsa", + "serde", + "serde_json", + "sha3", + "smol_str", + "thiserror", +] + +[[package]] +name = "cairo-lang-sierra-ap-change" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-eq-solver 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-type-size 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "itertools 0.11.0", + "thiserror", +] + +[[package]] +name = "cairo-lang-sierra-ap-change" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-eq-solver 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-type-size 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "itertools 0.11.0", "thiserror", ] [[package]] name = "cairo-lang-sierra-gas" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-eq-solver 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-type-size 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "itertools 0.11.0", + "thiserror", +] + +[[package]] +name = "cairo-lang-sierra-gas" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" dependencies = [ - "cairo-lang-eq-solver", - "cairo-lang-sierra", - "cairo-lang-sierra-type-size", - "cairo-lang-utils", + "cairo-lang-eq-solver 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-type-size 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "itertools 0.11.0", "thiserror", ] [[package]] name = "cairo-lang-sierra-generator" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" -dependencies = [ - "cairo-lang-debug", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-parser", - "cairo-lang-plugins", - "cairo-lang-proc-macros", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-syntax", - "cairo-lang-utils", - "id-arena", +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-lowering 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "itertools 0.11.0", + "num-bigint", + "once_cell", + "salsa", + "smol_str", +] + +[[package]] +name = "cairo-lang-sierra-generator" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-lowering 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-parser 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "indexmap 2.0.2", "itertools 0.11.0", "num-bigint", @@ -708,20 +1128,39 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ "assert_matches", "cairo-felt", - "cairo-lang-casm", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-sierra-type-size", - "cairo-lang-utils", + "cairo-lang-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-ap-change 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-gas 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-type-size 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "indoc", + "itertools 0.11.0", + "num-bigint", + "num-traits 0.2.16", + "thiserror", +] + +[[package]] +name = "cairo-lang-sierra-to-casm" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "assert_matches", + "cairo-felt", + "cairo-lang-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-ap-change 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-gas 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-type-size 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "indoc", "itertools 0.11.0", - "log", "num-bigint", "num-traits 0.2.16", "thiserror", @@ -729,42 +1168,81 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ - "cairo-lang-sierra", - "cairo-lang-utils", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", +] + +[[package]] +name = "cairo-lang-sierra-type-size" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", ] [[package]] name = "cairo-lang-starknet" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ "anyhow", "cairo-felt", - "cairo-lang-casm", - "cairo-lang-compiler", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-parser", - "cairo-lang-plugins", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-sierra-generator", - "cairo-lang-sierra-to-casm", - "cairo-lang-syntax", - "cairo-lang-utils", + "cairo-lang-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-compiler 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-lowering 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-generator 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-to-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "const_format", + "convert_case", + "indent", + "indoc", + "itertools 0.11.0", + "num-bigint", + "num-integer", + "num-traits 0.2.16", + "once_cell", + "serde", + "serde_json", + "sha3", + "smol_str", + "thiserror", +] + +[[package]] +name = "cairo-lang-starknet" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "anyhow", + "cairo-felt", + "cairo-lang-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-compiler 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-lowering 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-generator 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-to-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "const_format", "convert_case", - "genco", "indent", "indoc", "itertools 0.11.0", - "log", "num-bigint", "num-integer", "num-traits 0.2.16", @@ -778,78 +1256,153 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ - "cairo-lang-debug", - "cairo-lang-filesystem", - "cairo-lang-utils", + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "num-bigint", + "num-traits 0.2.16", + "salsa", + "smol_str", + "unescaper", +] + +[[package]] +name = "cairo-lang-syntax" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", "num-bigint", "num-traits 0.2.16", "salsa", "smol_str", - "thiserror", "unescaper", ] [[package]] name = "cairo-lang-syntax-codegen" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "genco", + "xshell", +] + +[[package]] +name = "cairo-lang-syntax-codegen" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" dependencies = [ "genco", "xshell", ] +[[package]] +name = "cairo-lang-test-plugin" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" +dependencies = [ + "anyhow", + "cairo-felt", + "cairo-lang-compiler 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-lowering 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-generator 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-starknet 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "itertools 0.11.0", + "num-traits 0.2.16", + "serde", +] + +[[package]] +name = "cairo-lang-test-plugin" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "anyhow", + "cairo-felt", + "cairo-lang-compiler 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-debug 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-diagnostics 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-lowering 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-generator 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-starknet 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-syntax 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "itertools 0.11.0", + "num-bigint", + "num-traits 0.2.16", + "serde", +] + [[package]] name = "cairo-lang-test-runner" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ "anyhow", "cairo-felt", - "cairo-lang-casm", - "cairo-lang-compiler", - "cairo-lang-debug", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-plugins", - "cairo-lang-project", + "cairo-lang-compiler 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", "cairo-lang-runner", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-generator", - "cairo-lang-sierra-to-casm", - "cairo-lang-starknet", - "cairo-lang-syntax", - "cairo-lang-utils", - "cairo-vm", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-sierra-to-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-starknet 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-test-plugin 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", "colored", "itertools 0.11.0", - "num-bigint", "num-traits 0.2.16", "rayon 1.8.0", - "salsa", - "thiserror", ] [[package]] name = "cairo-lang-utils" -version = "2.2.0" -source = "git+https://github.com/starkware-libs/cairo?tag=v2.2.0#ad5570f0f25dbbffd9daedf02df140ff9e7291e4" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?tag=v2.3.0#0c67a87fb24131f21fd4b8709b88e15eaeaf18de" dependencies = [ "indexmap 2.0.2", "itertools 0.11.0", "num-bigint", - "num-integer", "num-traits 0.2.16", "parity-scale-codec", "schemars", "serde", ] +[[package]] +name = "cairo-lang-utils" +version = "2.3.0" +source = "git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f#bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f" +dependencies = [ + "env_logger", + "indexmap 2.0.2", + "itertools 0.11.0", + "log", + "num-bigint", + "num-traits 0.2.16", + "parity-scale-codec", + "schemars", + "serde", + "time", +] + [[package]] name = "cairo-vm" version = "0.8.7" @@ -880,12 +1433,45 @@ dependencies = [ "thiserror-no-std", ] +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "cc" version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ + "jobserver", "libc", ] @@ -911,6 +1497,16 @@ dependencies = [ "clap_derive", ] +[[package]] +name = "clap-verbosity-flag" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5fdbb015d790cfb378aca82caf9cc52a38be96a7eecdb92f31b4366a8afc019" +dependencies = [ + "clap", + "log", +] + [[package]] name = "clap_builder" version = "4.4.6" @@ -941,6 +1537,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +[[package]] +name = "clru" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8191fa7302e03607ff0e237d4246cc043ff5b3cb9409d995172ba3bea16b807" + [[package]] name = "colorchoice" version = "1.0.0" @@ -977,6 +1579,26 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" +[[package]] +name = "const_format" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "convert_case" version = "0.6.0" @@ -986,6 +1608,22 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + [[package]] name = "cpufeatures" version = "0.2.9" @@ -995,6 +1633,50 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "create-output-dir" +version = "1.0.0" +source = "git+https://github.com/software-mansion/scarb#7eb2819a2a2ad5ce8d1c3f760e3274a2ea576e60" +dependencies = [ + "anyhow", + "core-foundation", + "tempfile", + "winapi 0.3.9", +] + +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.3" @@ -1019,6 +1701,16 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.16" @@ -1056,31 +1748,150 @@ dependencies = [ ] [[package]] -name = "derivative" -version = "2.2.0" +name = "darling" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" dependencies = [ + "fnv", + "ident_case", "proc-macro2", "quote", + "strsim", "syn 1.0.109", ] [[package]] -name = "diff" -version = "0.1.13" +name = "darling_macro" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] [[package]] -name = "difference" -version = "2.0.0" +name = "dashmap" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if 1.0.0", + "hashbrown 0.14.1", + "lock_api", + "once_cell", + "parking_lot_core 0.9.8", +] [[package]] -name = "digest" -version = "0.10.7" +name = "data-encoding" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + +[[package]] +name = "deno_task_shell" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dbbad0a7ba06a961df3cd638ab117f5d67787607f627defa65629a4ef29d576" +dependencies = [ + "anyhow", + "futures", + "glob", + "monch", + "os_pipe", + "path-dedot", + "tokio", + "tokio-util", +] + +[[package]] +name = "deranged" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +dependencies = [ + "powerfmt", +] + +[[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_builder" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder_macro" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" +dependencies = [ + "derive_builder_core", + "syn 1.0.109", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "difference" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" + +[[package]] +name = "diffy" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e616e59155c92257e84970156f506287853355f58cd4a6eb167385722c32b790" +dependencies = [ + "nu-ansi-term", +] + +[[package]] +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ @@ -1089,6 +1900,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs-next" version = "2.0.0" @@ -1099,6 +1919,18 @@ dependencies = [ "dirs-sys-next", ] +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -1110,6 +1942,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + [[package]] name = "dyn-clone" version = "1.0.14" @@ -1137,6 +1975,28 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "env_logger" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -1144,155 +2004,1081 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno" -version = "0.3.4" +name = "erased-serde" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c" +dependencies = [ + "serde", +] + +[[package]] +name = "errno" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "escargot" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceb9adbf9874d5d028b5e4c5739d22b71988252b25c9c98fe7cf9738bee84597" +dependencies = [ + "lazy_static", + "log", + "serde", + "serde_json", +] + +[[package]] +name = "faster-hex" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239f7bfb930f820ab16a9cd95afc26f88264cf6905c960b340a615384aa3338a" +dependencies = [ + "serde", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "filetime" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.3.5", + "windows-sys 0.48.0", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4" +dependencies = [ + "num-traits 0.2.16", +] + +[[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.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs4" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f9df8a11882c4e3335eb2d18a0137c505d9ca927470b0cac9c6f0ae07d28f7" +dependencies = [ + "async-trait", + "rustix", + "tokio", + "windows-sys 0.48.0", +] + +[[package]] +name = "fsevent" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6" +dependencies = [ + "bitflags 1.3.2", + "fsevent-sys", +] + +[[package]] +name = "fsevent-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f41b048a94555da0f42f1d632e2e19510084fb8e303b0daa2816e733fb3644a0" +dependencies = [ + "libc", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags 1.3.2", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" + +[[package]] +name = "futures-executor" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" + +[[package]] +name = "futures-macro" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "futures-sink" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" + +[[package]] +name = "futures-task" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" + +[[package]] +name = "futures-util" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "genco" +version = "0.17.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3597f99dbe04460775cb349299b9532123980b17d89faeaa2da42658b7767787" +dependencies = [ + "genco-macros", + "relative-path", + "smallvec", +] + +[[package]] +name = "genco-macros" +version = "0.17.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b029ca4c73c30f813e0e92754515585ccbede98014fb26644cc7488a3833706a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" + +[[package]] +name = "gix" +version = "0.54.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad6d32e74454459690d57d18ea4ebec1629936e6b130b51d12cb4a81630ac953" +dependencies = [ + "gix-actor", + "gix-archive", + "gix-attributes", + "gix-commitgraph", + "gix-config", + "gix-credentials", + "gix-date", + "gix-diff", + "gix-discover", + "gix-features", + "gix-filter", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-hashtable", + "gix-ignore", + "gix-index", + "gix-lock", + "gix-macros", + "gix-mailmap", + "gix-negotiate", + "gix-object", + "gix-odb", + "gix-pack", + "gix-path", + "gix-pathspec", + "gix-prompt", + "gix-ref", + "gix-refspec", + "gix-revision", + "gix-revwalk", + "gix-sec", + "gix-status", + "gix-submodule", + "gix-tempfile", + "gix-trace", + "gix-traverse", + "gix-url", + "gix-utils", + "gix-validate", + "gix-worktree", + "gix-worktree-state", + "gix-worktree-stream", + "once_cell", + "parking_lot 0.12.1", + "regex", + "signal-hook", + "smallvec", + "thiserror", + "unicode-normalization", +] + +[[package]] +name = "gix-actor" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c60e982c5290897122d4e2622447f014a2dadd5a18cb73d50bb91b31645e27" +dependencies = [ + "bstr", + "btoi", + "gix-date", + "itoa", + "thiserror", + "winnow", +] + +[[package]] +name = "gix-archive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab71635f7fb38ad4cc7da7e98af79e3010e35b05de5cb6eb79b2da68ab93eac7" +dependencies = [ + "bstr", + "gix-date", + "gix-object", + "gix-worktree-stream", + "thiserror", +] + +[[package]] +name = "gix-attributes" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2451665e70709ba4753b623ef97511ee98c4a73816b2c5b5df25678d607ed820" +dependencies = [ + "bstr", + "byteyarn", + "gix-glob", + "gix-path", + "gix-quote", + "gix-trace", + "smallvec", + "thiserror", + "unicode-bom", +] + +[[package]] +name = "gix-bitmap" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ccab4bc576844ddb51b78d81b4a42d73e6229660fa614dfc3d3999c874d1959" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-chunk" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b42ea64420f7994000130328f3c7a2038f639120518870436d31b8bde704493" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-command" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c576cfbf577f72c097b5f88aedea502cd62952bdc1fb3adcab4531d5525a4c7" +dependencies = [ + "bstr", +] + +[[package]] +name = "gix-commitgraph" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e75a975ee22cf0a002bfe9b5d5cb3d2a88e263a8a178cd7509133cff10f4df8a" +dependencies = [ + "bstr", + "gix-chunk", + "gix-features", + "gix-hash", + "memmap2", + "thiserror", +] + +[[package]] +name = "gix-config" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c171514b40487d3f677ae37efc0f45ac980e3169f23c27eb30a70b47fdf88ab5" +dependencies = [ + "bstr", + "gix-config-value", + "gix-features", + "gix-glob", + "gix-path", + "gix-ref", + "gix-sec", + "memchr", + "once_cell", + "smallvec", + "thiserror", + "unicode-bom", + "winnow", +] + +[[package]] +name = "gix-config-value" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea7505b97f4d8e7933e29735a568ba2f86d8de466669d9f0e8321384f9972f47" +dependencies = [ + "bitflags 2.4.0", + "bstr", + "gix-path", + "libc", + "thiserror", +] + +[[package]] +name = "gix-credentials" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46900b884cc5af6a6c141ee741607c0c651a4e1d33614b8d888a1ba81cc0bc8a" +dependencies = [ + "bstr", + "gix-command", + "gix-config-value", + "gix-path", + "gix-prompt", + "gix-sec", + "gix-url", + "thiserror", +] + +[[package]] +name = "gix-date" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7df669639582dc7c02737642f76890b03b5544e141caba68a7d6b4eb551e0d" +dependencies = [ + "bstr", + "itoa", + "thiserror", + "time", +] + +[[package]] +name = "gix-diff" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "788ddb152c388206e81f36bcbb574e7ed7827c27d8fa62227b34edc333d8928c" +dependencies = [ + "gix-hash", + "gix-object", + "imara-diff", + "thiserror", +] + +[[package]] +name = "gix-discover" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69507643d75a0ea9a402fcf73ced517d2b95cc95385904ac09d03e0b952fde33" +dependencies = [ + "bstr", + "dunce", + "gix-hash", + "gix-path", + "gix-ref", + "gix-sec", + "thiserror", +] + +[[package]] +name = "gix-features" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b9ff423ae4983f762659040d13dd7a5defbd54b6a04ac3cc7347741cec828cd" +dependencies = [ + "bytes", + "bytesize", + "crc32fast", + "crossbeam-channel", + "flate2", + "gix-hash", + "gix-trace", + "jwalk", + "libc", + "once_cell", + "parking_lot 0.12.1", + "prodash", + "sha1_smol", + "thiserror", + "walkdir", +] + +[[package]] +name = "gix-filter" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be40d28cd41445bb6cd52c4d847d915900e5466f7433eaee6a9e0a3d1d88b08" +dependencies = [ + "bstr", + "encoding_rs", + "gix-attributes", + "gix-command", + "gix-hash", + "gix-object", + "gix-packetline-blocking", + "gix-path", + "gix-quote", + "gix-trace", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-fs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09815faba62fe9b32d918b75a554686c98e43f7d48c43a80df58eb718e5c6635" +dependencies = [ + "gix-features", +] + +[[package]] +name = "gix-glob" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d76e85f11251dcf751d2c5e918a14f562db5be6f727fd24775245653e9b19d" +dependencies = [ + "bitflags 2.4.0", + "bstr", + "gix-features", + "gix-path", +] + +[[package]] +name = "gix-hash" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1884c7b41ea0875217c1be9ce91322f90bde433e91d374d0e1276073a51ccc60" +dependencies = [ + "faster-hex", + "thiserror", +] + +[[package]] +name = "gix-hashtable" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "409268480841ad008e81c17ca5a293393fbf9f2b6c2f85b8ab9de1f0c5176a16" +dependencies = [ + "gix-hash", + "hashbrown 0.14.1", + "parking_lot 0.12.1", +] + +[[package]] +name = "gix-ignore" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048f443a1f6b02da4205c34d2e287e3fd45d75e8e2f06cfb216630ea9bff5e3" +dependencies = [ + "bstr", + "gix-glob", + "gix-path", + "unicode-bom", +] + +[[package]] +name = "gix-index" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f54d63a9d13c13088f41f5a3accbec284e492ac8f4f707fcc307c139622e17b7" +dependencies = [ + "bitflags 2.4.0", + "bstr", + "btoi", + "filetime", + "gix-bitmap", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-traverse", + "itoa", + "memmap2", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-lock" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47fc96fa8b6b6d33555021907c81eb3b27635daecf6e630630bdad44f8feaa95" +dependencies = [ + "gix-tempfile", + "gix-utils", + "thiserror", +] + +[[package]] +name = "gix-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d8acb5ee668d55f0f2d19a320a3f9ef67a6999ad483e11135abcc2464ed18b6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "gix-mailmap" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40f00fa96e29e066ef208f5d13e0f5f95fa70c3ae4bd4f0234272ed4d708a7db" +dependencies = [ + "bstr", + "gix-actor", + "gix-date", + "thiserror", +] + +[[package]] +name = "gix-negotiate" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f1697bf9911c6d1b8d709b9e6ef718cb5ea5821a1b7991520125a8134448004" +dependencies = [ + "bitflags 2.4.0", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-object", + "gix-revwalk", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-object" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7e19616c67967374137bae83e950e9b518a9ea8a605069bd6716ada357fd6f" +dependencies = [ + "bstr", + "btoi", + "gix-actor", + "gix-date", + "gix-features", + "gix-hash", + "gix-validate", + "itoa", + "smallvec", + "thiserror", + "winnow", +] + +[[package]] +name = "gix-odb" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d6a392c6ba3a2f133cdc63120e9bc7aec81eef763db372c817de31febfe64bf" +dependencies = [ + "arc-swap", + "gix-date", + "gix-features", + "gix-hash", + "gix-object", + "gix-pack", + "gix-path", + "gix-quote", + "parking_lot 0.12.1", + "tempfile", + "thiserror", +] + +[[package]] +name = "gix-pack" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7536203a45b31e1bc5694bbf90ba8da1b736c77040dd6a520db369f371eb1ab3" +dependencies = [ + "clru", + "gix-chunk", + "gix-features", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-path", + "gix-tempfile", + "memmap2", + "parking_lot 0.12.1", + "smallvec", + "thiserror", + "uluru", +] + +[[package]] +name = "gix-packetline-blocking" +version = "0.16.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8395f7501c84d6a1fe902035fdfd8cd86d89e2dd6be0200ec1a72fd3c92d39" +dependencies = [ + "bstr", + "faster-hex", + "thiserror", +] + +[[package]] +name = "gix-path" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a1d370115171e3ae03c5c6d4f7d096f2981a40ddccb98dfd704c773530ba73b" +dependencies = [ + "bstr", + "gix-trace", + "home", + "once_cell", + "thiserror", +] + +[[package]] +name = "gix-pathspec" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e26c9b47c51be73f98d38c84494bd5fb99334c5d6fda14ef5d036d50a9e5fd" +dependencies = [ + "bitflags 2.4.0", + "bstr", + "gix-attributes", + "gix-config-value", + "gix-glob", + "gix-path", + "thiserror", +] + +[[package]] +name = "gix-prompt" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c9a913769516f5e9d937afac206fb76428e3d7238e538845842887fda584678" +dependencies = [ + "gix-command", + "gix-config-value", + "parking_lot 0.12.1", + "rustix", + "thiserror", +] + +[[package]] +name = "gix-quote" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" +checksum = "475c86a97dd0127ba4465fbb239abac9ea10e68301470c9791a6dd5351cdc905" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", + "bstr", + "btoi", + "thiserror", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "gix-ref" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "22e6b749660b613641769edc1954132eb8071a13c32224891686091bef078de4" dependencies = [ - "cc", - "libc", + "gix-actor", + "gix-date", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-validate", + "memmap2", + "thiserror", + "winnow", ] [[package]] -name = "escargot" -version = "0.4.0" +name = "gix-refspec" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceb9adbf9874d5d028b5e4c5739d22b71988252b25c9c98fe7cf9738bee84597" +checksum = "0895cb7b1e70f3c3bd4550c329e9f5caf2975f97fcd4238e05754e72208ef61e" dependencies = [ - "lazy_static", - "log", - "serde", - "serde_json", + "bstr", + "gix-hash", + "gix-revision", + "gix-validate", + "smallvec", + "thiserror", ] [[package]] -name = "filetime" -version = "0.2.22" +name = "gix-revision" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "c8c4b15cf2ab7a35f5bcb3ef146187c8d36df0177e171ca061913cbaaa890e89" dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "bstr", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "gix-trace", + "thiserror", ] [[package]] -name = "fixedbitset" -version = "0.4.2" +name = "gix-revwalk" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "e9870c6b1032f2084567710c3b2106ac603377f8d25766b8a6b7c33e6e3ca279" +dependencies = [ + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "smallvec", + "thiserror", +] [[package]] -name = "float-cmp" -version = "0.8.0" +name = "gix-sec" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4" +checksum = "92b9542ac025a8c02ed5d17b3fc031a111a384e859d0be3532ec4d58c40a0f28" dependencies = [ - "num-traits 0.2.16", + "bitflags 2.4.0", + "gix-path", + "libc", + "windows", ] [[package]] -name = "fnv" -version = "1.0.7" +name = "gix-status" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "082801c42ba707f2407b5cce3d99b89cfa84f3794962946dc94cfdc00ae522fa" +dependencies = [ + "bstr", + "filetime", + "gix-features", + "gix-fs", + "gix-hash", + "gix-index", + "gix-object", + "gix-path", + "gix-pathspec", + "thiserror", +] [[package]] -name = "fsevent" +name = "gix-submodule" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6" +checksum = "dd0150e82e9282d3f2ab2dd57a22f9f6c3447b9d9856e5321ac92d38e3e0e2b7" dependencies = [ - "bitflags 1.3.2", - "fsevent-sys", + "bstr", + "gix-config", + "gix-path", + "gix-pathspec", + "gix-refspec", + "gix-url", + "thiserror", ] [[package]] -name = "fsevent-sys" -version = "2.0.1" +name = "gix-tempfile" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f41b048a94555da0f42f1d632e2e19510084fb8e303b0daa2816e733fb3644a0" +checksum = "5ae0978f3e11dc57290ee75ac2477c815bca1ce2fa7ed5dc5f16db067410ac4d" dependencies = [ + "gix-fs", "libc", + "once_cell", + "parking_lot 0.12.1", + "signal-hook", + "signal-hook-registry", + "tempfile", ] [[package]] -name = "fuchsia-zircon" -version = "0.3.3" +name = "gix-trace" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +checksum = "96b6d623a1152c3facb79067d6e2ecdae48130030cf27d6eb21109f13bd7b836" + +[[package]] +name = "gix-traverse" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ef04ab3643acba289b5cedd25d6f53c0430770b1d689d1d654511e6fb81ba0" dependencies = [ - "bitflags 1.3.2", - "fuchsia-zircon-sys", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "smallvec", + "thiserror", ] [[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" +name = "gix-url" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +checksum = "6125ecf46e8c68bf7202da6cad239831daebf0247ffbab30210d72f3856e420f" +dependencies = [ + "bstr", + "gix-features", + "gix-path", + "home", + "thiserror", + "url", +] [[package]] -name = "funty" -version = "2.0.0" +name = "gix-utils" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +checksum = "b85d89dc728613e26e0ed952a19583744e7f5240fcd4aa30d6c824ffd8b52f0f" +dependencies = [ + "fastrand", +] [[package]] -name = "genco" -version = "0.17.6" +name = "gix-validate" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3597f99dbe04460775cb349299b9532123980b17d89faeaa2da42658b7767787" +checksum = "e05cab2b03a45b866156e052aa38619f4ece4adcb2f79978bfc249bc3b21b8c5" dependencies = [ - "genco-macros", - "relative-path", - "smallvec", + "bstr", + "thiserror", ] [[package]] -name = "genco-macros" -version = "0.17.6" +name = "gix-worktree" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b029ca4c73c30f813e0e92754515585ccbede98014fb26644cc7488a3833706a" +checksum = "9f5e32972801bd82d56609e6fc84efc358fa1f11f25c5e83b7807ee2280f14fe" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "bstr", + "gix-attributes", + "gix-features", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-ignore", + "gix-index", + "gix-object", + "gix-path", ] [[package]] -name = "generic-array" -version = "0.14.7" +name = "gix-worktree-state" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", +checksum = "c3aeb06960f2c5ac9e4cdb6b38eb3c2b99d5e525e68285fef21ed17dfbd597ad" +dependencies = [ + "bstr", + "gix-features", + "gix-filter", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-index", + "gix-object", + "gix-path", + "gix-worktree", + "io-close", + "thiserror", ] [[package]] -name = "getrandom" -version = "0.2.10" +name = "gix-worktree-stream" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c89fe93a12e45cc3ad6ba429a7dd7506b03d7d406374a65ad9998b5cb2627569" dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", + "gix-attributes", + "gix-features", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-object", + "gix-path", + "gix-traverse", + "parking_lot 0.12.1", + "thiserror", ] [[package]] @@ -1301,6 +3087,19 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +[[package]] +name = "globset" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + [[package]] name = "good_lp" version = "1.6.1" @@ -1311,13 +3110,32 @@ dependencies = [ "minilp", ] +[[package]] +name = "h2" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] @@ -1385,12 +3203,138 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "human_format" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86cce260d758a9aa3d7c4b99d55c815a540f8a37514ba6046ab6be402a157cb0" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.9", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + [[package]] name = "id-arena" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" +[[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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ignore" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" +dependencies = [ + "globset", + "lazy_static", + "log", + "memchr", + "regex", + "same-file", + "thread_local", + "walkdir", + "winapi-util", +] + +[[package]] +name = "imara-diff" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e98c1d0ad70fc91b8b9654b1f33db55e59579d3b3de2bffdced0fdb810570cb8" +dependencies = [ + "ahash 0.8.3", + "hashbrown 0.12.3", +] + [[package]] name = "impl-trait-for-tuples" version = "0.2.2" @@ -1402,6 +3346,25 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "include_dir" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +dependencies = [ + "proc-macro2", + "quote", +] + [[package]] name = "indent" version = "0.1.1" @@ -1442,6 +3405,19 @@ dependencies = [ "regex", ] +[[package]] +name = "indicatif" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + [[package]] name = "indoc" version = "2.0.4" @@ -1477,6 +3453,16 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "io-close" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cadcf447f06744f8ce713d2d6239bb5bde2c357a452397a9ed90c625da390bc" +dependencies = [ + "libc", + "winapi 0.3.9", +] + [[package]] name = "iovec" version = "0.1.4" @@ -1486,6 +3472,12 @@ dependencies = [ "libc", ] +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + [[package]] name = "is-terminal" version = "0.4.9" @@ -1521,6 +3513,15 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +[[package]] +name = "jobserver" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" version = "0.3.64" @@ -1530,6 +3531,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jwalk" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2735847566356cd2179a2a38264839308f7079fa96e6bd5a42d740460e003c56" +dependencies = [ + "crossbeam", + "rayon 1.8.0", +] + [[package]] name = "keccak" version = "0.1.4" @@ -1565,7 +3576,7 @@ dependencies = [ "petgraph", "pico-args", "regex", - "regex-syntax", + "regex-syntax 0.7.5", "string_cache", "term", "tiny-keccak", @@ -1643,6 +3654,15 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "matrixmultiply" version = "0.2.4" @@ -1658,6 +3678,15 @@ version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +[[package]] +name = "memmap2" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.9.0" @@ -1676,6 +3705,12 @@ dependencies = [ "libmimalloc-sys", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + [[package]] name = "minilp" version = "0.2.2" @@ -1692,6 +3727,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + [[package]] name = "mio" version = "0.6.23" @@ -1711,6 +3755,17 @@ dependencies = [ "winapi 0.2.8", ] +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + [[package]] name = "mio-extras" version = "2.0.6" @@ -1719,7 +3774,7 @@ checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" dependencies = [ "lazycell", "log", - "mio", + "mio 0.6.23", "slab", ] @@ -1735,6 +3790,30 @@ dependencies = [ "ws2_32-sys", ] +[[package]] +name = "monch" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4519a88847ba2d5ead3dc53f1060ec6a571de93f325d9c5c4968147382b1cbc3" + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + [[package]] name = "ndarray" version = "0.13.1" @@ -1793,12 +3872,22 @@ dependencies = [ "fsevent-sys", "inotify", "libc", - "mio", + "mio 0.6.23", "mio-extras", "walkdir", "winapi 0.3.9", ] +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi 0.3.9", +] + [[package]] name = "num-bigint" version = "0.4.4" @@ -1877,12 +3966,40 @@ dependencies = [ "autocfg", ] +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + [[package]] name = "number_prefix" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.18.0" @@ -1895,6 +4012,81 @@ version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +[[package]] +name = "openssl" +version = "0.10.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" +dependencies = [ + "bitflags 2.4.0", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-float" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" +dependencies = [ + "num-traits 0.2.16", +] + +[[package]] +name = "os_pipe" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "parity-scale-codec" version = "3.6.5" @@ -1980,6 +4172,30 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" +[[package]] +name = "path-dedot" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397" +dependencies = [ + "once_cell", +] + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +dependencies = [ + "camino", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + [[package]] name = "petgraph" version = "0.6.4" @@ -2005,6 +4221,36 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "portable-atomic" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -2053,7 +4299,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", ] [[package]] @@ -2065,6 +4311,16 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "prodash" +version = "26.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794b5bf8e2d19b53dcdcec3e4bba628e20f5b6062503ba89281fa7037dd7bbcf" +dependencies = [ + "bytesize", + "human_format", +] + [[package]] name = "quote" version = "1.0.33" @@ -2164,6 +4420,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_users" version = "0.4.3" @@ -2183,8 +4448,17 @@ checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.3.9", + "regex-syntax 0.7.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -2195,9 +4469,21 @@ checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.7.5", ] +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.7.5" @@ -2210,6 +4496,47 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" +[[package]] +name = "reqwest" +version = "0.11.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +dependencies = [ + "async-compression", + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "winreg", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -2220,6 +4547,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -2237,9 +4570,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.15" +version = "0.38.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" +checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" dependencies = [ "bitflags 2.4.0", "errno", @@ -2261,41 +4594,154 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] -name = "salsa" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b84d9f96071f3f3be0dc818eae3327625d8ebc95b58da37d6850724f31d3403" +name = "salsa" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b84d9f96071f3f3be0dc818eae3327625d8ebc95b58da37d6850724f31d3403" +dependencies = [ + "crossbeam-utils", + "indexmap 1.9.3", + "lock_api", + "log", + "oorandom", + "parking_lot 0.11.2", + "rustc-hash", + "salsa-macros", + "smallvec", +] + +[[package]] +name = "salsa-macros" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3904a4ba0a9d0211816177fd34b04c7095443f8cdacd11175064fe541c8fe2" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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 = "scarb" +version = "2.3.0" +source = "git+https://github.com/software-mansion/scarb#7eb2819a2a2ad5ce8d1c3f760e3274a2ea576e60" +dependencies = [ + "anyhow", + "async-trait", + "cairo-lang-compiler 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-defs 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-filesystem 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-formatter", + "cairo-lang-semantic 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-sierra-to-casm 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-starknet 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-test-plugin 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "cairo-lang-utils 2.3.0 (git+https://github.com/starkware-libs/cairo?rev=bf91adecc5a1cb2ced041ba383d7b7c38dd2fa7f)", + "camino", + "clap", + "clap-verbosity-flag", + "create-output-dir", + "data-encoding", + "deno_task_shell", + "derive_builder", + "directories", + "dunce", + "fs4", + "futures", + "gix", + "glob", + "ignore", + "include_dir", + "indoc", + "itertools 0.11.0", + "once_cell", + "pathdiff", + "petgraph", + "reqwest", + "scarb-build-metadata", + "scarb-metadata", + "scarb-ui", + "semver", + "serde", + "serde-untagged", + "serde-value", + "serde_json", + "serde_repr", + "sha2", + "smallvec", + "smol_str", + "tar", + "thiserror", + "tokio", + "toml 0.8.2", + "toml_edit 0.20.2", + "tracing", + "tracing-log", + "tracing-subscriber", + "typed-builder", + "url", + "walkdir", + "which", + "windows-sys 0.48.0", + "xxhash-rust", + "zip", + "zstd", +] + +[[package]] +name = "scarb-build-metadata" +version = "2.3.0" +source = "git+https://github.com/software-mansion/scarb#7eb2819a2a2ad5ce8d1c3f760e3274a2ea576e60" +dependencies = [ + "cargo_metadata", +] + +[[package]] +name = "scarb-metadata" +version = "1.8.0" +source = "git+https://github.com/software-mansion/scarb#7eb2819a2a2ad5ce8d1c3f760e3274a2ea576e60" dependencies = [ - "crossbeam-utils", - "indexmap 1.9.3", - "lock_api", - "log", - "oorandom", - "parking_lot 0.11.2", - "rustc-hash", - "salsa-macros", - "smallvec", + "camino", + "derive_builder", + "semver", + "serde", + "serde_json", + "thiserror", ] [[package]] -name = "salsa-macros" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3904a4ba0a9d0211816177fd34b04c7095443f8cdacd11175064fe541c8fe2" +name = "scarb-ui" +version = "0.1.0" +source = "git+https://github.com/software-mansion/scarb#7eb2819a2a2ad5ce8d1c3f760e3274a2ea576e60" dependencies = [ - "heck 0.3.3", - "proc-macro2", - "quote", - "syn 1.0.109", + "anyhow", + "camino", + "clap", + "console", + "indicatif 0.17.7", + "scarb-metadata", + "serde", + "serde_json", ] [[package]] -name = "same-file" -version = "1.0.6" +name = "schannel" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "winapi-util", + "windows-sys 0.48.0", ] [[package]] @@ -2329,11 +4775,37 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "semver" version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +dependencies = [ + "serde", +] [[package]] name = "serde" @@ -2344,6 +4816,26 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-untagged" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ba3ac59c62f51b75a6bfad8840b2ede4a81ff5cc23c200221ef479ae75a4aa3" +dependencies = [ + "erased-serde", + "serde", +] + +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + [[package]] name = "serde_derive" version = "1.0.188" @@ -2377,6 +4869,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + [[package]] name = "serde_spanned" version = "0.6.3" @@ -2386,6 +4889,49 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serial_test" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" +dependencies = [ + "dashmap", + "futures", + "lazy_static", + "log", + "parking_lot 0.12.1", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + [[package]] name = "sha2" version = "0.10.8" @@ -2407,6 +4953,34 @@ dependencies = [ "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 = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + [[package]] name = "siphasher" version = "0.3.11" @@ -2437,6 +5011,26 @@ dependencies = [ "serde", ] +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "socket2" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" version = "0.5.2" @@ -2464,31 +5058,15 @@ dependencies = [ "ark-std 0.3.0", "assert_cmd", "cairo-felt", - "cairo-lang-casm", - "cairo-lang-compiler", - "cairo-lang-debug", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-lowering", - "cairo-lang-plugins", - "cairo-lang-runner", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-sierra-generator", - "cairo-lang-sierra-to-casm", - "cairo-lang-starknet", - "cairo-lang-syntax", + "cairo-lang-test-plugin 2.3.0 (git+https://github.com/starkware-libs/cairo?tag=v2.3.0)", "cairo-lang-test-runner", - "cairo-lang-utils", + "camino", "clap", "colored", "console", "glob", "home", - "indicatif", + "indicatif 0.16.2", "itertools 0.10.5", "notify", "num-bigint", @@ -2497,8 +5075,11 @@ dependencies = [ "rayon 0.9.0", "regex", "salsa", + "scarb", + "scarb-ui", "serde", "serde_json", + "serial_test", "thiserror", "toml 0.5.11", "unescaper", @@ -2506,9 +5087,9 @@ dependencies = [ [[package]] name = "starknet-crypto" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693e6362f150f9276e429a910481fb7f3bcb8d6aa643743f587cfece0b374874" +checksum = "d3f2175b0b3fc24ff2ec6dc07f5a720498994effca7e78b11a6e1c1bd02cad52" dependencies = [ "crypto-bigint", "hex", @@ -2605,83 +5186,246 @@ dependencies = [ name = "syn" version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "redox_syscall 0.4.1", + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi 0.3.9", +] + +[[package]] +name = "termcolor" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "thiserror" +version = "1.0.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "thiserror-impl-no-std" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e6318948b519ba6dc2b442a6d0b904ebfb8d411a3ad3e07843615a72249758" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "thiserror-no-std" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3ad459d94dd517257cc96add8a43190ee620011bb6e6cdc82dafd97dfafafea" +dependencies = [ + "thiserror-impl-no-std", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "deranged", + "itoa", + "libc", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", ] [[package]] -name = "tap" -version = "1.0.1" +name = "time-core" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] -name = "term" -version = "0.7.0" +name = "time-macros" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ - "dirs-next", - "rustversion", - "winapi 0.3.9", + "time-core", ] [[package]] -name = "termtree" -version = "0.4.1" +name = "tiny-keccak" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] [[package]] -name = "thiserror" -version = "1.0.49" +name = "tinyvec" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ - "thiserror-impl", + "tinyvec_macros", ] [[package]] -name = "thiserror-impl" -version = "1.0.49" +name = "tinyvec_macros" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", + "backtrace", + "bytes", + "libc", + "mio 0.8.8", + "num_cpus", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.4", + "tokio-macros", + "windows-sys 0.48.0", ] [[package]] -name = "thiserror-impl-no-std" -version = "2.0.2" +name = "tokio-macros" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e6318948b519ba6dc2b442a6d0b904ebfb8d411a3ad3e07843615a72249758" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.37", ] [[package]] -name = "thiserror-no-std" -version = "2.0.2" +name = "tokio-native-tls" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ad459d94dd517257cc96add8a43190ee620011bb6e6cdc82dafd97dfafafea" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ - "thiserror-impl-no-std", + "native-tls", + "tokio", ] [[package]] -name = "tiny-keccak" -version = "2.0.2" +name = "tokio-util" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ - "crunchy", + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", ] [[package]] @@ -2702,7 +5446,19 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.20.2", ] [[package]] @@ -2727,12 +5483,127 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.0.2", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "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.37", +] + +[[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-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "typed-builder" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34085c17941e36627a879208083e25d357243812c30e7d7387c3b954f30ade16" +dependencies = [ + "typed-builder-macro", +] + +[[package]] +name = "typed-builder-macro" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f03ca4cb38206e2bef0700092660bb74d696f808514dae47fa1467cbfe26e96e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + [[package]] name = "typenum" version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "uluru" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794a32261a1f5eb6a4462c81b59cec87b5c27d5deea7dd1ac8fc781c41d226db" +dependencies = [ + "arrayvec", +] + [[package]] name = "unescaper" version = "0.1.2" @@ -2742,12 +5613,33 @@ dependencies = [ "thiserror", ] +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-bom" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98e90c70c9f0d4d1ee6d0a7d04aa06cb9bbd53d8cfbdd62a0269a7c2eb640552" + [[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.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-segmentation" version = "1.10.1" @@ -2766,12 +5658,36 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + [[package]] name = "utf8parse" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "version_check" version = "0.9.4" @@ -2788,6 +5704,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2819,6 +5744,18 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.87" @@ -2848,6 +5785,41 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +[[package]] +name = "wasm-streams" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[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.2.8" @@ -2891,6 +5863,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -3032,6 +6013,16 @@ dependencies = [ "memchr", ] +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + [[package]] name = "ws2_32-sys" version = "0.2.1" @@ -3051,6 +6042,15 @@ dependencies = [ "tap", ] +[[package]] +name = "xattr" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +dependencies = [ + "libc", +] + [[package]] name = "xshell" version = "0.2.5" @@ -3066,6 +6066,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e2c411759b501fb9501aac2b1b2d287a6e93e5bdcf13c25306b23e1b716dd0e" +[[package]] +name = "xxhash-rust" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9828b178da53440fa9c766a3d2f73f7cf5d0ac1fe3980c1e5018d899fd19e07b" + [[package]] name = "zeroize" version = "1.6.0" @@ -3085,3 +6091,44 @@ dependencies = [ "quote", "syn 2.0.37", ] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.9+zstd.1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index 3455d2585..f3e07b39a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,26 +24,10 @@ glob = "0.3.0" cairo-felt = "0.8.2" # Cairo runner dependencies -cairo-lang-runner = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-test-runner = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-compiler = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-casm = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-diagnostics = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-debug = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-defs = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-sierra = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-sierra-ap-change = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-sierra-gas = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-sierra-generator = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-semantic = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-sierra-to-casm = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-utils = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-filesystem = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-starknet = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-syntax = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-plugins = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} -cairo-lang-lowering = {git = "https://github.com/starkware-libs/cairo", tag = "v2.2.0"} - +cairo-lang-test-runner = {git = "https://github.com/starkware-libs/cairo", tag = "v2.3.0"} +cairo-lang-test-plugin = {git = "https://github.com/starkware-libs/cairo", tag = "v2.3.0"} +scarb = { git = "https://github.com/software-mansion/scarb", version = "2.3.0" } +scarb-ui = { git = "https://github.com/software-mansion/scarb", version = "0.1.0" } anyhow = "1.0.66" ark-ff = "0.4.0-alpha.7" @@ -57,20 +41,14 @@ thiserror = "1.0.32" rayon = "0.9.0" colored = "2" unescaper = "0.1.1" +camino = "1.1.6" [dev-dependencies] assert_cmd = "0.11.0" predicates = "1.0.1" glob = "0.3.0" +serial_test = "2.0.0" [[bin]] name = "starklings" path = "src/main.rs" - -[[bin]] -name = "starklings-runner" -path = "src/starklings_runner.rs" - -[[bin]] -name = "starklings-tester" -path = "src/starklings_tester.rs" diff --git a/Scarb.toml b/Scarb.toml deleted file mode 100644 index 00e3a00f3..000000000 --- a/Scarb.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "starklings_cairo1" -version = "0.1.0" - -# See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest - -[dependencies] -starknet = ">=2.2.0" - -[[target.starknet-contract]] diff --git a/corelib/Scarb.lock b/corelib/Scarb.lock new file mode 100644 index 000000000..7a36cbba5 --- /dev/null +++ b/corelib/Scarb.lock @@ -0,0 +1,6 @@ +# Code generated by scarb DO NOT EDIT. +version = 1 + +[[package]] +name = "core" +version = "2.3.0" diff --git a/corelib/Scarb.toml b/corelib/Scarb.toml index dabde0b0e..e86636584 100644 --- a/corelib/Scarb.toml +++ b/corelib/Scarb.toml @@ -1,6 +1,6 @@ [package] name = "core" -version = "2.2.0" +version = "2.3.0" # NOTE: This is non-public, unstable Scarb's field, which instructs resolver that this package does not # depend on `core`, which is only true for this particular package. Nobody else should use it. diff --git a/corelib/src/array.cairo b/corelib/src/array.cairo index 0b1a2edaa..a37227fa5 100644 --- a/corelib/src/array.cairo +++ b/corelib/src/array.cairo @@ -81,7 +81,7 @@ impl ArrayIndex of IndexView, usize, @T> { } } -impl ArraySerde, impl TDrop: Drop> of Serde> { +impl ArraySerde, +Drop> of Serde> { fn serialize(self: @Array, ref output: Array) { self.len().serialize(ref output); serialize_array_helper(self.span(), ref output); @@ -93,9 +93,7 @@ impl ArraySerde, impl TDrop: Drop> of Serde } } -fn serialize_array_helper, impl TDrop: Drop>( - mut input: Span, ref output: Array -) { +fn serialize_array_helper, +Drop>(mut input: Span, ref output: Array) { match input.pop_front() { Option::Some(value) => { value.serialize(ref output); @@ -105,13 +103,13 @@ fn serialize_array_helper, impl TDrop: Drop>( } } -fn deserialize_array_helper, impl TDrop: Drop>( +fn deserialize_array_helper, +Drop>( ref serialized: Span, mut curr_output: Array, remaining: felt252 ) -> Option> { if remaining == 0 { return Option::Some(curr_output); } - curr_output.append(TSerde::deserialize(ref serialized)?); + curr_output.append(Serde::deserialize(ref serialized)?); deserialize_array_helper(ref serialized, curr_output, remaining - 1) } @@ -123,7 +121,7 @@ struct Span { impl SpanCopy of Copy>; impl SpanDrop of Drop>; -impl SpanSerde, impl TDrop: Drop> of Serde> { +impl SpanSerde, +Drop> of Serde> { fn serialize(self: @Span, ref output: Array) { (*self).len().serialize(ref output); serialize_array_helper(*self, ref output) @@ -188,25 +186,21 @@ impl SpanIndex of IndexView, usize, @T> { } // TODO(spapini): Remove TDrop. It is necessary to get rid of response in case of panic. -impl ArrayTCloneImpl, impl TDrop: Drop> of Clone> { +impl ArrayTCloneImpl, +Drop> of Clone> { fn clone(self: @Array) -> Array { let mut response = array_new(); let mut span = self.span(); loop { match span.pop_front() { - Option::Some(v) => { - response.append(TClone::clone(v)); - }, - Option::None => { - break (); - }, + Option::Some(v) => { response.append(v.clone()); }, + Option::None => { break (); }, }; }; response } } -impl ArrayPartialEq> of PartialEq> { +impl ArrayPartialEq> of PartialEq> { fn eq(lhs: @Array, rhs: @Array) -> bool { lhs.span() == rhs.span() } @@ -215,7 +209,7 @@ impl ArrayPartialEq> of PartialEq> } } -impl SpanPartialEq> of PartialEq> { +impl SpanPartialEq> of PartialEq> { fn eq(lhs: @Span, rhs: @Span) -> bool { if (*lhs).len() != (*rhs).len() { return false; @@ -229,9 +223,7 @@ impl SpanPartialEq> of PartialEq> { break false; } }, - Option::None => { - break true; - }, + Option::None => { break true; }, }; } } diff --git a/corelib/src/byte_array.cairo b/corelib/src/byte_array.cairo index 676f47afa..869e7d6fd 100644 --- a/corelib/src/byte_array.cairo +++ b/corelib/src/byte_array.cairo @@ -29,6 +29,8 @@ struct ByteArray { pending_word_len: usize, } +impl ByteArrayStringLiteral of string::StringLiteral; + impl ByteArrayDefault of Default { fn default() -> ByteArray { ByteArray { data: Default::default(), pending_word: 0, pending_word_len: 0 } @@ -90,12 +92,8 @@ impl ByteArrayImpl of ByteArrayTrait { if self.pending_word_len == 0 { loop { match other_data.pop_front() { - Option::Some(current_word) => { - self.data.append(*current_word); - }, - Option::None => { - break; - } + Option::Some(current_word) => { self.data.append(*current_word); }, + Option::None => { break; } }; }; self.pending_word = *other.pending_word; @@ -111,9 +109,7 @@ impl ByteArrayImpl of ByteArrayTrait { Option::Some(current_word) => { self.append_split_index_16((*current_word).into()); }, - Option::None => { - break; - } + Option::None => { break; } }; }; } else if self.pending_word_len < BYTES_IN_U128 { @@ -125,9 +121,7 @@ impl ByteArrayImpl of ByteArrayTrait { (*current_word).into(), self.pending_word_len ); }, - Option::None => { - break; - } + Option::None => { break; } }; }; } else { @@ -140,9 +134,7 @@ impl ByteArrayImpl of ByteArrayTrait { (*current_word).into(), self.pending_word_len ); }, - Option::None => { - break; - } + Option::None => { break; } }; }; } @@ -223,9 +215,7 @@ impl ByteArrayImpl of ByteArrayTrait { Option::Some(current_word) => { result.append_word_rev((*current_word).into(), BYTES_IN_BYTES31); }, - Option::None => { - break; - } + Option::None => { break; } }; }; result @@ -356,7 +346,7 @@ impl ByteArrayImpl of ByteArrayTrait { } } -impl U128Add of Add { +impl ByteArrayAdd of Add { #[inline] fn add(lhs: ByteArray, rhs: ByteArray) -> ByteArray { ByteArrayTrait::concat(@lhs, @rhs) diff --git a/corelib/src/clone.cairo b/corelib/src/clone.cairo index fc71f2017..27e986acd 100644 --- a/corelib/src/clone.cairo +++ b/corelib/src/clone.cairo @@ -2,7 +2,7 @@ trait Clone { fn clone(self: @T) -> T; } -impl TCopyClone> of Clone { +impl TCopyClone> of Clone { fn clone(self: @T) -> T { *self } diff --git a/corelib/src/cmp.cairo b/corelib/src/cmp.cairo index 3031ce1ef..86738b06b 100644 --- a/corelib/src/cmp.cairo +++ b/corelib/src/cmp.cairo @@ -1,15 +1,11 @@ -fn min, impl DropT: Drop, impl CopyT: Copy>( - a: T, b: T -) -> T { +fn min, +Drop, +Copy>(a: T, b: T) -> T { if a > b { return b; } a } -fn max, impl DropT: Drop, impl CopyT: Copy>( - a: T, b: T -) -> T { +fn max, +Drop, +Copy>(a: T, b: T) -> T { if a > b { return a; } diff --git a/corelib/src/debug.cairo b/corelib/src/debug.cairo index e5ce405b7..8a840afda 100644 --- a/corelib/src/debug.cairo +++ b/corelib/src/debug.cairo @@ -87,6 +87,36 @@ impl U256PrintImpl of PrintTrait { } } +impl I8PrintImpl of PrintTrait { + fn print(self: i8) { + Into::<_, felt252>::into(self).print(); + } +} + +impl I16PrintImpl of PrintTrait { + fn print(self: i16) { + Into::<_, felt252>::into(self).print(); + } +} + +impl I32PrintImpl of PrintTrait { + fn print(self: i32) { + Into::<_, felt252>::into(self).print(); + } +} + +impl I64PrintImpl of PrintTrait { + fn print(self: i64) { + Into::<_, felt252>::into(self).print(); + } +} + +impl I128PrintImpl of PrintTrait { + fn print(self: i128) { + Into::<_, felt252>::into(self).print(); + } +} + impl ArrayGenericPrintImpl of PrintTrait> { fn print(mut self: Array) { print(self); diff --git a/corelib/src/dict.cairo b/corelib/src/dict.cairo index ba6f2948b..e959d796a 100644 --- a/corelib/src/dict.cairo +++ b/corelib/src/dict.cairo @@ -3,7 +3,7 @@ use traits::{Index, Default}; extern type Felt252Dict; extern type SquashedFelt252Dict; extern type Felt252DictEntry; -impl SquashedFelt252DictDrop> of Drop>; +impl SquashedFelt252DictDrop> of Drop>; extern fn felt252_dict_new() -> Felt252Dict implicits(SegmentArena) nopanic; @@ -28,23 +28,23 @@ trait Felt252DictTrait { /// Inserts the given value for the given key. /// /// Requires the `Destruct` trait, as the previous value is dropped. - fn insert>(ref self: Felt252Dict, key: felt252, value: T); + fn insert<+Destruct>(ref self: Felt252Dict, key: felt252, value: T); /// Returns a copy of the value at the given key. /// /// Requires the `Copy` trait. - fn get>(ref self: Felt252Dict, key: felt252) -> T; + fn get<+Copy>(ref self: Felt252Dict, key: felt252) -> T; fn squash(self: Felt252Dict) -> SquashedFelt252Dict nopanic; fn entry(self: Felt252Dict, key: felt252) -> (Felt252DictEntry, T) nopanic; } -impl Felt252DictImpl> of Felt252DictTrait { +impl Felt252DictImpl> of Felt252DictTrait { #[inline] - fn insert>(ref self: Felt252Dict, key: felt252, value: T) { + fn insert<+Destruct>(ref self: Felt252Dict, key: felt252, value: T) { let (entry, _prev_value) = felt252_dict_entry_get(self, key); self = felt252_dict_entry_finalize(entry, value); } #[inline] - fn get>(ref self: Felt252Dict, key: felt252) -> T { + fn get<+Copy>(ref self: Felt252Dict, key: felt252) -> T { let (entry, prev_value) = felt252_dict_entry_get(self, key); let return_value = prev_value; self = felt252_dict_entry_finalize(entry, prev_value); @@ -66,7 +66,7 @@ trait Felt252DictEntryTrait { fn finalize(self: Felt252DictEntry, new_value: T) -> Felt252Dict; } -impl Felt252DictEntryImpl> of Felt252DictEntryTrait { +impl Felt252DictEntryImpl> of Felt252DictEntryTrait { #[inline(always)] fn finalize(self: Felt252DictEntry, new_value: T) -> Felt252Dict { felt252_dict_entry_finalize(self, new_value) @@ -80,29 +80,22 @@ impl Felt252DictDefault of Default> { } } -impl Felt252DictDestruct< - T, impl TDrop: Drop, impl TDefault: Felt252DictValue -> of Destruct> { +impl Felt252DictDestruct, +Felt252DictValue> of Destruct> { #[inline(always)] fn destruct(self: Felt252Dict) nopanic { self.squash(); } } -impl Felt252DictEntryDestruct< - T, impl TDrop: Drop, impl TDefault: Felt252DictValue -> of Destruct> { +impl Felt252DictEntryDestruct, +Felt252DictValue> of Destruct> { #[inline(always)] fn destruct(self: Felt252DictEntry::) nopanic { - felt252_dict_entry_finalize(self, TDefault::zero_default()); + felt252_dict_entry_finalize(self, Felt252DictValue::zero_default()); } } impl Felt252DictIndex< - T, - impl TDictImpl: Felt252DictTrait, - impl TCopy: Copy, - impl EntryDestruct: Destruct> + T, +Felt252DictTrait, +Copy, +Destruct> > of Index, felt252, T> { #[inline(always)] fn index(ref self: Felt252Dict, index: felt252) -> T { diff --git a/corelib/src/ec.cairo b/corelib/src/ec.cairo index 46c4da940..f1a0c13c1 100644 --- a/corelib/src/ec.cairo +++ b/corelib/src/ec.cairo @@ -142,15 +142,11 @@ impl EcPointAdd of Add { fn add(lhs: EcPoint, rhs: EcPoint) -> EcPoint { let lhs_nz = match lhs.try_into() { Option::Some(pt) => pt, - Option::None => { - return rhs; - }, + Option::None => { return rhs; }, }; let rhs_nz = match rhs.try_into() { Option::Some(pt) => pt, - Option::None => { - return lhs; - }, + Option::None => { return lhs; }, }; let mut state = ec_state_init(); state.add(lhs_nz); @@ -169,7 +165,8 @@ impl EcPointAddEq of AddEq { impl EcPointSub of Sub { /// Computes the difference between two points on the curve. fn sub(lhs: EcPoint, rhs: EcPoint) -> EcPoint { - match rhs.try_into() { + let nz_point: Option> = rhs.try_into(); + match nz_point { Option::Some(_) => {}, Option::None => { // lhs - 0 = lhs. diff --git a/corelib/src/ecdsa.cairo b/corelib/src/ecdsa.cairo index 6037b307b..c935be9ff 100644 --- a/corelib/src/ecdsa.cairo +++ b/corelib/src/ecdsa.cairo @@ -39,26 +39,20 @@ fn check_ecdsa_signature( // Check that the public key is the x coordinate of a point on the curve and get such a point. let public_key_point = match ec::EcPointTrait::new_from_x(public_key) { Option::Some(point) => point, - Option::None => { - return false; - }, + Option::None => { return false; }, }; // Check that `r` is the x coordinate of a point on the curve and get such a point. // Note that this ensures that `r != 0`. let signature_r_point = match EcPointTrait::new_from_x(signature_r) { Option::Some(point) => point, - Option::None => { - return false; - }, + Option::None => { return false; }, }; // Retrieve the generator point. let gen_point = match EcPointTrait::new(ec::stark_curve::GEN_X, ec::stark_curve::GEN_Y) { Option::Some(point) => point, - Option::None => { - return false; - }, + Option::None => { return false; }, }; // To verify ECDSA, obtain: @@ -74,9 +68,7 @@ fn check_ecdsa_signature( let (x, _) = ec::ec_point_unwrap(pt); x }, - Option::None => { - return false; - }, + Option::None => { return false; }, }; let zG: EcPoint = gen_point.mul(message_hash); diff --git a/corelib/src/hash.cairo b/corelib/src/hash.cairo index effea0033..4be6b59a2 100644 --- a/corelib/src/hash.cairo +++ b/corelib/src/hash.cairo @@ -1,5 +1,4 @@ use traits::Into; -use starknet::ContractAddress; /// A trait for hash state accumulators. trait HashStateTrait { @@ -8,7 +7,7 @@ trait HashStateTrait { } /// A trait for values that can be hashed. -trait Hash> { +trait Hash> { /// Updates the hash state with the given value. fn update_state(state: S, value: T) -> S; } @@ -21,12 +20,10 @@ trait LegacyHash { } /// Implementation of `LegacyHash` for types that have `Hash` for backwards compatibility. -impl LegacyHashForHash< - T, impl THash: Hash -> of LegacyHash { +impl LegacyHashForHash> of LegacyHash { #[inline(always)] fn hash(state: felt252, value: T) -> felt252 { - THash::update_state(pedersen::HashState { state }, value).state + pedersen::HashState { state }.update_with(value).state } } @@ -36,93 +33,57 @@ trait HashStateExTrait { fn update_with(self: S, value: T) -> S; } -impl HashStateEx< - S, impl SHashState: HashStateTrait, T, impl THash: Hash -> of HashStateExTrait { +impl HashStateEx, T, +Hash> of HashStateExTrait { #[inline(always)] fn update_with(self: S, value: T) -> S { - THash::update_state(self, value) + Hash::update_state(self, value) } } -impl HashFelt252> of Hash { +impl HashFelt252> of Hash { #[inline(always)] fn update_state(state: S, value: felt252) -> S { state.update(value) } } -impl HashBool< - S, impl SHashState: HashStateTrait, impl SDrop: Drop -> of Hash { - #[inline(always)] - fn update_state(state: S, value: bool) -> S { - state.update(value.into()) - } -} - -impl HashU8, impl SDrop: Drop> of Hash { - #[inline(always)] - fn update_state(state: S, value: u8) -> S { - state.update(value.into()) - } -} - -impl HashU16< - S, impl SHashState: HashStateTrait, impl SDrop: Drop -> of Hash { - #[inline(always)] - fn update_state(state: S, value: u16) -> S { - state.update(value.into()) +/// Impl for `Hash` for types that can be converted into `felt252` using the `Into` trait. +/// Usage example: +/// ```ignore +/// impl MyTypeHash, +Drop> = +/// core::hash::into_felt252_based::HashImpl;` +/// ``` +mod into_felt252_based { + impl HashImpl< + T, S, +Into, +super::HashStateTrait, +Drop + > of super::Hash { + #[inline(always)] + fn update_state(state: S, value: T) -> S { + state.update(value.into()) + } } } -impl HashU32< - S, impl SHashState: HashStateTrait, impl SDrop: Drop -> of Hash { - #[inline(always)] - fn update_state(state: S, value: u32) -> S { - state.update(value.into()) - } -} +impl HashBool, +Drop> = into_felt252_based::HashImpl; +impl HashU8, +Drop> = into_felt252_based::HashImpl; +impl HashU16, +Drop> = into_felt252_based::HashImpl; +impl HashU32, +Drop> = into_felt252_based::HashImpl; +impl HashU64, +Drop> = into_felt252_based::HashImpl; +impl HashU128, +Drop> = into_felt252_based::HashImpl; +impl HashI8, +Drop> = into_felt252_based::HashImpl; +impl HashI16, +Drop> = into_felt252_based::HashImpl; +impl HashI32, +Drop> = into_felt252_based::HashImpl; +impl HashI64, +Drop> = into_felt252_based::HashImpl; +impl HashI128, +Drop> = into_felt252_based::HashImpl; -impl HashU64< - S, impl SHashState: HashStateTrait, impl SDrop: Drop -> of Hash { - #[inline(always)] - fn update_state(state: S, value: u64) -> S { - state.update(value.into()) - } -} - -impl HashU128< - S, impl SHashState: HashStateTrait, impl SDrop: Drop -> of Hash { - #[inline(always)] - fn update_state(state: S, value: u128) -> S { - state.update(value.into()) - } -} - -impl HashContractAddress< - S, impl SHashState: HashStateTrait, impl SDrop: Drop -> of Hash { - #[inline(always)] - fn update_state(state: S, value: ContractAddress) -> S { - state.update(value.into()) - } -} - -impl TupleSize0Hash> of Hash<(), S, SHashState> { +impl TupleSize0Hash> of Hash<(), S> { #[inline(always)] fn update_state(state: S, value: ()) -> S { state } } -impl TupleSize1Hash< - E0, S, impl E0Hash: Hash, impl SHashState: HashStateTrait -> of Hash<(E0,), S, SHashState> { +impl TupleSize1Hash, +HashStateTrait> of Hash<(E0,), S> { #[inline(always)] fn update_state(state: S, value: (E0,)) -> S { let (e0,) = value; @@ -131,15 +92,8 @@ impl TupleSize1Hash< } impl TupleSize2Hash< - E0, - E1, - S, - impl SHashState: HashStateTrait, - impl E0Hash: Hash, - impl E1Hash: Hash, - impl E0Drop: Drop, - impl E1Drop: Drop, -> of Hash<(E0, E1), S, SHashState> { + E0, E1, S, +HashStateTrait, +Hash, +Hash, +Drop, +Drop, +> of Hash<(E0, E1), S> { #[inline(always)] fn update_state(state: S, value: (E0, E1,)) -> S { let (e0, e1) = value; @@ -152,14 +106,14 @@ impl TupleSize3Hash< E1, E2, S, - impl SHashState: HashStateTrait, - impl E0Hash: Hash, - impl E1Hash: Hash, - impl E2Hash: Hash, - impl E0Drop: Drop, - impl E1Drop: Drop, - impl E2Drop: Drop, -> of Hash<(E0, E1, E2), S, SHashState> { + +HashStateTrait, + +Hash, + +Hash, + +Hash, + +Drop, + +Drop, + +Drop, +> of Hash<(E0, E1, E2), S> { #[inline(always)] fn update_state(state: S, value: (E0, E1, E2)) -> S { let (e0, e1, e2) = value; @@ -173,16 +127,16 @@ impl TupleSize4Hash< E2, E3, S, - impl SHashState: HashStateTrait, - impl E0Hash: Hash, - impl E1Hash: Hash, - impl E2Hash: Hash, - impl E3Hash: Hash, - impl E0Drop: Drop, - impl E1Drop: Drop, - impl E2Drop: Drop, - impl E3Drop: Drop, -> of Hash<(E0, E1, E2, E3), S, SHashState> { + +HashStateTrait, + +Hash, + +Hash, + +Hash, + +Hash, + +Drop, + +Drop, + +Drop, + +Drop, +> of Hash<(E0, E1, E2, E3), S> { #[inline(always)] fn update_state(state: S, value: (E0, E1, E2, E3)) -> S { let (e0, e1, e2, e3) = value; diff --git a/corelib/src/integer.cairo b/corelib/src/integer.cairo index 27681b401..60dab9d72 100644 --- a/corelib/src/integer.cairo +++ b/corelib/src/integer.cairo @@ -2,7 +2,6 @@ use option::OptionTrait; use result::ResultTrait; use traits::{Into, TryInto, Default, Felt252DictValue}; use zeroable::{IsZeroResult, NonZeroIntoImpl, Zeroable}; -use serde::Serde; use array::ArrayTrait; use array::SpanTrait; @@ -15,14 +14,7 @@ extern type u128; impl NumericLiteralu128 of NumericLiteral; extern fn u128_const() -> u128 nopanic; -impl U128Serde of Serde { - fn serialize(self: @u128, ref output: Array) { - Into::::into(*self).serialize(ref output); - } - fn deserialize(ref serialized: Span) -> Option { - Option::Some(((*serialized.pop_front()?).try_into())?) - } -} +impl U128Serde = core::serde::into_felt252_based::SerdeImpl; enum U128sFromFelt252Result { Narrow: u128, @@ -282,14 +274,7 @@ extern fn u8_try_from_felt252(a: felt252) -> Option implicits(RangeCheck) no extern fn u8_eq(lhs: u8, rhs: u8) -> bool implicits() nopanic; -impl U8Serde of Serde { - fn serialize(self: @u8, ref output: Array) { - Into::::into(*self).serialize(ref output); - } - fn deserialize(ref serialized: Span) -> Option { - Option::Some(((*serialized.pop_front()?).try_into())?) - } -} +impl U8Serde = core::serde::into_felt252_based::SerdeImpl; impl U8PartialEq of PartialEq { #[inline(always)] @@ -479,14 +464,7 @@ extern fn u16_try_from_felt252(a: felt252) -> Option implicits(RangeCheck) extern fn u16_eq(lhs: u16, rhs: u16) -> bool implicits() nopanic; -impl U16Serde of Serde { - fn serialize(self: @u16, ref output: Array) { - Into::::into(*self).serialize(ref output); - } - fn deserialize(ref serialized: Span) -> Option { - Option::Some(((*serialized.pop_front()?).try_into())?) - } -} +impl U16Serde = core::serde::into_felt252_based::SerdeImpl; impl U16PartialEq of PartialEq { #[inline(always)] @@ -676,14 +654,7 @@ extern fn u32_try_from_felt252(a: felt252) -> Option implicits(RangeCheck) extern fn u32_eq(lhs: u32, rhs: u32) -> bool implicits() nopanic; -impl U32Serde of Serde { - fn serialize(self: @u32, ref output: Array) { - Into::::into(*self).serialize(ref output); - } - fn deserialize(ref serialized: Span) -> Option { - Option::Some(((*serialized.pop_front()?).try_into())?) - } -} +impl U32Serde = core::serde::into_felt252_based::SerdeImpl; impl U32PartialEq of PartialEq { #[inline(always)] @@ -873,14 +844,7 @@ extern fn u64_try_from_felt252(a: felt252) -> Option implicits(RangeCheck) extern fn u64_eq(lhs: u64, rhs: u64) -> bool implicits() nopanic; -impl U64Serde of Serde { - fn serialize(self: @u64, ref output: Array) { - Into::::into(*self).serialize(ref output); - } - fn deserialize(ref serialized: Span) -> Option { - Option::Some(((*serialized.pop_front()?).try_into())?) - } -} +impl U64Serde = core::serde::into_felt252_based::SerdeImpl; impl U64PartialEq of PartialEq { #[inline(always)] @@ -1300,7 +1264,7 @@ impl U256BitNot of BitNot { } } -#[derive(Copy, Drop, PartialEq, Serde)] +#[derive(Copy, Drop, Hash, PartialEq, Serde)] struct u512 { limb0: u128, limb1: u128, @@ -1432,6 +1396,61 @@ impl BoundedU256 of BoundedInt { } } +impl BoundedI8 of BoundedInt { + #[inline(always)] + fn min() -> i8 nopanic { + -0x80 + } + #[inline(always)] + fn max() -> i8 nopanic { + 0x7f + } +} + +impl BoundedI16 of BoundedInt { + #[inline(always)] + fn min() -> i16 nopanic { + -0x8000 + } + #[inline(always)] + fn max() -> i16 nopanic { + 0x7fff + } +} + +impl BoundedI32 of BoundedInt { + #[inline(always)] + fn min() -> i32 nopanic { + -0x80000000 + } + #[inline(always)] + fn max() -> i32 nopanic { + 0x7fffffff + } +} + +impl BoundedI64 of BoundedInt { + #[inline(always)] + fn min() -> i64 nopanic { + -0x8000000000000000 + } + #[inline(always)] + fn max() -> i64 nopanic { + 0x7fffffffffffffff + } +} + +impl BoundedI128 of BoundedInt { + #[inline(always)] + fn min() -> i128 nopanic { + -0x80000000000000000000000000000000 + } + #[inline(always)] + fn max() -> i128 nopanic { + 0x7fffffffffffffffffffffffffffffff + } +} + /// Conversions. impl Felt252TryIntoU8 of TryInto { fn try_into(self: felt252) -> Option { @@ -1674,15 +1693,13 @@ impl U128Felt252DictValue of Felt252DictValue { } } -impl UpcastableInto> of Into { +impl UpcastableInto> of Into { fn into(self: From) -> To { upcast(self) } } -impl DowncastableTryInto< - From, To, impl FromToDowncastable: Downcastable -> of TryInto { +impl DowncastableTryInto> of TryInto { fn try_into(self: From) -> Option { downcast(self) } @@ -1869,7 +1886,7 @@ enum SignedIntegerResult { Underflow: T, Overflow: T, } -impl SignedIntegerResultDrop> of Drop>; +impl SignedIntegerResultDrop> of Drop>; #[derive(Copy, Drop)] extern type i8; @@ -1881,6 +1898,8 @@ extern fn i8_to_felt252(a: i8) -> felt252 nopanic; extern fn i8_is_zero(a: i8) -> IsZeroResult implicits() nopanic; extern fn i8_eq(lhs: i8, rhs: i8) -> bool implicits() nopanic; +impl I8Serde = core::serde::into_felt252_based::SerdeImpl; + impl I8PartialEq of PartialEq { #[inline(always)] fn eq(lhs: @i8, rhs: @i8) -> bool { @@ -1980,6 +1999,8 @@ extern fn i16_to_felt252(a: i16) -> felt252 nopanic; extern fn i16_is_zero(a: i16) -> IsZeroResult implicits() nopanic; extern fn i16_eq(lhs: i16, rhs: i16) -> bool implicits() nopanic; +impl I16Serde = core::serde::into_felt252_based::SerdeImpl; + impl I16PartialEq of PartialEq { #[inline(always)] fn eq(lhs: @i16, rhs: @i16) -> bool { @@ -2079,6 +2100,8 @@ extern fn i32_to_felt252(a: i32) -> felt252 nopanic; extern fn i32_is_zero(a: i32) -> IsZeroResult implicits() nopanic; extern fn i32_eq(lhs: i32, rhs: i32) -> bool implicits() nopanic; +impl I32Serde = core::serde::into_felt252_based::SerdeImpl; + impl I32PartialEq of PartialEq { #[inline(always)] fn eq(lhs: @i32, rhs: @i32) -> bool { @@ -2178,6 +2201,8 @@ extern fn i64_to_felt252(a: i64) -> felt252 nopanic; extern fn i64_is_zero(a: i64) -> IsZeroResult implicits() nopanic; extern fn i64_eq(lhs: i64, rhs: i64) -> bool implicits() nopanic; +impl I64Serde = core::serde::into_felt252_based::SerdeImpl; + impl I64PartialEq of PartialEq { #[inline(always)] fn eq(lhs: @i64, rhs: @i64) -> bool { @@ -2277,6 +2302,8 @@ extern fn i128_to_felt252(a: i128) -> felt252 nopanic; extern fn i128_is_zero(a: i128) -> IsZeroResult implicits() nopanic; extern fn i128_eq(lhs: i128, rhs: i128) -> bool implicits() nopanic; +impl I128Serde = core::serde::into_felt252_based::SerdeImpl; + impl I128PartialEq of PartialEq { #[inline(always)] fn eq(lhs: @i128, rhs: @i128) -> bool { @@ -2332,6 +2359,32 @@ impl I128Neg of Neg { } } +impl I128Mul of Mul { + fn mul(lhs: i128, rhs: i128) -> i128 { + let (lhs_u127, lhs_neg) = match i128_diff(lhs, 0) { + Result::Ok(v) => (v, false), + Result::Err(v) => (~v + 1, true), + }; + let (rhs_u127, res_neg) = match i128_diff(rhs, 0) { + Result::Ok(v) => (v, lhs_neg), + Result::Err(v) => (~v + 1, !lhs_neg), + }; + let res_as_u128 = lhs_u127 * rhs_u127; + let res_as_felt252: felt252 = if res_neg { + -res_as_u128.into() + } else { + res_as_u128.into() + }; + res_as_felt252.try_into().expect('i128_mul Overflow') + } +} +impl I128MulEq of MulEq { + #[inline(always)] + fn mul_eq(ref self: i128, other: i128) { + self = Mul::mul(self, other); + } +} + /// If `lhs` >= `rhs` returns `Ok(lhs - rhs)` else returns `Err(2**128 + lhs - rhs)`. extern fn i128_diff(lhs: i128, rhs: i128) -> Result implicits(RangeCheck) nopanic; impl I128PartialOrd of PartialOrd { diff --git a/corelib/src/keccak.cairo b/corelib/src/keccak.cairo index 080fffc0e..945439061 100644 --- a/corelib/src/keccak.cairo +++ b/corelib/src/keccak.cairo @@ -38,12 +38,8 @@ fn keccak_u256s_le_inputs(mut input: Span) -> u256 { loop { match input.pop_front() { - Option::Some(v) => { - keccak_add_u256_le(ref keccak_input, *v); - }, - Option::None => { - break (); - }, + Option::Some(v) => { keccak_add_u256_le(ref keccak_input, *v); }, + Option::None => { break (); }, }; }; @@ -68,12 +64,8 @@ fn keccak_u256s_be_inputs(mut input: Span) -> u256 { loop { match input.pop_front() { - Option::Some(v) => { - keccak_add_u256_be(ref keccak_input, *v); - }, - Option::None => { - break (); - }, + Option::Some(v) => { keccak_add_u256_be(ref keccak_input, *v); }, + Option::None => { break (); }, }; }; diff --git a/corelib/src/lib.cairo b/corelib/src/lib.cairo index e41b93648..c6e274b69 100644 --- a/corelib/src/lib.cairo +++ b/corelib/src/lib.cairo @@ -172,8 +172,8 @@ impl Felt252PartialEq of PartialEq { #[inline(always)] fn eq(lhs: @felt252, rhs: @felt252) -> bool { match *lhs - *rhs { - 0 => bool::True(()), - _ => bool::False(()), + 0 => true, + _ => false, } } #[inline(always)] @@ -329,7 +329,14 @@ use bytes_31::{ // BytesArray. mod byte_array; -use byte_array::{ByteArray, ByteArrayIndexView, ByteArrayTrait}; +use byte_array::{ByteArray, ByteArrayIndexView, ByteArrayStringLiteral, ByteArrayTrait}; + +// String. +mod string; +use string::StringLiteral; + +// to_byte_array. +mod to_byte_array; #[cfg(test)] mod test; diff --git a/corelib/src/math.cairo b/corelib/src/math.cairo index 708222ec1..fd8027686 100644 --- a/corelib/src/math.cairo +++ b/corelib/src/math.cairo @@ -14,21 +14,21 @@ use integer::{u256_wide_mul, u512_safe_div_rem_by_u256}; /// Uses the Extended Euclidean algorithm. fn egcd< T, - impl TCopyImpl: Copy, - impl TDropImpl: Drop, - impl TAddImpl: Add, - impl TMulImpl: Mul, - impl TDivRemImpl: DivRem, - impl TZeroableImpl: Zeroable, - impl TOneableImpl: Oneable, - impl TTryIntoNonZeroImpl: TryInto>, + +Copy, + +Drop, + +Add, + +Mul, + +DivRem, + +Zeroable, + +Oneable, + +TryInto>, >( a: NonZero, b: NonZero ) -> (T, T, T, bool) { - let (q, r) = TDivRemImpl::div_rem(a.into(), b); + let (q, r) = DivRem::::div_rem(a.into(), b); if r.is_zero() { - return (b.into(), TZeroableImpl::zero(), TOneableImpl::one(), false); + return (b.into(), Zeroable::zero(), Oneable::one(), false); } // `sign` (1 for true, -1 for false) is the sign of `g` in the current iteration. @@ -44,20 +44,20 @@ fn egcd< /// Returns the inverse of `a` modulo `n`, or None if `gcd(a, n) > 1`. fn inv_mod< T, - impl TCopyImpl: Copy, - impl TDropImpl: Drop, - impl TAddImpl: Add, - impl TSubImpl: Sub, - impl TMulImpl: Mul, - impl TDivRemImpl: DivRem, - impl TZeroableImpl: Zeroable, - impl TOneableImpl: Oneable, - impl TTryIntoNonZeroImpl: TryInto>, + +Copy, + +Drop, + +Add, + +Sub, + +Mul, + +DivRem, + +Zeroable, + +Oneable, + +TryInto>, >( a: NonZero, n: NonZero ) -> Option { - if TOneableImpl::is_one(n.into()) { - return Option::Some(TZeroableImpl::zero()); + if Oneable::::is_one(n.into()) { + return Option::Some(Zeroable::zero()); } let (g, s, _, sub_direction) = egcd(a, n); if g.is_one() { diff --git a/corelib/src/option.cairo b/corelib/src/option.cairo index 79672c593..31c3148db 100644 --- a/corelib/src/option.cairo +++ b/corelib/src/option.cairo @@ -13,6 +13,9 @@ trait OptionTrait { fn expect(self: Option, err: felt252) -> T; /// If `val` is `Option::Some(x)`, returns `x`. Otherwise, panics. fn unwrap(self: Option) -> T; + /// Transforms the `Option` into a `Result`, mapping `Option::Some(v)` to + /// `Result::Ok(v)` and `Option::None` to `Result::Err(err)`. + fn ok_or>(self: Option, err: E) -> Result; /// Returns `true` if the `Option` is `Option::Some`. fn is_some(self: @Option) -> bool; /// Returns `true` if the `Option` is `Option::None`. @@ -26,10 +29,20 @@ impl OptionTraitImpl of OptionTrait { Option::None => panic_with_felt252(err), } } + #[inline(always)] fn unwrap(self: Option) -> T { self.expect('Option::unwrap failed.') } + + #[inline] + fn ok_or>(self: Option, err: E) -> Result { + match self { + Option::Some(v) => Result::Ok(v), + Option::None => Result::Err(err), + } + } + #[inline(always)] fn is_some(self: @Option) -> bool { match self { @@ -37,6 +50,7 @@ impl OptionTraitImpl of OptionTrait { Option::None => false, } } + #[inline(always)] fn is_none(self: @Option) -> bool { match self { diff --git a/corelib/src/poseidon.cairo b/corelib/src/poseidon.cairo index 360e8f888..c935425c0 100644 --- a/corelib/src/poseidon.cairo +++ b/corelib/src/poseidon.cairo @@ -73,15 +73,11 @@ fn _poseidon_hash_span_inner( let (s0, s1, s2) = state; let x = *match span.pop_front() { Option::Some(x) => x, - Option::None => { - return HashState { s0, s1, s2, odd: false }.finalize(); - }, + Option::None => { return HashState { s0, s1, s2, odd: false }.finalize(); }, }; let y = *match span.pop_front() { Option::Some(y) => y, - Option::None => { - return HashState { s0: s0 + x, s1, s2, odd: true }.finalize(); - }, + Option::None => { return HashState { s0: s0 + x, s1, s2, odd: true }.finalize(); }, }; let next_state = hades_permutation(s0 + x, s1 + y, s2); gas::withdraw_gas_all(builtin_costs).expect('Out of gas'); diff --git a/corelib/src/result.cairo b/corelib/src/result.cairo index 6c0b5c846..bc9535bee 100644 --- a/corelib/src/result.cairo +++ b/corelib/src/result.cairo @@ -11,25 +11,25 @@ enum Result { #[generate_trait] impl ResultTraitImpl of ResultTrait { /// If `val` is `Result::Ok(x)`, returns `x`. Otherwise, panics with `err`. - fn expect>(self: Result, err: felt252) -> T { + fn expect<+Drop>(self: Result, err: felt252) -> T { match self { Result::Ok(x) => x, Result::Err(_) => panic_with_felt252(err), } } /// If `val` is `Result::Ok(x)`, returns `x`. Otherwise, panics. - fn unwrap>(self: Result) -> T { + fn unwrap<+Drop>(self: Result) -> T { self.expect('Result::unwrap failed.') } /// If `val` is `Result::Err(x)`, returns `x`. Otherwise, panics with `err`. - fn expect_err>(self: Result, err: felt252) -> E { + fn expect_err<+Drop>(self: Result, err: felt252) -> E { match self { Result::Ok(_) => panic_with_felt252(err), Result::Err(x) => x, } } /// If `val` is `Result::Err(x)`, returns `x`. Otherwise, panics. - fn unwrap_err>(self: Result) -> E { + fn unwrap_err<+Drop>(self: Result) -> E { self.expect_err('Result::unwrap_err failed.') } /// Returns `true` if the `Result` is `Result::Ok`. @@ -50,7 +50,7 @@ impl ResultTraitImpl of ResultTrait { } /// Returns `true` if the `Result` is `Result::Ok`, and consumes the value. #[inline] - fn into_is_err, impl EDrop: Drop>(self: Result) -> bool { + fn into_is_err<+Drop, +Drop>(self: Result) -> bool { match self { Result::Ok(_) => false, Result::Err(_) => true, @@ -58,7 +58,7 @@ impl ResultTraitImpl of ResultTrait { } /// Returns `true` if the `Result` is `Result::Err`, and consumes the value. #[inline] - fn into_is_ok, impl EDrop: Drop>(self: Result) -> bool { + fn into_is_ok<+Drop, +Drop>(self: Result) -> bool { match self { Result::Ok(_) => true, Result::Err(_) => false, diff --git a/corelib/src/serde.cairo b/corelib/src/serde.cairo index 9d1891ac2..b4e2cef79 100644 --- a/corelib/src/serde.cairo +++ b/corelib/src/serde.cairo @@ -1,7 +1,5 @@ use array::ArrayTrait; use array::SpanTrait; -use traits::Into; -use traits::TryInto; trait Serde { fn serialize(self: @T, ref output: Array); @@ -15,44 +13,29 @@ impl TupleSize0Serde of Serde<()> { } } -impl TupleSize1Serde> of Serde<(E0,)> { +impl TupleSize1Serde> of Serde<(E0,)> { fn serialize(self: @(E0,), ref output: Array) { let (e0,) = self; e0.serialize(ref output) } fn deserialize(ref serialized: Span) -> Option<(E0,)> { - Option::Some((E0Serde::deserialize(ref serialized)?,)) + Option::Some((Serde::deserialize(ref serialized)?,)) } } -impl TupleSize2Serde< - E0, - E1, - impl E0Serde: Serde, - impl E0Drop: Drop, - impl E1Serde: Serde, - impl E0Drop: Drop -> of Serde<(E0, E1)> { +impl TupleSize2Serde, +Drop, +Serde, +Drop> of Serde<(E0, E1)> { fn serialize(self: @(E0, E1), ref output: Array) { let (e0, e1) = self; e0.serialize(ref output); e1.serialize(ref output) } fn deserialize(ref serialized: Span) -> Option<(E0, E1)> { - Option::Some((E0Serde::deserialize(ref serialized)?, E1Serde::deserialize(ref serialized)?)) + Option::Some((Serde::deserialize(ref serialized)?, Serde::deserialize(ref serialized)?)) } } impl TupleSize3Serde< - E0, - E1, - E2, - impl E0Serde: Serde, - impl E0Drop: Drop, - impl E1Serde: Serde, - impl E1Drop: Drop, - impl E2Serde: Serde, - impl E2Drop: Drop + E0, E1, E2, +Serde, +Drop, +Serde, +Drop, +Serde, +Drop > of Serde<(E0, E1, E2)> { fn serialize(self: @(E0, E1, E2), ref output: Array) { let (e0, e1, e2) = self; @@ -63,9 +46,9 @@ impl TupleSize3Serde< fn deserialize(ref serialized: Span) -> Option<(E0, E1, E2)> { Option::Some( ( - E0Serde::deserialize(ref serialized)?, - E1Serde::deserialize(ref serialized)?, - E2Serde::deserialize(ref serialized)? + Serde::deserialize(ref serialized)?, + Serde::deserialize(ref serialized)?, + Serde::deserialize(ref serialized)? ) ) } @@ -76,14 +59,14 @@ impl TupleSize4Serde< E1, E2, E3, - impl E0Serde: Serde, - impl E0Drop: Drop, - impl E1Serde: Serde, - impl E1Drop: Drop, - impl E2Serde: Serde, - impl E2Drop: Drop, - impl E3Serde: Serde, - impl E3Drop: Drop + +Serde, + +Drop, + +Serde, + +Drop, + +Serde, + +Drop, + +Serde, + +Drop > of Serde<(E0, E1, E2, E3)> { fn serialize(self: @(E0, E1, E2, E3), ref output: Array) { let (e0, e1, e2, e3) = self; @@ -95,11 +78,31 @@ impl TupleSize4Serde< fn deserialize(ref serialized: Span) -> Option<(E0, E1, E2, E3)> { Option::Some( ( - E0Serde::deserialize(ref serialized)?, - E1Serde::deserialize(ref serialized)?, - E2Serde::deserialize(ref serialized)?, - E3Serde::deserialize(ref serialized)? + Serde::deserialize(ref serialized)?, + Serde::deserialize(ref serialized)?, + Serde::deserialize(ref serialized)?, + Serde::deserialize(ref serialized)? ) ) } } + +/// Impl for `Serde` for types that can be converted into `felt252` using the `Into` trait and from `felt252` using the `TryInto` trait. +/// Usage example: +/// ```ignore +/// impl MyTypeSerde = core::serde::into_felt252_based::SerdeImpl;` +/// ``` +mod into_felt252_based { + use traits::{Into, TryInto}; + use core::array::ArrayTrait; + impl SerdeImpl, +Into, +TryInto> of super::Serde { + #[inline(always)] + fn serialize(self: @T, ref output: Array) { + output.append((*self).into()); + } + #[inline(always)] + fn deserialize(ref serialized: Span) -> Option { + Option::Some((*serialized.pop_front()?).try_into()?) + } + } +} diff --git a/corelib/src/starknet.cairo b/corelib/src/starknet.cairo index 21d3791be..36a11c627 100644 --- a/corelib/src/starknet.cairo +++ b/corelib/src/starknet.cairo @@ -41,6 +41,10 @@ use eth_address::{ EthAddress, EthAddressIntoFelt252, EthAddressSerde, EthAddressZeroable, Felt252TryIntoEthAddress }; +// EthSignature +mod eth_signature; +use eth_signature::verify_eth_signature; + // ClassHash mod class_hash; use class_hash::{ @@ -60,6 +64,8 @@ use event::Event; mod account; use account::AccountContract; +mod storage; + extern type System; // An Helper function to force the inclusion of `System` in the list of implicits. diff --git a/corelib/src/starknet/class_hash.cairo b/corelib/src/starknet/class_hash.cairo index 5d52693b6..1c1070a60 100644 --- a/corelib/src/starknet/class_hash.cairo +++ b/corelib/src/starknet/class_hash.cairo @@ -1,5 +1,6 @@ use zeroable::Zeroable; use serde::Serde; +use hash::{Hash, HashStateTrait}; #[derive(Copy, Drop)] extern type ClassHash; @@ -58,3 +59,6 @@ impl ClassHashPartialEq of PartialEq { !(lhs == rhs) } } + +impl HashClassHash, +Drop> = + core::hash::into_felt252_based::HashImpl; diff --git a/corelib/src/starknet/contract_address.cairo b/corelib/src/starknet/contract_address.cairo index 1e36eb1a8..b26acd75e 100644 --- a/corelib/src/starknet/contract_address.cairo +++ b/corelib/src/starknet/contract_address.cairo @@ -1,5 +1,6 @@ use zeroable::Zeroable; use serde::Serde; +use hash::{Hash, HashStateTrait}; #[derive(Copy, Drop)] extern type ContractAddress; @@ -60,3 +61,6 @@ impl ContractAddressPartialEq of PartialEq { !(lhs == rhs) } } + +impl HashContractAddress, +Drop> = + core::hash::into_felt252_based::HashImpl; diff --git a/corelib/src/starknet/eth_address.cairo b/corelib/src/starknet/eth_address.cairo index 857bd4a01..4bc019717 100644 --- a/corelib/src/starknet/eth_address.cairo +++ b/corelib/src/starknet/eth_address.cairo @@ -6,7 +6,7 @@ use traits::{Into, TryInto}; use zeroable::Zeroable; // An Ethereum address (160 bits). -#[derive(Copy, Drop, starknet::Store, PartialEq)] +#[derive(Copy, Drop, Hash, PartialEq, starknet::Store)] struct EthAddress { address: felt252, } diff --git a/corelib/src/starknet/eth_signature.cairo b/corelib/src/starknet/eth_signature.cairo new file mode 100644 index 000000000..a24ff1618 --- /dev/null +++ b/corelib/src/starknet/eth_signature.cairo @@ -0,0 +1,59 @@ +use option::OptionTrait; +use starknet::{ + EthAddress, + secp256_trait::{ + Secp256Trait, Secp256PointTrait, recover_public_key, is_signature_entry_valid, Signature + }, + secp256k1::Secp256k1Point, SyscallResult, SyscallResultTrait +}; +use keccak::keccak_u256s_be_inputs; + +/// Asserts that an Ethereum signature is valid w.r.t. a given Eth address +/// Also verifies that r and s components of the signature are in the range (0, N), +/// where N is the size of the curve. +fn verify_eth_signature(msg_hash: u256, signature: Signature, eth_address: EthAddress) { + match is_eth_signature_valid(:msg_hash, :signature, :eth_address) { + Result::Ok(()) => {}, + Result::Err(err) => panic_with_felt252(err), + } +} + +/// Asserts that an Ethereum signature is valid w.r.t. a given Eth address +/// Also verifies that r and s components of the signature are in the range (0, N), +/// where N is the size of the curve. +/// Returns a Result with an error string if the signature is invalid. +fn is_eth_signature_valid( + msg_hash: u256, signature: Signature, eth_address: EthAddress +) -> Result<(), felt252> { + if !is_signature_entry_valid::(signature.r) { + return Result::Err('Signature out of range'); + } + if !is_signature_entry_valid::(signature.s) { + return Result::Err('Signature out of range'); + } + + let public_key_point = recover_public_key::(:msg_hash, :signature).unwrap(); + let calculated_eth_address = public_key_point_to_eth_address(:public_key_point); + if eth_address != calculated_eth_address { + return Result::Err('Invalid signature'); + } + Result::Ok(()) +} + +/// Converts a public key point to the corresponding Ethereum address. +fn public_key_point_to_eth_address< + Secp256Point, +Drop, +Secp256Trait, +Secp256PointTrait +>( + public_key_point: Secp256Point +) -> EthAddress { + let (x, y) = public_key_point.get_coordinates().unwrap_syscall(); + + // Keccak output is little endian. + let point_hash_le = keccak_u256s_be_inputs(array![x, y].span()); + let point_hash = u256 { + low: integer::u128_byte_reverse(point_hash_le.high), + high: integer::u128_byte_reverse(point_hash_le.low) + }; + + point_hash.into() +} diff --git a/corelib/src/starknet/event.cairo b/corelib/src/starknet/event.cairo index 3689932c5..cf3ee2b78 100644 --- a/corelib/src/starknet/event.cairo +++ b/corelib/src/starknet/event.cairo @@ -4,5 +4,5 @@ trait Event { } trait EventEmitter { - fn emit>(ref self: T, event: S); + fn emit>(ref self: T, event: S); } diff --git a/corelib/src/starknet/info.cairo b/corelib/src/starknet/info.cairo index cd8a8887c..20b427a95 100644 --- a/corelib/src/starknet/info.cairo +++ b/corelib/src/starknet/info.cairo @@ -69,3 +69,65 @@ fn get_block_timestamp() -> u64 { fn get_block_number() -> u64 { get_block_info().unbox().block_number } + +/// The extended version of the `get_execution_info` syscall result. +mod v2 { + use starknet::contract_address::ContractAddress; + use super::BlockInfo; + + #[derive(Copy, Drop)] + struct ExecutionInfo { + block_info: Box, + tx_info: Box, + caller_address: ContractAddress, + contract_address: ContractAddress, + entry_point_selector: felt252, + } + + #[derive(Copy, Drop, Serde)] + struct TxInfo { + // The version of the transaction. It is fixed (currently, 1) in the OS, and should be + // signed by the account contract. + // This field allows invalidating old transactions, whenever the meaning of the other + // transaction fields is changed (in the OS). + version: felt252, + // The account contract from which this transaction originates. + account_contract_address: ContractAddress, + // The max_fee field of the transaction. + max_fee: u128, + // The signature of the transaction. + signature: Span, + // The hash of the transaction. + transaction_hash: felt252, + // The identifier of the chain. + // This field can be used to prevent replay of testnet transactions on mainnet. + chain_id: felt252, + // The transaction's nonce. + nonce: felt252, + // A span of ResourceBounds structs. + resource_bounds: Span, + // The tip. + tip: u128, + // If specified, the paymaster should pay for the execution of the tx. + // The data includes the address of the paymaster sponsoring the transaction, followed by + // extra data to send to the paymaster. + paymaster_data: Span, + // The data availability mode for the nonce. + nonce_data_availabilty_mode: u32, + // The data availability mode for the account balance from which fee will be taken. + fee_data_availabilty_mode: u32, + // If nonempty, will contain the required data for deploying and initializing an account + // contract: its class hash, address salt and constructor calldata. + account_deployment_data: Span, + } + + #[derive(Copy, Drop, Serde)] + struct ResourceBounds { + // The name of the resource. + resource: felt252, + // The maximum amount of the resource allowed for usage during the execution. + max_amount: u64, + // The maximum price the user is willing to pay for the resource unit. + max_price_per_unit: u128, + } +} diff --git a/corelib/src/starknet/secp256_trait.cairo b/corelib/src/starknet/secp256_trait.cairo index 72db7e77d..181cd3400 100644 --- a/corelib/src/starknet/secp256_trait.cairo +++ b/corelib/src/starknet/secp256_trait.cairo @@ -1,5 +1,4 @@ use array::ArrayTrait; -use keccak::keccak_u256s_be_inputs; use math::{u256_mul_mod_n, inv_mod}; use option::OptionTrait; use starknet::{eth_address::U256IntoEthAddress, EthAddress, SyscallResult, SyscallResultTrait}; @@ -7,7 +6,7 @@ use traits::{Into, TryInto}; use integer::U256TryIntoNonZero; /// Secp256{k/r}1 ECDSA signature. -#[derive(Copy, Drop, PartialEq, Serde, starknet::Store)] +#[derive(Copy, Drop, PartialEq, Serde, starknet::Store, Hash)] struct Signature { r: u256, s: u256, @@ -43,14 +42,49 @@ trait Secp256PointTrait { fn mul(self: Secp256Point, scalar: u256) -> SyscallResult; } +/// Checks whether `value` is in the range [1, N), where N is the size of the curve. +fn is_signature_entry_valid< + Secp256Point, +Drop, impl Secp256Impl: Secp256Trait +>( + value: u256 +) -> bool { + value != 0_u256 && value < Secp256Impl::get_curve_size() +} + +fn is_valid_signature< + Secp256Point, + +Drop, + impl Secp256Impl: Secp256Trait, + +Secp256PointTrait +>( + msg_hash: u256, r: u256, s: u256, public_key: Secp256Point +) -> bool { + if !is_signature_entry_valid::(r) + || !is_signature_entry_valid::(s) { + return false; + } + + let n_nz = Secp256Impl::get_curve_size().try_into().unwrap(); + let s_inv = inv_mod(s.try_into().unwrap(), n_nz).unwrap(); + let u1 = u256_mul_mod_n(msg_hash, s_inv, n_nz); + let u2 = u256_mul_mod_n(r, s_inv, n_nz); + + let generator_point = Secp256Impl::get_generator_point(); + let point1 = generator_point.mul(u1).unwrap_syscall(); + let point2 = public_key.mul(u2).unwrap_syscall(); + let sum = point1.add(point2).unwrap_syscall(); + + let (x, y) = sum.get_coordinates().unwrap_syscall(); + x == r +} /// Receives a signature and the signed message hash. /// Returns the public key associated with the signer, represented as a point on the curve. fn recover_public_key< Secp256Point, - impl Secp256PointDrop: Drop, + +Drop, impl Secp256Impl: Secp256Trait, - impl Secp256PointImpl: Secp256PointTrait + +Secp256PointTrait >( msg_hash: u256, signature: Signature ) -> Option { @@ -79,88 +113,9 @@ fn recover_public_key< /// Computes the negation of a scalar modulo N (the size of the curve). fn secp256_ec_negate_scalar< - Secp256Point, - impl Secp256PointDrop: Drop, - impl Secp256Impl: Secp256Trait + Secp256Point, +Drop, impl Secp256Impl: Secp256Trait >( c: u256 ) -> u256 { Secp256Impl::get_curve_size() - c } - - -/// Checks a Secp256 ECDSA signature. -/// Also verifies that r and s components of the signature are in the range (0, N), -/// where N is the size of the curve. -/// Returns a Result with an error string if the signature is invalid. -fn is_eth_signature_valid< - Secp256Point, - impl Secp256PointDrop: Drop, - impl Secp256Impl: Secp256Trait, - impl Secp256PointImpl: Secp256PointTrait ->( - msg_hash: u256, signature: Signature, eth_address: EthAddress -) -> Result<(), felt252> { - if !is_signature_entry_valid::(signature.r) { - return Result::Err('Signature out of range'); - } - if !is_signature_entry_valid::(signature.s) { - return Result::Err('Signature out of range'); - } - - let public_key_point = recover_public_key::(:msg_hash, :signature).unwrap(); - let calculated_eth_address = public_key_point_to_eth_address(:public_key_point); - if eth_address != calculated_eth_address { - return Result::Err('Invalid signature'); - } - Result::Ok(()) -} - -/// Asserts that a Secp256 ECDSA signature is valid. -/// Also verifies that r and s components of the signature are in the range (0, N), -/// where N is the size of the curve. -fn verify_eth_signature< - Secp256Point, - impl Secp256PointDrop: Drop, - impl Secp256Impl: Secp256Trait, - impl Secp256PointImpl: Secp256PointTrait ->( - msg_hash: u256, signature: Signature, eth_address: EthAddress -) { - match is_eth_signature_valid::(:msg_hash, :signature, :eth_address) { - Result::Ok(()) => {}, - Result::Err(err) => panic_with_felt252(err), - } -} - -/// Checks whether `value` is in the range [1, N), where N is the size of the curve. -fn is_signature_entry_valid< - Secp256Point, - impl Secp256PointDrop: Drop, - impl Secp256Impl: Secp256Trait ->( - value: u256 -) -> bool { - value != 0_u256 && value < Secp256Impl::get_curve_size() -} - -/// Converts a public key point to the corresponding Ethereum address. -fn public_key_point_to_eth_address< - Secp256Point, - impl Secp256PointDrop: Drop, - impl Secp256Impl: Secp256Trait, - impl Secp256PointImpl: Secp256PointTrait ->( - public_key_point: Secp256Point -) -> EthAddress { - let (x, y) = public_key_point.get_coordinates().unwrap_syscall(); - - // Keccak output is little endian. - let point_hash_le = keccak_u256s_be_inputs(array![x, y].span()); - let point_hash = u256 { - low: integer::u128_byte_reverse(point_hash_le.high), - high: integer::u128_byte_reverse(point_hash_le.low) - }; - - point_hash.into() -} diff --git a/corelib/src/starknet/secp256k1.cairo b/corelib/src/starknet/secp256k1.cairo index 7030844f6..d02e0a202 100644 --- a/corelib/src/starknet/secp256k1.cairo +++ b/corelib/src/starknet/secp256k1.cairo @@ -3,7 +3,10 @@ use option::OptionTrait; use starknet::{ - EthAddress, secp256_trait::{Secp256Trait, Secp256PointTrait}, SyscallResult, SyscallResultTrait + secp256_trait::{ + Secp256Trait, Secp256PointTrait, recover_public_key, is_signature_entry_valid, Signature + }, + SyscallResult, SyscallResultTrait }; #[derive(Copy, Drop)] diff --git a/corelib/src/starknet/storage.cairo b/corelib/src/starknet/storage.cairo new file mode 100644 index 000000000..1818a0cdc --- /dev/null +++ b/corelib/src/starknet/storage.cairo @@ -0,0 +1,71 @@ +/// Trait for getting the address of any contract/component storage member. +trait StorageMemberAddressTrait { + fn address(self: @TMemberState) -> starknet::StorageBaseAddress nopanic; +} + +/// Trait for accessing any contract/component storage member. +trait StorageMemberAccessTrait { + fn read(self: @TMemberState) -> TValue; + fn write(ref self: TMemberState, value: TValue); +} + +/// Implementation of StorageMemberAccessTrait for types that implement StorageMemberAddressTrait. +impl StorageMemberAccessImpl< + TMemberState, + TValue, + +StorageMemberAddressTrait, + +starknet::Store, + +Drop, +> of StorageMemberAccessTrait { + fn read(self: @TMemberState) -> TValue { + // Only address_domain 0 is currently supported. + let address_domain = 0_u32; + starknet::SyscallResultTraitImpl::unwrap_syscall( + starknet::Store::::read(address_domain, self.address()) + ) + } + fn write(ref self: TMemberState, value: TValue) { + // Only address_domain 0 is currently supported. + let address_domain = 0_u32; + let write_result = starknet::Store::::write(address_domain, self.address(), value); + starknet::SyscallResultTraitImpl::unwrap_syscall(write_result) + } +} + +/// Trait for getting the address of any contract/component mapping storage member. +trait StorageMapMemberAddressTrait { + fn address(self: @TMemberState, key: TKey) -> starknet::StorageBaseAddress; +} + +/// Trait for accessing any contract/component storage member. +trait StorageMapMemberAccessTrait { + fn read(self: @TMemberState, key: TKey) -> TValue; + fn write(ref self: TMemberState, key: TKey, value: TValue); +} + +/// Implementation of StorageMapMemberAccessTrait for types that implement +/// StorageMapMemberAddressTrait. +impl StorageMapMemberAccessImpl< + TMemberState, + TKey, + TValue, + +StorageMapMemberAddressTrait, + +starknet::Store, + +Drop, + +PanicDestruct, +> of StorageMapMemberAccessTrait { + fn read(self: @TMemberState, key: TKey) -> TValue { + // Only address_domain 0 is currently supported. + let address_domain = 0_u32; + starknet::SyscallResultTraitImpl::unwrap_syscall( + starknet::Store::::read(address_domain, self.address(key)) + ) + } + fn write(ref self: TMemberState, key: TKey, value: TValue) { + // Only address_domain 0 is currently supported. + let address_domain = 0_u32; + starknet::SyscallResultTraitImpl::unwrap_syscall( + starknet::Store::::write(address_domain, self.address(key), value) + ) + } +} diff --git a/corelib/src/starknet/storage_access.cairo b/corelib/src/starknet/storage_access.cairo index 8cbae6393..43dc3ee7c 100644 --- a/corelib/src/starknet/storage_access.cairo +++ b/corelib/src/starknet/storage_access.cairo @@ -447,7 +447,7 @@ impl TupleSize0Store of Store<()> { } } -impl TupleSize1Store, impl E0Drop: Drop> of Store<(E0,)> { +impl TupleSize1Store, +Drop> of Store<(E0,)> { #[inline(always)] fn read(address_domain: u32, base: StorageBaseAddress) -> SyscallResult<(E0,)> { Result::Ok((E0Store::read(address_domain, base)?,)) @@ -477,12 +477,7 @@ impl TupleSize1Store, impl E0Drop: Drop> of Stor } impl TupleSize2Store< - E0, - E1, - impl E0Store: Store, - impl E0Drop: Drop, - impl E1Store: Store, - impl E0Drop: Drop + E0, E1, impl E0Store: Store, +Drop, impl E1Store: Store, +Drop > of Store<(E0, E1)> { #[inline(always)] fn read(address_domain: u32, base: StorageBaseAddress) -> SyscallResult<(E0, E1)> { @@ -525,11 +520,11 @@ impl TupleSize3Store< E1, E2, impl E0Store: Store, - impl E0Drop: Drop, + +Drop, impl E1Store: Store, - impl E1Drop: Drop, + +Drop, impl E2Store: Store, - impl E2Drop: Drop + +Drop > of Store<(E0, E1, E2)> { #[inline(always)] fn read(address_domain: u32, base: StorageBaseAddress) -> SyscallResult<(E0, E1, E2)> { @@ -585,13 +580,13 @@ impl TupleSize4Store< E2, E3, impl E0Store: Store, - impl E0Drop: Drop, + +Drop, impl E1Store: Store, - impl E1Drop: Drop, + +Drop, impl E2Store: Store, - impl E2Drop: Drop, + +Drop, impl E3Store: Store, - impl E3Drop: Drop + +Drop > of Store<(E0, E1, E2, E3)> { #[inline(always)] fn read(address_domain: u32, base: StorageBaseAddress) -> SyscallResult<(E0, E1, E2, E3)> { @@ -650,9 +645,7 @@ impl TupleSize4Store< } -impl ResultStore< - T, E, impl TStore: Store, impl EStore: Store, impl TDrop: Drop, impl EDrop: Drop, -> of Store> { +impl ResultStore, +Store, +Drop, +Drop> of Store> { #[inline(always)] fn read(address_domain: u32, base: StorageBaseAddress) -> SyscallResult> { let idx = Store::::read(address_domain, base)?; @@ -723,7 +716,7 @@ impl ResultStore< } } -impl OptionStore, impl TDrop: Drop,> of Store> { +impl OptionStore, +Drop,> of Store> { #[inline(always)] fn read(address_domain: u32, base: StorageBaseAddress) -> SyscallResult> { let idx = Store::::read(address_domain, base)?; @@ -732,7 +725,7 @@ impl OptionStore, impl TDrop: Drop,> of Store