diff --git a/Cargo.lock b/Cargo.lock index 67a2b32..03f2882 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,22 +1,16 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.0" @@ -41,10 +35,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -73,9 +66,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -92,11 +85,21 @@ dependencies = [ "libc", ] +[[package]] +name = "annotate-snippets" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" +dependencies = [ + "anstyle", + "unicode-width", +] + [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -109,43 +112,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "arc-swap" @@ -155,18 +159,22 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "ark-ec" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" dependencies = [ - "ark-ff", + "ahash", + "ark-ff 0.5.0", "ark-poly", - "ark-serialize", - "ark-std", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", - "num-traits 0.2.19", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.2", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", "zeroize", ] @@ -176,20 +184,40 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest", "itertools 0.10.5", "num-bigint", - "num-traits 0.2.19", + "num-traits", "paste", "rustc_version", "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -200,6 +228,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.100", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -207,45 +245,60 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ "num-bigint", - "num-traits 0.2.19", + "num-traits", "proc-macro2", "quote", "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "ark-poly" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", - "derivative", - "hashbrown 0.13.2", + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.2", ] [[package]] name = "ark-secp256k1" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c02e954eaeb4ddb29613fee20840c2bbc85ca4396d53e33837e11905363c5f2" +checksum = "f8bd211c48debd3037b48873a7aa22c3aba034e83388aa4124795c9f220b88c7" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.5.0", + "ark-std 0.5.0", ] [[package]] name = "ark-secp256r1" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3975a01b0a6e3eae0f72ec7ca8598a6620fc72fa5981f6f5cca33b7cd788f633" +checksum = "5cf8be5820de567729bfa73a410ddd07cec8ad102d9a4bf61fd6b2e60db264e8" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.5.0", + "ark-std 0.5.0", ] [[package]] @@ -253,22 +306,34 @@ name = "ark-serialize" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" dependencies = [ "ark-serialize-derive", - "ark-std", + "ark-std 0.5.0", + "arrayvec", "digest", "num-bigint", ] [[package]] name = "ark-serialize-derive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.100", ] [[package]] @@ -277,8 +342,18 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ - "num-traits 0.2.19", - "rand", + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", ] [[package]] @@ -289,9 +364,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "ascii-canvas" -version = "3.0.0" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" dependencies = [ "term", ] @@ -304,9 +379,9 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-compression" -version = "0.4.12" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" +checksum = "310c9bcae737a48ef5cdee3174184e6d548b292739ede61a1f955ef76a738861" dependencies = [ "brotli", "flate2", @@ -318,45 +393,45 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -373,33 +448,43 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb97d56060ee67d285efb8001fec9d2a4c710c32efd2e14b5cbb5ba71930fc2d" + +[[package]] +name = "bincode" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] [[package]] name = "bincode" -version = "2.0.0-rc.3" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11ea1a0346b94ef188834a65c068a03aec181c94896d481d7a0a40d85b0ce95" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" dependencies = [ "serde", + "unty", ] [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" @@ -409,9 +494,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "bitvec" @@ -436,9 +521,9 @@ dependencies = [ [[package]] name = "brotli" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -447,9 +532,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -457,26 +542,26 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" dependencies = [ "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.9", "serde", ] [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "byteorder" @@ -486,15 +571,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "bytesize" -version = "1.3.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" +checksum = "2d2c12f985c78475a6b8d629afd0c360260ef34cfef52efccdcfd31972f81c2e" [[package]] name = "bzip2" @@ -508,12 +593,11 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] @@ -524,7 +608,7 @@ source = "git+https://github.com/cartridge-gg/cainome.git?rev=0d29bb0#0d29bb06b3 dependencies = [ "serde", "starknet", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -536,7 +620,7 @@ dependencies = [ "lazy_static", "num-bigint", "num-integer", - "num-traits 0.2.19", + "num-traits", "serde", ] @@ -547,10 +631,10 @@ dependencies = [ "cainome-cairo-serde", "cairo-lang-sierra", "cairo-lang-utils", - "cairo-vm 1.0.1 (git+https://github.com/raphaelDkhn/cairo-vm.git?rev=2738ec0)", + "cairo-vm 2.0.0", "hex", "itertools 0.12.1", - "num-traits 0.2.19", + "num-traits", "serde", "serde_json", "serde_yaml", @@ -559,23 +643,23 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a43421bf72645b3a562d264747166d6f093e960a69dfa38b67bb3209e370366" +checksum = "9fd285350180106409ee63a7098f074bc93b3d1f9c522e58a066354e5917d94b" dependencies = [ "cairo-lang-utils", "indoc", "num-bigint", - "num-traits 0.2.19", + "num-traits", "parity-scale-codec", "serde", ] [[package]] name = "cairo-lang-compiler" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24242af537265add372896d9ab0678c86a68d3484281fbeb6d8a9d4d5bacf7c8" +checksum = "16fd34920920a4e22de5a8bb4b50f1764c044d98b5706f9bb43daaaa60113471" dependencies = [ "anyhow", "cairo-lang-defs", @@ -590,25 +674,27 @@ dependencies = [ "cairo-lang-syntax", "cairo-lang-utils", "indoc", - "salsa", + "rayon", + "rust-analyzer-salsa", + "semver", "smol_str", - "thiserror", + "thiserror 2.0.12", ] [[package]] name = "cairo-lang-debug" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d28f38e1c62fed15a4de9f3c95741d6b24ef2a9e67a2b88a047eb6ea7de992e" +checksum = "a2cb099c7fda2abd48aee356ff583fca8e66cf0d06efaec7f28e004eab49bbf9" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712206b7be3fb1a33e50e1c30aa8502b4a461155fd93ad26213d0d8b242cb08d" +checksum = "be28c63e383b9c0ae0dcac069e0c3d6245424cbde5dff3b90dd9014e359db1ba" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -616,52 +702,80 @@ dependencies = [ "cairo-lang-parser", "cairo-lang-syntax", "cairo-lang-utils", - "itertools 0.12.1", - "salsa", + "itertools 0.14.0", + "rust-analyzer-salsa", "smol_str", ] [[package]] name = "cairo-lang-diagnostics" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3c8dc2bff2411fbf602d80a83b719e6e3955c1c5d767ec18b295fc92e8616a" +checksum = "25677b40c2f9f0fa488d0c015e73fa8706974c0f766646679a11552e17f41bfb" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", "cairo-lang-utils", - "itertools 0.12.1", + "itertools 0.14.0", ] [[package]] name = "cairo-lang-eq-solver" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa8ac24c97770739f5a78d630b8515273c8b9f4aff34e1f88b988fac50340de" +checksum = "1390d00c5e22b72d71cfe3b800ebd9b684c97c43edbf8e640106f7a0c9a952d4" dependencies = [ "cairo-lang-utils", "good_lp", ] +[[package]] +name = "cairo-lang-executable" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "364530a38f319573ca93242f68df1f50341a6922f98528c22f7d37fef6f03b33" +dependencies = [ + "anyhow", + "cairo-lang-casm", + "cairo-lang-compiler", + "cairo-lang-debug", + "cairo-lang-defs", + "cairo-lang-filesystem", + "cairo-lang-lowering", + "cairo-lang-plugins", + "cairo-lang-runnable-utils", + "cairo-lang-semantic", + "cairo-lang-sierra-generator", + "cairo-lang-sierra-to-casm", + "cairo-lang-syntax", + "cairo-lang-utils", + "cairo-vm 1.0.2", + "indoc", + "itertools 0.14.0", + "serde", +] + [[package]] name = "cairo-lang-filesystem" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4596331565fe61d10a0a6a03ace2b9d0ba93f03ee12a8450fe9252a6fee770f3" +checksum = "e9b636791fec1fa11ca6ac63af146dd05a3eb5fc6f8baf1effd820a6d99e4454" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", "path-clean", - "salsa", + "rust-analyzer-salsa", + "semver", "serde", "smol_str", + "toml", ] [[package]] name = "cairo-lang-formatter" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b8eb08e511d6e6df51370cdc7d85f0de9a38c8b14a15762665c60c2df6d32d" +checksum = "79db7448e78a71a638bb6346936935ff546a24087bc0a95b1f579c60acdac835" dependencies = [ "anyhow", "cairo-lang-diagnostics", @@ -671,11 +785,10 @@ dependencies = [ "cairo-lang-utils", "diffy", "ignore", - "itertools 0.12.1", - "salsa", + "itertools 0.14.0", + "rust-analyzer-salsa", "serde", - "smol_str", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -696,20 +809,21 @@ dependencies = [ "cairo-lang-utils", "cairo-oracle-hint-processor", "cairo-proto-serde", - "cairo-vm 1.0.1 (git+https://github.com/raphaelDkhn/cairo-vm.git?rev=2738ec0)", - "colored", + "cairo-vm 2.0.0", + "colored 2.2.0", "itertools 0.12.1", - "num-traits 0.2.19", + "num-traits", "rayon", "serde_json", ] [[package]] name = "cairo-lang-lowering" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d535dc591513875b39b799270df21db10540033fd7710917760c22fc063a4ae" +checksum = "8294f7d9d89cf87a4fcbda26bdaeb76c332a85e6cdcb9b07d0d463cd03a4d3a6" dependencies = [ + "bincode 1.3.3", "cairo-lang-debug", "cairo-lang-defs", "cairo-lang-diagnostics", @@ -720,23 +834,26 @@ dependencies = [ "cairo-lang-syntax", "cairo-lang-utils", "id-arena", - "itertools 0.12.1", + "itertools 0.14.0", "log", "num-bigint", - "num-traits 0.2.19", - "once_cell", - "salsa", + "num-integer", + "num-traits", + "rust-analyzer-salsa", + "serde", "smol_str", ] [[package]] name = "cairo-lang-macro" -version = "0.1.0" -source = "git+https://github.com/software-mansion/scarb.git?rev=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dda77fe9404e438edaa80c9acaf0d72260aa883ba433812d0a745f5a72f31881" dependencies = [ "cairo-lang-macro-attributes", "cairo-lang-macro-stable", "linkme", + "serde", ] [[package]] @@ -747,7 +864,7 @@ checksum = "e32e958decd95ae122ee64daa26721da2f76e83231047f947fd9cdc5d3c90cc6" dependencies = [ "quote", "scarb-stable-hash 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -758,29 +875,30 @@ checksum = "c49906d6b1c215e5814be7c5c65ecf2328898b335bee8c2409ec07cfb5530daf" [[package]] name = "cairo-lang-parser" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73019d5873715964f428ff10467efb607d6dc007ae164a21547bf20d9b5dcc72" +checksum = "bd0bde29b6bf6bff82c6aba80026e43e87d4239f1f21230e391fb390aec1abda" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", + "cairo-lang-primitive-token", "cairo-lang-syntax", "cairo-lang-syntax-codegen", "cairo-lang-utils", - "colored", - "itertools 0.12.1", + "colored 3.0.0", + "itertools 0.14.0", "num-bigint", - "num-traits 0.2.19", - "salsa", + "num-traits", + "rust-analyzer-salsa", "smol_str", "unescaper", ] [[package]] name = "cairo-lang-plugins" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96e52fca18bc696011a47a4ded0dc00e2e0ac7c81a8052eddd4ad546c46b818e" +checksum = "4468692f81a90505f4e999756df23a2463e617b50a40977e41895fcd97f2fb74" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -790,72 +908,94 @@ dependencies = [ "cairo-lang-utils", "indent", "indoc", - "itertools 0.12.1", - "salsa", + "itertools 0.14.0", + "rust-analyzer-salsa", "smol_str", ] +[[package]] +name = "cairo-lang-primitive-token" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "123ac0ecadf31bacae77436d72b88fa9caef2b8e92c89ce63a125ae911a12fae" + [[package]] name = "cairo-lang-proc-macros" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d55dcf98a6e1a03e0b36129fad4253f9e6666a1746ab9c075d212ba68a4e9c1" +checksum = "ef642f3694cd7aee3d2ec9ebe55dfe3b7edecf00a54888314b24a3b91e688bcf" dependencies = [ "cairo-lang-debug", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "cairo-lang-project" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ddb432e5199a65e37bab97ef6322afabd60e0e638ada31178d9c23d237219d" +checksum = "590494781a31f1757f195695c13e7923c52bfec3ac28df169cfab9dc2deb8e68" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", "serde", - "smol_str", - "thiserror", + "thiserror 2.0.12", "toml", ] +[[package]] +name = "cairo-lang-runnable-utils" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9998568fa7b7e5934c9b9e8530dd965040f10a729abd6ad2f466da5fbfb65379" +dependencies = [ + "cairo-lang-casm", + "cairo-lang-sierra", + "cairo-lang-sierra-ap-change", + "cairo-lang-sierra-gas", + "cairo-lang-sierra-to-casm", + "cairo-lang-sierra-type-size", + "cairo-lang-utils", + "cairo-vm 1.0.2", + "itertools 0.14.0", + "thiserror 2.0.12", +] + [[package]] name = "cairo-lang-runner" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef5bbbabd509ce88abc67436973d3377e099269dbd14578fa84fce884a74fa23" +checksum = "9812ce5aa64d148ce6f428edd3df1ee722361c7b7a63c227059bed7999f73088" dependencies = [ - "ark-ff", + "ark-ff 0.5.0", "ark-secp256k1", "ark-secp256r1", "cairo-lang-casm", "cairo-lang-lowering", + "cairo-lang-runnable-utils", "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", "cairo-lang-sierra-generator", "cairo-lang-sierra-to-casm", - "cairo-lang-sierra-type-size", "cairo-lang-starknet", "cairo-lang-utils", - "cairo-vm 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.12.1", + "cairo-vm 1.0.2", + "itertools 0.14.0", "keccak", "num-bigint", "num-integer", - "num-traits 0.2.19", - "rand", + "num-traits", + "rand 0.9.0", "sha2", "smol_str", - "starknet-types-core 0.1.5", - "thiserror", + "starknet-types-core 0.1.7", + "thiserror 2.0.12", ] [[package]] name = "cairo-lang-semantic" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "393325820207491a7475269e98163e0db7e85e4b215f4d801ca537ce1cd6daa7" +checksum = "caf53837960f20b95091b6a26b4bcf7a12e1d5b974e99e3b3f58bbade7c6dd2a" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -869,80 +1009,79 @@ dependencies = [ "cairo-lang-utils", "id-arena", "indoc", - "itertools 0.12.1", + "itertools 0.14.0", "num-bigint", - "num-traits 0.2.19", - "once_cell", - "salsa", + "num-traits", + "rust-analyzer-salsa", + "sha3", "smol_str", "toml", ] [[package]] name = "cairo-lang-sierra" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "918fb0611203fb8cdd1fcdb434f395a59e0ebb0db64b11a0e15bfbfb03552821" +checksum = "59477bd2dacb420b9d60d94ab53947d267b0bc7ecdcc05ca9a7fe3c84edb4cc0" dependencies = [ "anyhow", "cairo-lang-utils", "const-fnv1a-hash", "convert_case", "derivative", - "itertools 0.12.1", + "itertools 0.14.0", "lalrpop", "lalrpop-util", "num-bigint", "num-integer", - "num-traits 0.2.19", - "once_cell", + "num-traits", "regex", - "salsa", + "rust-analyzer-salsa", "serde", "serde_json", "sha3", "smol_str", - "starknet-types-core 0.1.5", - "thiserror", + "starknet-types-core 0.1.7", + "thiserror 2.0.12", ] [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa1834ec729e89fcbd00df03f2a64a18515fcf07eb18dfef39afe020a10955d" +checksum = "6dd34b6d11d53f2b730aac15b23c3f3b8aedaf84c39e6daf8329e7e6de9eb02d" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", "cairo-lang-sierra-type-size", "cairo-lang-utils", - "itertools 0.12.1", + "itertools 0.14.0", "num-bigint", - "num-traits 0.2.19", - "thiserror", + "num-traits", + "thiserror 2.0.12", ] [[package]] name = "cairo-lang-sierra-gas" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b00927d39f910dd5ae1047cef9b46b2ee11617d33d290f875bc00dfc7e3d992" +checksum = "c3e4f829dc68364f3479710a4bac28cf8445d41ced6d814cefeb795eea09bbf2" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", "cairo-lang-sierra-type-size", "cairo-lang-utils", - "itertools 0.12.1", + "itertools 0.14.0", "num-bigint", - "num-traits 0.2.19", - "thiserror", + "num-traits", + "thiserror 2.0.12", ] [[package]] name = "cairo-lang-sierra-generator" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7620a6a7becf5997093a83d289a5e3b3162bc8fd031ad75df82a5bc04f8cc954" +checksum = "e047ad26ac7ae708f10690aa657a9a44e940610f0613f6787683a9432fd2bf1f" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -954,10 +1093,9 @@ dependencies = [ "cairo-lang-sierra", "cairo-lang-syntax", "cairo-lang-utils", - "itertools 0.12.1", - "num-traits 0.2.19", - "once_cell", - "salsa", + "itertools 0.14.0", + "num-traits", + "rust-analyzer-salsa", "serde", "serde_json", "smol_str", @@ -965,9 +1103,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67bd155770abf91d4290a31b0c0a1fb393ecee85eb0af40c16893b4601eff4d6" +checksum = "56bc33070453d938e9c0215946e729640022e0836e7115586e71cde2ad32be4f" dependencies = [ "assert_matches", "cairo-lang-casm", @@ -977,18 +1115,18 @@ dependencies = [ "cairo-lang-sierra-type-size", "cairo-lang-utils", "indoc", - "itertools 0.12.1", + "itertools 0.14.0", "num-bigint", - "num-traits 0.2.19", - "starknet-types-core 0.1.5", - "thiserror", + "num-traits", + "starknet-types-core 0.1.7", + "thiserror 2.0.12", ] [[package]] name = "cairo-lang-sierra-type-size" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbae9458999da692c272501678b6cfec358a6bcadb54921bf35d21afdcd91251" +checksum = "a5b271327e76ef9983c2f026b0d77a3ccfaba15281cf7fb144f0b132c7f4ab9c" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -996,9 +1134,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f242d889180386d35935597f9d1cac07d4f3d60bd0f10558660ae4a77da701b6" +checksum = "15583fe71edfbe49f371e2d66ad567f1504f7b3bbb9f0b5599172856efc1dee1" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1016,60 +1154,60 @@ dependencies = [ "const_format", "indent", "indoc", - "itertools 0.12.1", - "once_cell", + "itertools 0.14.0", "serde", "serde_json", "smol_str", - "starknet-types-core 0.1.5", - "thiserror", + "starknet-types-core 0.1.7", + "thiserror 2.0.12", ] [[package]] name = "cairo-lang-starknet-classes" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa17b313f46fcf7ff4de32b86c250eaf584d1e2c8e37ed16db155b221721e735" +checksum = "f8b1e830041e8ef3092ec0675dd3f755d301dd980a6694841fe4593342192236" dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", "cairo-lang-sierra-to-casm", "cairo-lang-utils", "convert_case", - "itertools 0.12.1", + "itertools 0.14.0", "num-bigint", "num-integer", - "num-traits 0.2.19", - "once_cell", + "num-traits", "serde", "serde_json", "sha3", "smol_str", - "starknet-types-core 0.1.5", - "thiserror", + "starknet-types-core 0.1.7", + "thiserror 2.0.12", ] [[package]] name = "cairo-lang-syntax" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0ca518ed7c3674d9b62470f7482f4b07553eb3a02d83e0ae61bd6b5ecb4ec8" +checksum = "ed44747e2f36de724204b9c7e74292488a8b9e4c56f199d78eb66f8b6e96935f" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", + "cairo-lang-primitive-token", "cairo-lang-utils", "num-bigint", - "num-traits 0.2.19", - "salsa", + "num-traits", + "rust-analyzer-salsa", + "serde", "smol_str", "unescaper", ] [[package]] name = "cairo-lang-syntax-codegen" -version = "2.7.1" +version = "2.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01f276bc28f6302fc63032046a12b60d18498906e65f646acb963244eed97f7c" +checksum = "ef844093fbe46c1e2ead60316591f5be2d3e4b8fad93194a7302a8bb977328ab" dependencies = [ "genco", "xshell", @@ -1077,15 +1215,14 @@ dependencies = [ [[package]] name = "cairo-lang-test-plugin" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20b526ea053b930222352027b3259be44fb3cd3b25106e2b1fbc815526423650" +checksum = "bcabfa86cb0410d5005ec45ec8f95640b3a6ae1e4fe00b408885fa45b8210fee" dependencies = [ "anyhow", "cairo-lang-compiler", "cairo-lang-debug", "cairo-lang-defs", - "cairo-lang-diagnostics", "cairo-lang-filesystem", "cairo-lang-lowering", "cairo-lang-semantic", @@ -1096,50 +1233,72 @@ dependencies = [ "cairo-lang-syntax", "cairo-lang-utils", "indoc", - "itertools 0.12.1", + "itertools 0.14.0", "num-bigint", - "num-traits 0.2.19", + "num-traits", "serde", - "starknet-types-core 0.1.5", + "starknet-types-core 0.1.7", ] [[package]] name = "cairo-lang-test-utils" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a2365bd502a657437f9d0d665e32e017054d0effdbecb1dda776bfcc11235d" +checksum = "039d5a6ac4d1c0b08f3de5624283636f8afdd1c23b0061e69eb3c0a23296fb1a" dependencies = [ "cairo-lang-formatter", "cairo-lang-utils", - "colored", + "colored 3.0.0", "log", "pretty_assertions", ] [[package]] name = "cairo-lang-utils" -version = "2.7.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd5c8c127b9362a12ffb9dede38e792c81b4ded5a98b448baec157b745f47d1" +checksum = "a10413a200666e296ea47d2e2e551b00e9bae0d825b896fb02b7c460f453b0fd" dependencies = [ - "env_logger 0.11.5", - "hashbrown 0.14.5", - "indexmap 2.5.0", - "itertools 0.12.1", + "env_logger 0.11.7", + "hashbrown 0.15.2", + "indexmap 2.8.0", + "itertools 0.14.0", "log", "num-bigint", - "num-traits 0.2.19", + "num-traits", "schemars", "serde", "time", ] +[[package]] +name = "cairo-lint-core" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be9ba40787dd7915d8b88ad104654c4d3024c3f576fbaba293186e1fde9c22da" +dependencies = [ + "annotate-snippets", + "anyhow", + "cairo-lang-compiler", + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-semantic", + "cairo-lang-syntax", + "cairo-lang-test-plugin", + "cairo-lang-utils", + "if_chain", + "itertools 0.14.0", + "log", + "num-bigint", +] + [[package]] name = "cairo-oracle-hint-processor" version = "0.1.8" dependencies = [ "anyhow", - "bincode", + "bincode 2.0.1", "cairo-io-serde", "cairo-lang-casm", "cairo-lang-runner", @@ -1150,7 +1309,7 @@ dependencies = [ "cairo-lang-sierra-type-size", "cairo-lang-utils", "cairo-proto-serde", - "cairo-vm 1.0.1 (git+https://github.com/raphaelDkhn/cairo-vm.git?rev=2738ec0)", + "cairo-vm 2.0.0", "camino", "clap", "hex", @@ -1158,14 +1317,14 @@ dependencies = [ "itertools 0.12.1", "num-bigint", "num-integer", - "num-traits 0.2.19", + "num-traits", "reqwest", - "scarb-metadata 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scarb-metadata 1.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "scarb-ui 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "serde_json", "starknet-types-core 0.0.7", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1178,7 +1337,7 @@ dependencies = [ "itertools 0.12.1", "log", "multimap", - "petgraph", + "petgraph 0.6.5", "prost", "prost-types", "serde_json", @@ -1191,20 +1350,20 @@ name = "cairo-proto-serde" version = "0.1.8" dependencies = [ "cairo-lang-runner", - "cairo-vm 1.0.1 (git+https://github.com/raphaelDkhn/cairo-vm.git?rev=2738ec0)", - "num-traits 0.2.19", + "cairo-vm 2.0.0", + "num-traits", "serde", "serde_json", ] [[package]] name = "cairo-vm" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58363ad8065ed891e3b14a8191b707677c7c7cb5b9d10030822506786d8d8108" +checksum = "7fa8b4b56ee66cebcade4d85128e55b2bfdf046502187aeaa8c2768a427684dc" dependencies = [ "anyhow", - "bincode", + "bincode 2.0.1", "bitvec", "generic-array", "hashbrown 0.14.5", @@ -1215,50 +1374,51 @@ dependencies = [ "num-bigint", "num-integer", "num-prime", - "num-traits 0.2.19", - "rand", + "num-traits", + "rand 0.8.5", "rust_decimal", "serde", "serde_json", "sha2", "sha3", "starknet-crypto 0.6.2", - "starknet-types-core 0.1.5", + "starknet-types-core 0.1.7", "thiserror-no-std", "zip", ] [[package]] name = "cairo-vm" -version = "1.0.1" -source = "git+https://github.com/raphaelDkhn/cairo-vm.git?rev=2738ec0#2738ec00c533b9238feea811d6979fa16aeabe3f" +version = "2.0.0" +source = "git+https://github.com/Tbelleng/cairo-vm#60c1fa0fca62fed6cfa304cb8fdc0d7ec4c23d02" dependencies = [ "anyhow", - "ark-ff", - "ark-std", - "bincode", + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bincode 2.0.1", "bitvec", "cairo-lang-casm", "cairo-lang-starknet", "cairo-lang-starknet-classes", "generic-array", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "hex", + "indoc", "keccak", "lazy_static", "nom", "num-bigint", "num-integer", "num-prime", - "num-traits 0.2.19", - "rand", + "num-traits", + "rand 0.8.5", "rust_decimal", "serde", "serde_json", "sha2", "sha3", - "starknet-crypto 0.6.2", - "starknet-types-core 0.1.5", + "starknet-crypto 0.7.4", + "starknet-types-core 0.1.7", "thiserror-no-std", "zip", ] @@ -1274,32 +1434,32 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" -version = "0.18.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", "cargo-platform", "semver", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", ] [[package]] name = "cc" -version = "1.1.16" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ "jobserver", "libc", @@ -1312,17 +1472,23 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", - "num-traits 0.2.19", + "num-traits", "serde", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1337,9 +1503,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.17" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" dependencies = [ "clap_builder", "clap_derive", @@ -1347,9 +1513,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.17" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" dependencies = [ "anstream", "anstyle", @@ -1359,21 +1525,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clru" @@ -1383,31 +1549,40 @@ checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", - "windows-sys 0.48.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "colored" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" +dependencies = [ + "windows-sys 0.59.0", ] [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", + "once_cell", "unicode-width", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1418,18 +1593,18 @@ checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" [[package]] name = "const_format" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" dependencies = [ "proc-macro2", "quote", @@ -1444,9 +1619,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "convert_case" -version = "0.6.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" dependencies = [ "unicode-segmentation", ] @@ -1461,6 +1636,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -1469,9 +1654,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -1488,28 +1673,28 @@ dependencies = [ [[package]] name = "create-output-dir" version = "1.0.0" -source = "git+https://github.com/software-mansion/scarb.git?rev=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" +source = "git+https://github.com/software-mansion/scarb.git?rev=v2.11.1#6619e7488999280bf63a47ec37a5850c948e2c80" dependencies = [ "anyhow", - "core-foundation", + "core-foundation 0.10.0", "tempfile", "winapi", ] [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -1526,15 +1711,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -1587,7 +1772,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -1598,7 +1783,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -1612,30 +1797,31 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.10", + "parking_lot_core", ] [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" [[package]] name = "deno_task_shell" -version = "0.18.0" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1b0c646a53492068b6675af74cecbef486e670be2c0cdd06e7e636d167e50f" +checksum = "e2da21d6f1061632e50ee585afa570bcad080b7a42fe7baedf447007c49f848e" dependencies = [ "anyhow", "futures", "glob", "monch", + "nix", "os_pipe", "path-dedot", - "thiserror", + "thiserror 2.0.12", "tokio", - "tokio-util", + "windows-sys 0.59.0", ] [[package]] @@ -1661,33 +1847,33 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "derive_builder_macro" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -1711,7 +1897,7 @@ dependencies = [ "console", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -1723,11 +1909,11 @@ checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" [[package]] name = "diffy" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e616e59155c92257e84970156f506287853355f58cd4a6eb167385722c32b790" +checksum = "b545b8c50194bdd008283985ab0b31dba153cfd5b3066a92770634fbc0d7d291" dependencies = [ - "nu-ansi-term", + "nu-ansi-term 0.50.1", ] [[package]] @@ -1750,16 +1936,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.4.1" @@ -1773,14 +1949,14 @@ dependencies = [ ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "libc", - "redox_users", - "winapi", + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -1791,15 +1967,27 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.17" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" + +[[package]] +name = "educe" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.100", +] [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "ena" @@ -1812,29 +2000,55 @@ dependencies = [ [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log", "regex", ] +[[package]] +name = "env_home" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" + [[package]] name = "env_logger" version = "0.10.2" @@ -1850,28 +2064,28 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "c3716d7a920fb4fac5d84e9d4bce8ceb321e9414b4409da61b07b75c1e3d0697" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff 0.2.4", "log", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" dependencies = [ "serde", "typeid", @@ -1879,12 +2093,12 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1899,13 +2113,13 @@ dependencies = [ "hex", "hmac", "pbkdf2", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", "sha2", "sha3", - "thiserror", + "thiserror 1.0.69", "uuid", ] @@ -1941,12 +2155,15 @@ name = "faster-hex" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" +dependencies = [ + "serde", +] [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "filetime" @@ -1967,7 +2184,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -1978,14 +2195,21 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" -version = "1.0.33" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "libz-sys", + "miniz_oxide", ] [[package]] @@ -1994,6 +2218,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + [[package]] name = "foreign-types" version = "0.3.2" @@ -2025,7 +2255,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29f9df8a11882c4e3335eb2d18a0137c505d9ca927470b0cac9c6f0ae07d28f7" dependencies = [ "async-trait", - "rustix", + "rustix 0.38.44", "tokio", "windows-sys 0.48.0", ] @@ -2044,9 +2274,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -2059,9 +2289,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -2069,15 +2299,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -2086,38 +2316,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -2133,9 +2363,9 @@ dependencies = [ [[package]] name = "genco" -version = "0.17.9" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afac3cbb14db69ac9fef9cdb60d8a87e39a7a527f85a81a923436efa40ad42c6" +checksum = "a35958104272e516c2a5f66a9d82fba4784d2b585fc1e2358b8f96e15d342995" dependencies = [ "genco-macros", "relative-path", @@ -2144,13 +2374,13 @@ dependencies = [ [[package]] name = "genco-macros" -version = "0.17.9" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "553630feadf7b76442b0849fd25fdf89b860d933623aec9693fed19af0400c78" +checksum = "43eaff6bbc0b3a878361aced5ec6a2818ee7c541c5b33b5880dfa9a86c23e9e7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -2172,15 +2402,27 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gix" @@ -2188,56 +2430,116 @@ version = "0.66.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9048b8d1ae2104f045cb37e5c450fc49d5d8af22609386bfc739c11ba88995eb" dependencies = [ - "gix-actor", - "gix-archive", - "gix-attributes", - "gix-command", - "gix-commitgraph", - "gix-config", - "gix-credentials", + "gix-actor 0.32.0", + "gix-archive 0.15.0", + "gix-attributes 0.22.5", + "gix-command 0.3.11", + "gix-commitgraph 0.24.3", + "gix-config 0.40.0", + "gix-credentials 0.24.5", + "gix-date", + "gix-diff 0.46.0", + "gix-dir 0.8.0", + "gix-discover 0.35.0", + "gix-features 0.38.2", + "gix-filter 0.13.0", + "gix-fs 0.11.3", + "gix-glob 0.16.5", + "gix-hash 0.14.2", + "gix-hashtable 0.5.2", + "gix-ignore 0.11.4", + "gix-index 0.35.0", + "gix-lock 14.0.0", + "gix-mailmap 0.24.0", + "gix-negotiate 0.15.0", + "gix-object 0.44.0", + "gix-odb 0.63.0", + "gix-pack 0.53.0", + "gix-path", + "gix-pathspec 0.7.7", + "gix-prompt 0.8.9", + "gix-ref 0.47.0", + "gix-refspec 0.25.0", + "gix-revision 0.29.0", + "gix-revwalk 0.15.0", + "gix-sec", + "gix-status 0.13.0", + "gix-submodule 0.14.0", + "gix-tempfile 14.0.2", + "gix-trace", + "gix-traverse 0.41.0", + "gix-url 0.27.5", + "gix-utils", + "gix-validate", + "gix-worktree 0.36.0", + "gix-worktree-state 0.13.0", + "gix-worktree-stream 0.15.0", + "once_cell", + "parking_lot", + "regex", + "signal-hook", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gix" +version = "0.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736f14636705f3a56ea52b553e67282519418d9a35bb1e90b3a9637a00296b68" +dependencies = [ + "gix-actor 0.33.2", + "gix-archive 0.19.0", + "gix-attributes 0.24.0", + "gix-command 0.4.1", + "gix-commitgraph 0.26.0", + "gix-config 0.43.0", + "gix-credentials 0.27.0", "gix-date", - "gix-diff", - "gix-dir", - "gix-discover", - "gix-features", - "gix-filter", - "gix-fs", - "gix-glob", - "gix-hash", - "gix-hashtable", - "gix-ignore", - "gix-index", - "gix-lock", - "gix-mailmap", - "gix-negotiate", - "gix-object", - "gix-odb", - "gix-pack", + "gix-diff 0.50.0", + "gix-dir 0.12.0", + "gix-discover 0.38.0", + "gix-features 0.40.0", + "gix-filter 0.17.0", + "gix-fs 0.13.0", + "gix-glob 0.18.0", + "gix-hash 0.16.0", + "gix-hashtable 0.7.0", + "gix-ignore 0.13.0", + "gix-index 0.38.0", + "gix-lock 16.0.0", + "gix-mailmap 0.25.2", + "gix-negotiate 0.18.0", + "gix-object 0.47.0", + "gix-odb 0.67.0", + "gix-pack 0.57.0", "gix-path", - "gix-pathspec", - "gix-prompt", - "gix-ref", - "gix-refspec", - "gix-revision", - "gix-revwalk", + "gix-pathspec 0.9.0", + "gix-prompt 0.9.1", + "gix-protocol", + "gix-ref 0.50.0", + "gix-refspec 0.28.0", + "gix-revision 0.32.0", + "gix-revwalk 0.18.0", "gix-sec", - "gix-status", - "gix-submodule", - "gix-tempfile", + "gix-shallow", + "gix-status 0.17.0", + "gix-submodule 0.17.0", + "gix-tempfile 16.0.0", "gix-trace", - "gix-traverse", - "gix-url", + "gix-traverse 0.44.0", + "gix-url 0.29.0", "gix-utils", "gix-validate", - "gix-worktree", - "gix-worktree-state", - "gix-worktree-stream", + "gix-worktree 0.39.0", + "gix-worktree-state 0.17.0", + "gix-worktree-stream 0.19.0", "once_cell", - "parking_lot 0.12.3", + "parking_lot", "regex", "signal-hook", "smallvec", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2250,8 +2552,22 @@ dependencies = [ "gix-date", "gix-utils", "itoa", - "thiserror", - "winnow", + "thiserror 1.0.69", + "winnow 0.6.26", +] + +[[package]] +name = "gix-actor" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20018a1a6332e065f1fcc8305c1c932c6b8c9985edea2284b3c79dc6fa3ee4b2" +dependencies = [ + "bstr", + "gix-date", + "gix-utils", + "itoa", + "thiserror 2.0.12", + "winnow 0.6.26", ] [[package]] @@ -2262,10 +2578,24 @@ checksum = "9147c08a55c1398b755539e2cdd63ff690ffe4a2e5e5e0780ee6ef2b49b0a60a" dependencies = [ "bstr", "gix-date", - "gix-object", - "gix-worktree-stream", - "jiff", - "thiserror", + "gix-object 0.44.0", + "gix-worktree-stream 0.15.0", + "jiff 0.1.29", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-archive" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d22c6ecdb350461a975159ebe514294064b9542a4cbc4a12d00c3f46a1107ce" +dependencies = [ + "bstr", + "gix-date", + "gix-object 0.47.0", + "gix-worktree-stream 0.19.0", + "jiff 0.1.29", + "thiserror 2.0.12", ] [[package]] @@ -2275,39 +2605,68 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebccbf25aa4a973dd352564a9000af69edca90623e8a16dad9cbc03713131311" dependencies = [ "bstr", - "gix-glob", + "gix-glob 0.16.5", + "gix-path", + "gix-quote", + "gix-trace", + "kstring", + "smallvec", + "thiserror 1.0.69", + "unicode-bom", +] + +[[package]] +name = "gix-attributes" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f151000bf662ef5f641eca6102d942ee31ace80f271a3ef642e99776ce6ddb38" +dependencies = [ + "bstr", + "gix-glob 0.18.0", "gix-path", "gix-quote", "gix-trace", "kstring", "smallvec", - "thiserror", + "thiserror 2.0.12", "unicode-bom", ] [[package]] name = "gix-bitmap" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a371db66cbd4e13f0ed9dc4c0fea712d7276805fccc877f77e96374d317e87ae" +checksum = "b1db9765c69502650da68f0804e3dc2b5f8ccc6a2d104ca6c85bc40700d37540" dependencies = [ - "thiserror", + "thiserror 2.0.12", ] [[package]] name = "gix-chunk" -version = "0.4.8" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c8751169961ba7640b513c3b24af61aa962c967aaf04116734975cd5af0c52" +checksum = "0b1f1d8764958699dc764e3f727cef280ff4d1bd92c107bbf8acd85b30c1bd6f" dependencies = [ - "thiserror", + "thiserror 2.0.12", ] [[package]] name = "gix-command" -version = "0.3.9" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7d6b8f3a64453fd7e8191eb80b351eb7ac0839b40a1237cd2c137d5079fe53" +dependencies = [ + "bstr", + "gix-path", + "gix-trace", + "shell-words", +] + +[[package]] +name = "gix-command" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff2e692b36bbcf09286c70803006ca3fd56551a311de450be317a0ab8ea92e7" +checksum = "cb410b84d6575db45e62025a9118bdbf4d4b099ce7575a76161e898d9ca98df1" dependencies = [ "bstr", "gix-path", @@ -2323,10 +2682,24 @@ checksum = "133b06f67f565836ec0c473e2116a60fb74f80b6435e21d88013ac0e3c60fc78" dependencies = [ "bstr", "gix-chunk", - "gix-features", - "gix-hash", + "gix-features 0.38.2", + "gix-hash 0.14.2", + "memmap2", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-commitgraph" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e23a8ec2d8a16026a10dafdb6ed51bcfd08f5d97f20fa52e200bc50cb72e4877" +dependencies = [ + "bstr", + "gix-chunk", + "gix-features 0.40.0", + "gix-hash 0.16.0", "memmap2", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2337,30 +2710,51 @@ checksum = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0" dependencies = [ "bstr", "gix-config-value", - "gix-features", - "gix-glob", + "gix-features 0.38.2", + "gix-glob 0.16.5", + "gix-path", + "gix-ref 0.47.0", + "gix-sec", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", + "unicode-bom", + "winnow 0.6.26", +] + +[[package]] +name = "gix-config" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "377c1efd2014d5d469e0b3cd2952c8097bce9828f634e04d5665383249f1d9e9" +dependencies = [ + "bstr", + "gix-config-value", + "gix-features 0.40.0", + "gix-glob 0.18.0", "gix-path", - "gix-ref", + "gix-ref 0.50.0", "gix-sec", "memchr", "once_cell", "smallvec", - "thiserror", + "thiserror 2.0.12", "unicode-bom", - "winnow", + "winnow 0.6.26", ] [[package]] name = "gix-config-value" -version = "0.14.8" +version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f76169faa0dec598eac60f83d7fcdd739ec16596eca8fb144c88973dbe6f8c" +checksum = "11365144ef93082f3403471dbaa94cfe4b5e72743bdb9560719a251d439f4cee" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "bstr", "gix-path", "libc", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2370,26 +2764,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce391d305968782f1ae301c4a3d42c5701df7ff1d8bc03740300f6fd12bce78" dependencies = [ "bstr", - "gix-command", + "gix-command 0.3.11", + "gix-config-value", + "gix-path", + "gix-prompt 0.8.9", + "gix-sec", + "gix-trace", + "gix-url 0.27.5", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-credentials" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf950f9ee1690bb9c4388b5152baa8a9f41ad61e5cf1ba0ec8c207b08dab9e45" +dependencies = [ + "bstr", + "gix-command 0.4.1", "gix-config-value", "gix-path", - "gix-prompt", + "gix-prompt 0.9.1", "gix-sec", "gix-trace", - "gix-url", - "thiserror", + "gix-url 0.29.0", + "thiserror 2.0.12", ] [[package]] name = "gix-date" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c84b7af01e68daf7a6bb8bb909c1ff5edb3ce4326f1f43063a5a96d3c3c8a5" +checksum = "c57c477b645ee248b173bb1176b52dd528872f12c50375801a58aaf5ae91113f" dependencies = [ "bstr", "itoa", - "jiff", - "thiserror", + "jiff 0.1.29", + "thiserror 2.0.12", ] [[package]] @@ -2399,17 +2810,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92c9afd80fff00f8b38b1c1928442feb4cd6d2232a6ed806b6b193151a3d336c" dependencies = [ "bstr", - "gix-command", - "gix-filter", - "gix-fs", - "gix-hash", - "gix-object", + "gix-command 0.3.11", + "gix-filter 0.13.0", + "gix-fs 0.11.3", + "gix-hash 0.14.2", + "gix-object 0.44.0", + "gix-path", + "gix-tempfile 14.0.2", + "gix-trace", + "gix-worktree 0.36.0", + "imara-diff", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-diff" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62afb7f4ca0acdf4e9dad92065b2eb1bf2993bcc5014b57bc796e3a365b17c4d" +dependencies = [ + "bstr", + "gix-attributes 0.24.0", + "gix-command 0.4.1", + "gix-filter 0.17.0", + "gix-fs 0.13.0", + "gix-hash 0.16.0", + "gix-index 0.38.0", + "gix-object 0.47.0", "gix-path", - "gix-tempfile", + "gix-pathspec 0.9.0", + "gix-tempfile 16.0.0", "gix-trace", - "gix-worktree", + "gix-traverse 0.44.0", + "gix-worktree 0.39.0", "imara-diff", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2419,17 +2854,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ed3a9076661359a1c5a27c12ad6c3ebe2dd96b8b3c0af6488ab7c128b7bdd98" dependencies = [ "bstr", - "gix-discover", - "gix-fs", - "gix-ignore", - "gix-index", - "gix-object", + "gix-discover 0.35.0", + "gix-fs 0.11.3", + "gix-ignore 0.11.4", + "gix-index 0.35.0", + "gix-object 0.44.0", + "gix-path", + "gix-pathspec 0.7.7", + "gix-trace", + "gix-utils", + "gix-worktree 0.36.0", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-dir" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1d78db3927a12f7d1b788047b84efacaab03ef25738bd1c77856ad8966bd57b" +dependencies = [ + "bstr", + "gix-discover 0.38.0", + "gix-fs 0.13.0", + "gix-ignore 0.13.0", + "gix-index 0.38.0", + "gix-object 0.47.0", "gix-path", - "gix-pathspec", + "gix-pathspec 0.9.0", "gix-trace", "gix-utils", - "gix-worktree", - "thiserror", + "gix-worktree 0.39.0", + "thiserror 2.0.12", ] [[package]] @@ -2440,12 +2895,28 @@ checksum = "0577366b9567376bc26e815fd74451ebd0e6218814e242f8e5b7072c58d956d2" dependencies = [ "bstr", "dunce", - "gix-fs", - "gix-hash", + "gix-fs 0.11.3", + "gix-hash 0.14.2", + "gix-path", + "gix-ref 0.47.0", + "gix-sec", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-discover" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0c2414bdf04064e0f5a5aa029dfda1e663cf9a6c4bfc8759f2d369299bb65d8" +dependencies = [ + "bstr", + "dunce", + "gix-fs 0.13.0", + "gix-hash 0.16.0", "gix-path", - "gix-ref", + "gix-ref 0.50.0", "gix-sec", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2459,38 +2930,82 @@ dependencies = [ "crc32fast", "crossbeam-channel", "flate2", - "gix-hash", + "gix-hash 0.14.2", "gix-trace", "gix-utils", "libc", "once_cell", - "parking_lot 0.12.3", - "prodash", + "parking_lot", + "prodash 28.0.0", "sha1_smol", - "thiserror", + "thiserror 1.0.69", "walkdir", ] [[package]] -name = "gix-filter" -version = "0.13.0" +name = "gix-features" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4121790ae140066e5b953becc72e7496278138d19239be2e63b5067b0843119e" +checksum = "8bfdd4838a8d42bd482c9f0cb526411d003ee94cc7c7b08afe5007329c71d554" dependencies = [ - "bstr", - "encoding_rs", - "gix-attributes", - "gix-command", - "gix-hash", - "gix-object", - "gix-packetline-blocking", - "gix-path", - "gix-quote", + "bytes", + "bytesize", + "crc32fast", + "crossbeam-channel", + "flate2", + "gix-hash 0.16.0", "gix-trace", "gix-utils", - "smallvec", - "thiserror", -] + "libc", + "once_cell", + "parking_lot", + "prodash 29.0.1", + "sha1_smol", + "thiserror 2.0.12", + "walkdir", +] + +[[package]] +name = "gix-filter" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4121790ae140066e5b953becc72e7496278138d19239be2e63b5067b0843119e" +dependencies = [ + "bstr", + "encoding_rs", + "gix-attributes 0.22.5", + "gix-command 0.3.11", + "gix-hash 0.14.2", + "gix-object 0.44.0", + "gix-packetline-blocking 0.17.5", + "gix-path", + "gix-quote", + "gix-trace", + "gix-utils", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-filter" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdcc36cd7dbc63ed0ec3558645886553d1afd3cd09daa5efb9cba9cceb942bbb" +dependencies = [ + "bstr", + "encoding_rs", + "gix-attributes 0.24.0", + "gix-command 0.4.1", + "gix-hash 0.16.0", + "gix-object 0.47.0", + "gix-packetline-blocking 0.18.2", + "gix-path", + "gix-quote", + "gix-trace", + "gix-utils", + "smallvec", + "thiserror 2.0.12", +] [[package]] name = "gix-fs" @@ -2499,7 +3014,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575" dependencies = [ "fastrand", - "gix-features", + "gix-features 0.38.2", + "gix-utils", +] + +[[package]] +name = "gix-fs" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "182e7fa7bfdf44ffb7cfe7451b373cdf1e00870ac9a488a49587a110c562063d" +dependencies = [ + "fastrand", + "gix-features 0.40.0", "gix-utils", ] @@ -2509,9 +3035,21 @@ version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", + "bstr", + "gix-features 0.38.2", + "gix-path", +] + +[[package]] +name = "gix-glob" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e9c7249fa0a78f9b363aa58323db71e0a6161fd69860ed6f48dedf0ef3a314e" +dependencies = [ + "bitflags 2.9.0", "bstr", - "gix-features", + "gix-features 0.40.0", "gix-path", ] @@ -2522,7 +3060,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" dependencies = [ "faster-hex", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-hash" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e81c5ec48649b1821b3ed066a44efb95f1a268b35c1d91295e61252539fbe9f8" +dependencies = [ + "faster-hex", + "thiserror 2.0.12", ] [[package]] @@ -2531,9 +3079,20 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242" dependencies = [ - "gix-hash", + "gix-hash 0.14.2", "hashbrown 0.14.5", - "parking_lot 0.12.3", + "parking_lot", +] + +[[package]] +name = "gix-hashtable" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "189130bc372accd02e0520dc5ab1cef318dcc2bc829b76ab8d84bbe90ac212d1" +dependencies = [ + "gix-hash 0.16.0", + "hashbrown 0.14.5", + "parking_lot", ] [[package]] @@ -2543,7 +3102,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e447cd96598460f5906a0f6c75e950a39f98c2705fc755ad2f2020c9e937fab7" dependencies = [ "bstr", - "gix-glob", + "gix-glob 0.16.5", + "gix-path", + "gix-trace", + "unicode-bom", +] + +[[package]] +name = "gix-ignore" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f529dcb80bf9855c0a7c49f0ac588df6d6952d63a63fefc254b9c869d2cdf6f" +dependencies = [ + "bstr", + "gix-glob 0.18.0", "gix-path", "gix-trace", "unicode-bom", @@ -2555,26 +3127,54 @@ version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cd4203244444017682176e65fd0180be9298e58ed90bd4a8489a357795ed22d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "bstr", "filetime", "fnv", "gix-bitmap", - "gix-features", - "gix-fs", - "gix-hash", - "gix-lock", - "gix-object", - "gix-traverse", + "gix-features 0.38.2", + "gix-fs 0.11.3", + "gix-hash 0.14.2", + "gix-lock 14.0.0", + "gix-object 0.44.0", + "gix-traverse 0.41.0", "gix-utils", "gix-validate", "hashbrown 0.14.5", "itoa", "libc", "memmap2", - "rustix", + "rustix 0.38.44", "smallvec", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-index" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acd12e3626879369310fffe2ac61acc828613ef656b50c4ea984dd59d7dc85d8" +dependencies = [ + "bitflags 2.9.0", + "bstr", + "filetime", + "fnv", + "gix-bitmap", + "gix-features 0.40.0", + "gix-fs 0.13.0", + "gix-hash 0.16.0", + "gix-lock 16.0.0", + "gix-object 0.47.0", + "gix-traverse 0.44.0", + "gix-utils", + "gix-validate", + "hashbrown 0.14.5", + "itoa", + "libc", + "memmap2", + "rustix 0.38.44", + "smallvec", + "thiserror 2.0.12", ] [[package]] @@ -2583,9 +3183,20 @@ version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" dependencies = [ - "gix-tempfile", + "gix-tempfile 14.0.2", "gix-utils", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-lock" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9739815270ff6940968441824d162df9433db19211ca9ba8c3fc1b50b849c642" +dependencies = [ + "gix-tempfile 16.0.0", + "gix-utils", + "thiserror 2.0.12", ] [[package]] @@ -2595,9 +3206,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7d522c8ec2501e1a5b2b4cb54e83cb5d9a52471c9d23b3a1e8dadaf063752f7" dependencies = [ "bstr", - "gix-actor", + "gix-actor 0.32.0", + "gix-date", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-mailmap" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "017996966133afb1e631796d8cf32e43300f8f76233f2a15ce9af5be5069b0a6" +dependencies = [ + "bstr", + "gix-actor 0.33.2", "gix-date", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2606,14 +3229,30 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4063bf329a191a9e24b6f948a17ccf6698c0380297f5e169cee4f1d2ab9475b" dependencies = [ - "bitflags 2.6.0", - "gix-commitgraph", + "bitflags 2.9.0", + "gix-commitgraph 0.24.3", + "gix-date", + "gix-hash 0.14.2", + "gix-object 0.44.0", + "gix-revwalk 0.15.0", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-negotiate" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a8af1ef7bbe303d30b55312b7f4d33e955de43a3642ae9b7347c623d80ef80" +dependencies = [ + "bitflags 2.9.0", + "gix-commitgraph 0.26.0", "gix-date", - "gix-hash", - "gix-object", - "gix-revwalk", + "gix-hash 0.16.0", + "gix-object 0.47.0", + "gix-revwalk 0.18.0", "smallvec", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2623,16 +3262,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa" dependencies = [ "bstr", - "gix-actor", + "gix-actor 0.32.0", "gix-date", - "gix-features", - "gix-hash", + "gix-features 0.38.2", + "gix-hash 0.14.2", "gix-utils", "gix-validate", "itoa", "smallvec", - "thiserror", - "winnow", + "thiserror 1.0.69", + "winnow 0.6.26", +] + +[[package]] +name = "gix-object" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc4b3a0044244f0fe22347fb7a79cca165e37829d668b41b85ff46a43e5fd68" +dependencies = [ + "bstr", + "gix-actor 0.33.2", + "gix-date", + "gix-features 0.40.0", + "gix-hash 0.16.0", + "gix-hashtable 0.7.0", + "gix-path", + "gix-utils", + "gix-validate", + "itoa", + "smallvec", + "thiserror 2.0.12", + "winnow 0.6.26", ] [[package]] @@ -2643,16 +3303,37 @@ checksum = "a3158068701c17df54f0ab2adda527f5a6aca38fd5fd80ceb7e3c0a2717ec747" dependencies = [ "arc-swap", "gix-date", - "gix-features", - "gix-fs", - "gix-hash", - "gix-object", - "gix-pack", + "gix-features 0.38.2", + "gix-fs 0.11.3", + "gix-hash 0.14.2", + "gix-object 0.44.0", + "gix-pack 0.53.0", + "gix-path", + "gix-quote", + "parking_lot", + "tempfile", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-odb" +version = "0.67.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e93457df69cd09573608ce9fa4f443fbd84bc8d15d8d83adecd471058459c1b" +dependencies = [ + "arc-swap", + "gix-date", + "gix-features 0.40.0", + "gix-fs 0.13.0", + "gix-hash 0.16.0", + "gix-hashtable 0.7.0", + "gix-object 0.47.0", + "gix-pack 0.57.0", "gix-path", "gix-quote", - "parking_lot 0.12.3", + "parking_lot", "tempfile", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2663,17 +3344,48 @@ checksum = "3223aa342eee21e1e0e403cad8ae9caf9edca55ef84c347738d10681676fd954" dependencies = [ "clru", "gix-chunk", - "gix-features", - "gix-hash", - "gix-hashtable", - "gix-object", + "gix-features 0.38.2", + "gix-hash 0.14.2", + "gix-hashtable 0.5.2", + "gix-object 0.44.0", + "gix-path", + "memmap2", + "smallvec", + "thiserror 1.0.69", + "uluru", +] + +[[package]] +name = "gix-pack" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc13a475b3db735617017fb35f816079bf503765312d4b1913b18cf96f3fa515" +dependencies = [ + "clru", + "gix-chunk", + "gix-features 0.40.0", + "gix-hash 0.16.0", + "gix-hashtable 0.7.0", + "gix-object 0.47.0", "gix-path", "memmap2", "smallvec", - "thiserror", + "thiserror 2.0.12", "uluru", ] +[[package]] +name = "gix-packetline" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e5ae6bc3ac160a6bf44a55f5537813ca3ddb08549c0fd3e7ef699c73c439cd" +dependencies = [ + "bstr", + "faster-hex", + "gix-trace", + "thiserror 2.0.12", +] + [[package]] name = "gix-packetline-blocking" version = "0.17.5" @@ -2683,20 +3395,32 @@ dependencies = [ "bstr", "faster-hex", "gix-trace", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-packetline-blocking" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cbf8767c6abd5a6779f586702b5bcd8702380f4208219449cf1c9d0cd1e17c" +dependencies = [ + "bstr", + "faster-hex", + "gix-trace", + "thiserror 2.0.12", ] [[package]] name = "gix-path" -version = "0.10.11" +version = "0.10.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebfc4febd088abdcbc9f1246896e57e37b7a34f6909840045a1767c6dafac7af" +checksum = "c40f12bb65a8299be0cfb90fe718e3be236b7a94b434877012980863a883a99f" dependencies = [ "bstr", "gix-trace", "home", "once_cell", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2705,37 +3429,84 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d23bf239532b4414d0e63b8ab3a65481881f7237ed9647bb10c1e3cc54c5ceb" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "bstr", - "gix-attributes", + "gix-attributes 0.22.5", "gix-config-value", - "gix-glob", + "gix-glob 0.16.5", "gix-path", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-pathspec" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6430d3a686c08e9d59019806faa78c17315fe22ae73151a452195857ca02f86c" +dependencies = [ + "bitflags 2.9.0", + "bstr", + "gix-attributes 0.24.0", + "gix-config-value", + "gix-glob 0.18.0", + "gix-path", + "thiserror 2.0.12", ] [[package]] name = "gix-prompt" -version = "0.8.7" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a7822afc4bc9c5fbbc6ce80b00f41c129306b7685cac3248dbfa14784960594" +dependencies = [ + "gix-command 0.3.11", + "gix-config-value", + "parking_lot", + "rustix 0.38.44", + "thiserror 2.0.12", +] + +[[package]] +name = "gix-prompt" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74fde865cdb46b30d8dad1293385d9bcf998d3a39cbf41bee67d0dab026fe6b1" +checksum = "79f2185958e1512b989a007509df8d61dca014aa759a22bee80cfa6c594c3b6d" dependencies = [ - "gix-command", + "gix-command 0.4.1", "gix-config-value", - "parking_lot 0.12.3", - "rustix", - "thiserror", + "parking_lot", + "rustix 0.38.44", + "thiserror 2.0.12", +] + +[[package]] +name = "gix-protocol" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c61bd61afc6b67d213241e2100394c164be421e3f7228d3521b04f48ca5ba90" +dependencies = [ + "bstr", + "gix-date", + "gix-features 0.40.0", + "gix-hash 0.16.0", + "gix-ref 0.50.0", + "gix-shallow", + "gix-transport", + "gix-utils", + "maybe-async", + "thiserror 2.0.12", + "winnow 0.6.26", ] [[package]] name = "gix-quote" -version = "0.4.12" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbff4f9b9ea3fa7a25a70ee62f545143abef624ac6aa5884344e70c8b0a1d9ff" +checksum = "e49357fccdb0c85c0d3a3292a9f6db32d9b3535959b5471bb9624908f4a066c6" dependencies = [ "bstr", "gix-utils", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2744,19 +3515,40 @@ version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5" dependencies = [ - "gix-actor", - "gix-features", - "gix-fs", - "gix-hash", - "gix-lock", - "gix-object", + "gix-actor 0.32.0", + "gix-features 0.38.2", + "gix-fs 0.11.3", + "gix-hash 0.14.2", + "gix-lock 14.0.0", + "gix-object 0.44.0", "gix-path", - "gix-tempfile", + "gix-tempfile 14.0.2", "gix-utils", "gix-validate", "memmap2", - "thiserror", - "winnow", + "thiserror 1.0.69", + "winnow 0.6.26", +] + +[[package]] +name = "gix-ref" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47adf4c5f933429f8554e95d0d92eee583cfe4b95d2bf665cd6fd4a1531ee20c" +dependencies = [ + "gix-actor 0.33.2", + "gix-features 0.40.0", + "gix-fs 0.13.0", + "gix-hash 0.16.0", + "gix-lock 16.0.0", + "gix-object 0.47.0", + "gix-path", + "gix-tempfile 16.0.0", + "gix-utils", + "gix-validate", + "memmap2", + "thiserror 2.0.12", + "winnow 0.6.26", ] [[package]] @@ -2766,11 +3558,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebb005f82341ba67615ffdd9f7742c87787544441c88090878393d0682869ca6" dependencies = [ "bstr", - "gix-hash", - "gix-revision", + "gix-hash 0.14.2", + "gix-revision 0.29.0", + "gix-validate", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-refspec" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59650228d8f612f68e7f7a25f517fcf386c5d0d39826085492e94766858b0a90" +dependencies = [ + "bstr", + "gix-hash 0.16.0", + "gix-revision 0.32.0", "gix-validate", "smallvec", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2781,12 +3587,30 @@ checksum = "ba4621b219ac0cdb9256883030c3d56a6c64a6deaa829a92da73b9a576825e1e" dependencies = [ "bstr", "gix-date", - "gix-hash", - "gix-hashtable", - "gix-object", - "gix-revwalk", + "gix-hash 0.14.2", + "gix-hashtable 0.5.2", + "gix-object 0.44.0", + "gix-revwalk 0.15.0", "gix-trace", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-revision" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fe28bbccca55da6d66e6c6efc6bb4003c29d407afd8178380293729733e6b53" +dependencies = [ + "bitflags 2.9.0", + "bstr", + "gix-commitgraph 0.26.0", + "gix-date", + "gix-hash 0.16.0", + "gix-hashtable 0.7.0", + "gix-object 0.47.0", + "gix-revwalk 0.18.0", + "gix-trace", + "thiserror 2.0.12", ] [[package]] @@ -2795,27 +3619,54 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b41e72544b93084ee682ef3d5b31b1ba4d8fa27a017482900e5e044d5b1b3984" dependencies = [ - "gix-commitgraph", + "gix-commitgraph 0.24.3", "gix-date", - "gix-hash", - "gix-hashtable", - "gix-object", + "gix-hash 0.14.2", + "gix-hashtable 0.5.2", + "gix-object 0.44.0", "smallvec", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-revwalk" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ecb80c235b1e9ef2b99b23a81ea50dd569a88a9eb767179793269e0e616247" +dependencies = [ + "gix-commitgraph 0.26.0", + "gix-date", + "gix-hash 0.16.0", + "gix-hashtable 0.7.0", + "gix-object 0.47.0", + "smallvec", + "thiserror 2.0.12", ] [[package]] name = "gix-sec" -version = "0.10.8" +version = "0.10.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe4d52f30a737bbece5276fab5d3a8b276dc2650df963e293d0673be34e7a5f" +checksum = "d84dae13271f4313f8d60a166bf27e54c968c7c33e2ffd31c48cafe5da649875" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "gix-path", "libc", "windows-sys 0.52.0", ] +[[package]] +name = "gix-shallow" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab72543011e303e52733c85bef784603ef39632ddf47f69723def52825e35066" +dependencies = [ + "bstr", + "gix-hash 0.16.0", + "gix-lock 16.0.0", + "thiserror 2.0.12", +] + [[package]] name = "gix-status" version = "0.13.0" @@ -2824,19 +3675,42 @@ checksum = "f70d35ba639f0c16a6e4cca81aa374a05f07b23fa36ee8beb72c100d98b4ffea" dependencies = [ "bstr", "filetime", - "gix-diff", - "gix-dir", - "gix-features", - "gix-filter", - "gix-fs", - "gix-hash", - "gix-index", - "gix-object", + "gix-diff 0.46.0", + "gix-dir 0.8.0", + "gix-features 0.38.2", + "gix-filter 0.13.0", + "gix-fs 0.11.3", + "gix-hash 0.14.2", + "gix-index 0.35.0", + "gix-object 0.44.0", + "gix-path", + "gix-pathspec 0.7.7", + "gix-worktree 0.36.0", + "portable-atomic", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-status" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "414cc1d85079d7ca32c3ab4a6479bf7e174cd251c74a82339c6cc393da3f4883" +dependencies = [ + "bstr", + "filetime", + "gix-diff 0.50.0", + "gix-dir 0.12.0", + "gix-features 0.40.0", + "gix-filter 0.17.0", + "gix-fs 0.13.0", + "gix-hash 0.16.0", + "gix-index 0.38.0", + "gix-object 0.47.0", "gix-path", - "gix-pathspec", - "gix-worktree", + "gix-pathspec 0.9.0", + "gix-worktree 0.39.0", "portable-atomic", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2846,25 +3720,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "529d0af78cc2f372b3218f15eb1e3d1635a21c8937c12e2dd0b6fc80c2ca874b" dependencies = [ "bstr", - "gix-config", + "gix-config 0.40.0", "gix-path", - "gix-pathspec", - "gix-refspec", - "gix-url", - "thiserror", + "gix-pathspec 0.7.7", + "gix-refspec 0.25.0", + "gix-url 0.27.5", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-submodule" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74972fe8d46ac8a09490ae1e843b4caf221c5b157c5ac17057e8e1c38417a3ac" +dependencies = [ + "bstr", + "gix-config 0.43.0", + "gix-path", + "gix-pathspec 0.9.0", + "gix-refspec 0.28.0", + "gix-url 0.29.0", + "thiserror 2.0.12", ] [[package]] name = "gix-tempfile" version = "14.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" +checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" +dependencies = [ + "dashmap", + "gix-fs 0.11.3", + "libc", + "once_cell", + "parking_lot", + "signal-hook", + "signal-hook-registry", + "tempfile", +] + +[[package]] +name = "gix-tempfile" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2558f423945ef24a8328c55d1fd6db06b8376b0e7013b1bb476cc4ffdf678501" dependencies = [ "dashmap", - "gix-fs", + "gix-fs 0.13.0", "libc", "once_cell", - "parking_lot 0.12.3", + "parking_lot", "signal-hook", "signal-hook-registry", "tempfile", @@ -2872,9 +3777,25 @@ dependencies = [ [[package]] name = "gix-trace" -version = "0.1.10" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c396a2036920c69695f760a65e7f2677267ccf483f25046977d87e4cb2665f7" + +[[package]] +name = "gix-transport" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cae0e8661c3ff92688ce1c8b8058b3efb312aba9492bbe93661a21705ab431b" +checksum = "11187418489477b1b5b862ae1aedbbac77e582f2c4b0ef54280f20cfe5b964d9" +dependencies = [ + "bstr", + "gix-command 0.4.1", + "gix-features 0.40.0", + "gix-packetline", + "gix-quote", + "gix-sec", + "gix-url 0.29.0", + "thiserror 2.0.12", +] [[package]] name = "gix-traverse" @@ -2882,15 +3803,32 @@ version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "030da39af94e4df35472e9318228f36530989327906f38e27807df305fccb780" dependencies = [ - "bitflags 2.6.0", - "gix-commitgraph", + "bitflags 2.9.0", + "gix-commitgraph 0.24.3", + "gix-date", + "gix-hash 0.14.2", + "gix-hashtable 0.5.2", + "gix-object 0.44.0", + "gix-revwalk 0.15.0", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-traverse" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bec70e53896586ef32a3efa7e4427b67308531ed186bb6120fb3eca0f0d61b4" +dependencies = [ + "bitflags 2.9.0", + "gix-commitgraph 0.26.0", "gix-date", - "gix-hash", - "gix-hashtable", - "gix-object", - "gix-revwalk", + "gix-hash 0.16.0", + "gix-hashtable 0.7.0", + "gix-object 0.47.0", + "gix-revwalk 0.18.0", "smallvec", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2900,18 +3838,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd280c5e84fb22e128ed2a053a0daeacb6379469be6a85e3d518a0636e160c89" dependencies = [ "bstr", - "gix-features", + "gix-features 0.38.2", "gix-path", "home", - "thiserror", + "thiserror 1.0.69", + "url", +] + +[[package]] +name = "gix-url" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29218c768b53dd8f116045d87fec05b294c731a4b2bdd257eeca2084cc150b13" +dependencies = [ + "bstr", + "gix-features 0.40.0", + "gix-path", + "percent-encoding", + "thiserror 2.0.12", "url", ] [[package]] name = "gix-utils" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35192df7fd0fa112263bad8021e2df7167df4cc2a6e6d15892e1e55621d3d4dc" +checksum = "ff08f24e03ac8916c478c8419d7d3c33393da9bb41fa4c24455d5406aeefd35f" dependencies = [ "bstr", "fastrand", @@ -2920,12 +3872,12 @@ dependencies = [ [[package]] name = "gix-validate" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81f2badbb64e57b404593ee26b752c26991910fd0d81fe6f9a71c1a8309b6c86" +checksum = "9eaa01c3337d885617c0a42e92823922a2aea71f4caeace6fe87002bdcadbd90" dependencies = [ "bstr", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2935,14 +3887,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c312ad76a3f2ba8e865b360d5cb3aa04660971d16dec6dd0ce717938d903149a" dependencies = [ "bstr", - "gix-attributes", - "gix-features", - "gix-fs", - "gix-glob", - "gix-hash", - "gix-ignore", - "gix-index", - "gix-object", + "gix-attributes 0.22.5", + "gix-features 0.38.2", + "gix-fs 0.11.3", + "gix-glob 0.16.5", + "gix-hash 0.14.2", + "gix-ignore 0.11.4", + "gix-index 0.35.0", + "gix-object 0.44.0", + "gix-path", + "gix-validate", +] + +[[package]] +name = "gix-worktree" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6673512f7eaa57a6876adceca6978a501d6c6569a4f177767dc405f8b9778958" +dependencies = [ + "bstr", + "gix-attributes 0.24.0", + "gix-features 0.40.0", + "gix-fs 0.13.0", + "gix-glob 0.18.0", + "gix-hash 0.16.0", + "gix-ignore 0.13.0", + "gix-index 0.38.0", + "gix-object 0.47.0", "gix-path", "gix-validate", ] @@ -2954,17 +3925,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b05c4b313fa702c0bacd5068dd3e01671da73b938fade97676859fee286de43" dependencies = [ "bstr", - "gix-features", - "gix-filter", - "gix-fs", - "gix-glob", - "gix-hash", - "gix-index", - "gix-object", + "gix-features 0.38.2", + "gix-filter 0.13.0", + "gix-fs 0.11.3", + "gix-glob 0.16.5", + "gix-hash 0.14.2", + "gix-index 0.35.0", + "gix-object 0.44.0", + "gix-path", + "gix-worktree 0.36.0", + "io-close", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-worktree-state" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f5e199ad5af972086683bd31d640c82cb85885515bf86d86236c73ce575bf0" +dependencies = [ + "bstr", + "gix-features 0.40.0", + "gix-filter 0.17.0", + "gix-fs 0.13.0", + "gix-glob 0.18.0", + "gix-hash 0.16.0", + "gix-index 0.38.0", + "gix-object 0.47.0", "gix-path", - "gix-worktree", + "gix-worktree 0.39.0", "io-close", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -2973,45 +3964,63 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68e81b87c1a3ece22a54b682d6fdc37fbb3977132da972cafe5ec07175fddbca" dependencies = [ - "gix-attributes", - "gix-features", - "gix-filter", - "gix-fs", - "gix-hash", - "gix-object", + "gix-attributes 0.22.5", + "gix-features 0.38.2", + "gix-filter 0.13.0", + "gix-fs 0.11.3", + "gix-hash 0.14.2", + "gix-object 0.44.0", + "gix-path", + "gix-traverse 0.41.0", + "parking_lot", + "thiserror 1.0.69", +] + +[[package]] +name = "gix-worktree-stream" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f61b0463c3cf4d07f2c72a10bdb03a2e4d70a9c26416c639346ad67456834485" +dependencies = [ + "gix-attributes 0.24.0", + "gix-features 0.40.0", + "gix-filter 0.17.0", + "gix-fs 0.13.0", + "gix-hash 0.16.0", + "gix-object 0.47.0", "gix-path", - "gix-traverse", - "parking_lot 0.12.3", - "thiserror", + "gix-traverse 0.44.0", + "parking_lot", + "thiserror 2.0.12", ] [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] name = "good_lp" -version = "1.8.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3198bd13dea84c76a64621d6ee8ee26a4960a9a0d538eca95ca8f1320a469ac9" +checksum = "ada2d4e8d3e6fb80d007479bbcf318882e65c21798c6587a693dffcf271e3f3e" dependencies = [ "fnv", - "minilp", + "microlp", ] [[package]] @@ -3026,7 +4035,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.5.0", + "indexmap 2.8.0", "slab", "tokio", "tokio-util", @@ -3035,16 +4044,18 @@ dependencies = [ [[package]] name = "handlebars" -version = "6.0.0" +version = "6.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5226a0e122dc74917f3a701484482bed3ee86d016c7356836abbaa033133a157" +checksum = "d752747ddabc4c1a70dd28e72f2e3c218a816773e0d7faf67433f1acfa6cba7c" dependencies = [ + "derive_builder", "log", + "num-order", "pest", "pest_derive", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", ] [[package]] @@ -3053,15 +4064,6 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash", -] - [[package]] name = "hashbrown" version = "0.14.5" @@ -3074,12 +4076,15 @@ dependencies = [ ] [[package]] -name = "heck" -version = "0.3.3" +name = "hashbrown" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ - "unicode-segmentation", + "allocator-api2", + "equivalent", + "foldhash", + "serde", ] [[package]] @@ -3096,15 +4101,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hermit-abi" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" [[package]] name = "hex" @@ -3123,11 +4122,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3154,9 +4153,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -3178,9 +4177,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -3229,9 +4228,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -3250,6 +4249,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "id-arena" version = "2.2.1" @@ -3264,25 +4381,42 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] +[[package]] +name = "if_chain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" + [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", "log", "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.9", "same-file", "walkdir", "winapi-util", @@ -3290,12 +4424,11 @@ dependencies = [ [[package]] name = "imara-diff" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc9da1a252bd44cd341657203722352efc9bc0c847d06ea6d2dc1cd1135e0a01" +checksum = "17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2" dependencies = [ - "ahash", - "hashbrown 0.14.5", + "hashbrown 0.15.2", ] [[package]] @@ -3327,13 +4460,13 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.100", ] [[package]] @@ -3374,52 +4507,43 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "serde", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", "unicode-width", + "web-time", ] [[package]] name = "indoc" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - [[package]] name = "io-close" version = "0.3.7" @@ -3432,19 +4556,19 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is-terminal" -version = "0.4.13" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.4.0", + "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3464,49 +4588,86 @@ dependencies = [ [[package]] name = "itertools" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] [[package]] name = "itertools" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" -version = "0.1.12" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437651126da47900d4d70255ab15f5c69510ca4e0d88c9f01b5b8d41a45c3a9b" +checksum = "c04ef77ae73f3cf50510712722f0c4e8b46f5aaa1bf5ffad2ae213e6495e78e5" dependencies = [ "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", "windows-sys 0.59.0", ] +[[package]] +name = "jiff" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d699bc6dfc879fb1bf9bdff0d4c56f0884fc6f0d0eb0fba397a6d00cd9a6b85e" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d16e75759ee0aa64c57a56acbf43916987b20c77373cb7e808979e02b93c9f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "jiff-tzdb" -version = "0.1.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05fac328b3df1c0f18a3c2ab6cb7e06e4e549f366017d796e3e66b6d6889abe6" +checksum = "962e1dfe9b2d75a84536cf5bf5eaaa4319aa7906c7160134a22883ac316d5f31" [[package]] name = "jiff-tzdb-platform" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8da387d5feaf355954c2c122c194d6df9c57d865125a67984bb453db5336940" +checksum = "a63c62e404e7b92979d2792352d885a7f8f83fd1d0d31eea582d77b2ceca697e" dependencies = [ "jiff-tzdb", ] @@ -3522,10 +4683,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -3549,33 +4711,34 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.20.2" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +checksum = "7047a26de42016abf8f181b46b398aef0b77ad46711df41847f6ed869a2a1d5b" dependencies = [ "ascii-canvas", "bit-set", "ena", - "itertools 0.11.0", + "itertools 0.14.0", "lalrpop-util", - "petgraph", + "petgraph 0.7.1", "pico-args", "regex", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", + "sha3", "string_cache", "term", - "tiny-keccak", "unicode-xid", "walkdir", ] [[package]] name = "lalrpop-util" -version = "0.20.2" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +checksum = "e8d05b3fe34b8bd562c338db725dfa9beb9451a48f65f129ccb9538b48d2c93b" dependencies = [ - "regex-automata 0.4.7", + "regex-automata 0.4.9", + "rustversion", ] [[package]] @@ -3592,11 +4755,11 @@ dependencies = [ [[package]] name = "lambdaworks-crypto" -version = "0.7.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb5d4f22241504f7c7b8d2c3a7d7835d7c07117f10bff2a7d96a9ef6ef217c3" +checksum = "bbc2a4da0d9e52ccfe6306801a112e81a8fc0c76aa3e4449fefeda7fef72bb34" dependencies = [ - "lambdaworks-math 0.7.0", + "lambdaworks-math 0.10.0", "serde", "sha2", "sha3", @@ -3614,9 +4777,9 @@ dependencies = [ [[package]] name = "lambdaworks-math" -version = "0.7.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "358e172628e713b80a530a59654154bfc45783a6ed70ea284839800cebdf8f97" +checksum = "d1bd2632acbd9957afc5aeec07ad39f078ae38656654043bf16e046fa2730e23" dependencies = [ "serde", "serde_json", @@ -3633,15 +4796,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.158" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -3653,36 +4816,59 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "libc", - "redox_syscall 0.5.3", + "redox_syscall", +] + +[[package]] +name = "libz-sys" +version = "1.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", ] [[package]] name = "linkme" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" +checksum = "22d227772b5999ddc0690e733f734f95ca05387e329c4084fe65678c51198ffe" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" +checksum = "71a98813fa0073a317ed6a8055dcd4722a49d9b862af828ee68449adb799b6be" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" + +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "lock_api" @@ -3696,17 +4882,17 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "lru" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.2", ] [[package]] @@ -3720,11 +4906,23 @@ dependencies = [ [[package]] name = "matrixmultiply" -version = "0.2.4" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "maybe-async" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916806ba0031cd542105d916a97c8572e1fa6dd79c9c51e7eb43a09ec2dd84c1" +checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ - "rawpointer", + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -3735,13 +4933,23 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] +[[package]] +name = "microlp" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d1790c73b93164ff65868f63164497cb32339458a9297e17e212d91df62258" +dependencies = [ + "log", + "sprs", +] + [[package]] name = "mime" version = "0.3.17" @@ -3749,13 +4957,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] -name = "minilp" -version = "0.2.2" +name = "mime_guess" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a7750a9e5076c660b7bec5e6457b4dbff402b9863c8d112891434e18fd5385" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ - "log", - "sprs", + "mime", + "unicase", ] [[package]] @@ -3766,31 +4974,21 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.0" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -3811,9 +5009,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -3828,14 +5026,16 @@ dependencies = [ [[package]] name = "ndarray" -version = "0.13.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac06db03ec2f46ee0ecdca1a1c34a99c0d188a0d83439b84bf0cb4b386e4ab09" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" dependencies = [ "matrixmultiply", "num-complex", "num-integer", - "num-traits 0.2.19", + "num-traits", + "portable-atomic", + "portable-atomic-util", "rawpointer", ] @@ -3845,6 +5045,18 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.9.0", + "cfg-if", + "cfg_aliases", + "libc", +] + [[package]] name = "nom" version = "7.1.3" @@ -3865,6 +5077,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "nu-ansi-term" +version = "0.50.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -3872,19 +5093,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", - "num-traits 0.2.19", - "rand", + "num-traits", + "rand 0.8.5", "serde", ] [[package]] name = "num-complex" -version = "0.2.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ - "autocfg", - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -3899,7 +5119,7 @@ version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -3910,7 +5130,22 @@ checksum = "64a5fe11d4135c3bcdf3a95b18b194afa9608a5f6ff034f5d857bc9a27fb0119" dependencies = [ "num-bigint", "num-integer", - "num-traits 0.2.19", + "num-traits", +] + +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular 0.6.1", ] [[package]] @@ -3924,18 +5159,9 @@ dependencies = [ "lru", "num-bigint", "num-integer", - "num-modular", - "num-traits 0.2.19", - "rand", -] - -[[package]] -name = "num-traits" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -dependencies = [ - "num-traits 0.2.19", + "num-modular 0.5.1", + "num-traits", + "rand 0.8.5", ] [[package]] @@ -3964,32 +5190,42 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.4" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "cde51589ab56b20a6f686b2c68f7a0bd6add753d697abf720d63f8db3ab7b1ad" + +[[package]] +name = "once_map" +version = "0.0.1" +source = "git+https://github.com/software-mansion/scarb.git?rev=v2.11.1#6619e7488999280bf63a47ec37a5850c948e2c80" +dependencies = [ + "dashmap", + "futures", + "tokio", +] [[package]] name = "oorandom" -version = "11.1.4" +version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "cfg-if", "foreign-types", "libc", @@ -4006,20 +5242,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ "cc", "libc", @@ -4039,7 +5275,7 @@ version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" dependencies = [ - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -4060,39 +5296,30 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", + "syn 2.0.100", ] [[package]] @@ -4102,21 +5329,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -4127,7 +5340,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] @@ -4139,7 +5352,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -4166,9 +5379,9 @@ dependencies = [ [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" dependencies = [ "camino", ] @@ -4193,20 +5406,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror", + "thiserror 2.0.12", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.11" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" dependencies = [ "pest", "pest_generator", @@ -4214,22 +5427,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.11" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "pest_meta" -version = "2.7.11" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" dependencies = [ "once_cell", "pest", @@ -4242,15 +5455,25 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", - "indexmap 2.5.0", + "fixedbitset 0.4.2", + "indexmap 2.8.0", +] + +[[package]] +name = "petgraph" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +dependencies = [ + "fixedbitset 0.5.7", + "indexmap 2.8.0", ] [[package]] name = "phf_shared" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] @@ -4263,9 +5486,9 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -4275,15 +5498,24 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] [[package]] name = "powerfmt" @@ -4293,11 +5525,11 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy", + "zerocopy 0.8.23", ] [[package]] @@ -4308,9 +5540,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "pretty_assertions" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ "diff", "yansi", @@ -4329,20 +5561,31 @@ dependencies = [ "uint", ] +[[package]] +name = "priority-queue" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f759742601cb7ee8df8780e5f7f9ab7134fb6c5dd2748a61ddd7c960e24db2f8" +dependencies = [ + "autocfg", + "equivalent", + "indexmap 2.8.0", +] + [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] @@ -4357,6 +5600,18 @@ dependencies = [ "human_format", ] +[[package]] +name = "prodash" +version = "29.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee7ce24c980b976607e2d6ae4aae92827994d23fed71659c3ede3f92528b58b" +dependencies = [ + "bytesize", + "human_format", + "log", + "parking_lot", +] + [[package]] name = "prost" version = "0.12.6" @@ -4377,7 +5632,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -4389,11 +5644,24 @@ dependencies = [ "prost", ] +[[package]] +name = "pubgrub" +version = "0.2.1" +source = "git+https://github.com/software-mansion-labs/pubgrub.git?branch=dev#cdae1729d7c47a6194a499d674ccdc96ce0838f1" +dependencies = [ + "indexmap 2.8.0", + "log", + "priority-queue", + "rustc-hash 2.1.1", + "thiserror 1.0.69", + "version-ranges", +] + [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -4421,8 +5689,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.23", ] [[package]] @@ -4432,7 +5711,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -4441,7 +5730,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.1", ] [[package]] @@ -4472,29 +5770,20 @@ dependencies = [ [[package]] name = "redb" -version = "2.1.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58323dc32ea52a8ae105ff94bc0460c5d906307533ba3401aa63db3cbe491fe5" +checksum = "ea0a72cd7140de9fc3e318823b883abf819c20d478ec89ce880466dc2ef263c6" dependencies = [ "libc", ] [[package]] name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.3" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", ] [[package]] @@ -4503,21 +5792,21 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -4531,13 +5820,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -4548,9 +5837,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "relative-path" @@ -4580,6 +5869,7 @@ dependencies = [ "js-sys", "log", "mime", + "mime_guess", "native-tls", "once_cell", "percent-encoding", @@ -4618,15 +5908,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -4641,6 +5930,35 @@ dependencies = [ "rustc-hex", ] +[[package]] +name = "rust-analyzer-salsa" +version = "0.17.0-pre.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719825638c59fd26a55412a24561c7c5bcf54364c88b9a7a04ba08a6eafaba8d" +dependencies = [ + "indexmap 2.8.0", + "lock_api", + "oorandom", + "parking_lot", + "rust-analyzer-salsa-macros", + "rustc-hash 1.1.0", + "smallvec", + "tracing", + "triomphe", +] + +[[package]] +name = "rust-analyzer-salsa-macros" +version = "0.17.0-pre.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d96498e9684848c6676c399032ebc37c52da95ecbefa83d71ccc53b9f8a4a8e" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "rust_decimal" version = "1.36.0" @@ -4648,7 +5966,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" dependencies = [ "arrayvec", - "num-traits 0.2.19", + "num-traits", ] [[package]] @@ -4663,6 +5981,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -4680,15 +6004,28 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.36" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7178faa4b75a30e269c71e61c353ce2748cf3d76f0c44c393f4e60abf49b825" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.9.2", + "windows-sys 0.59.0", ] [[package]] @@ -4736,44 +6073,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -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" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3904a4ba0a9d0211816177fd34b04c7095443f8cdacd11175064fe541c8fe2" -dependencies = [ - "heck 0.3.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -4795,14 +6103,15 @@ dependencies = [ [[package]] name = "scarb" -version = "2.7.0" -source = "git+https://github.com/software-mansion/scarb.git?rev=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" +version = "2.11.1" +source = "git+https://github.com/software-mansion/scarb.git?rev=v2.11.1#6619e7488999280bf63a47ec37a5850c948e2c80" dependencies = [ "anyhow", "async-trait", "cairo-lang-compiler", "cairo-lang-defs", "cairo-lang-diagnostics", + "cairo-lang-executable", "cairo-lang-filesystem", "cairo-lang-formatter", "cairo-lang-lowering", @@ -4811,44 +6120,53 @@ dependencies = [ "cairo-lang-parser", "cairo-lang-semantic", "cairo-lang-sierra", + "cairo-lang-sierra-generator", "cairo-lang-sierra-to-casm", "cairo-lang-starknet", "cairo-lang-starknet-classes", "cairo-lang-syntax", "cairo-lang-test-plugin", "cairo-lang-utils", + "cairo-lint-core", "camino", + "cargo_metadata", "clap", "convert_case", "create-output-dir", + "crossbeam-channel", "data-encoding", "deno_task_shell", "derive_builder", "dialoguer 0.11.0", "directories", "dunce", + "flate2", "fs4", "fs_extra", "futures", - "gix", + "gix 0.70.0", "gix-path", "glob", "ignore", "include_dir", "indoc", - "itertools 0.12.1", + "itertools 0.14.0", "libloading", "once_cell", + "once_map", "pathdiff", - "petgraph", + "petgraph 0.7.1", + "pubgrub", "ra_ap_toolchain", "redb", "reqwest", "scarb-build-metadata", - "scarb-metadata 1.12.0 (git+https://github.com/software-mansion/scarb.git?rev=v2.7.0)", - "scarb-stable-hash 1.0.0 (git+https://github.com/software-mansion/scarb.git?rev=v2.7.0)", - "scarb-ui 0.1.5 (git+https://github.com/software-mansion/scarb.git?rev=v2.7.0)", + "scarb-metadata 1.14.0 (git+https://github.com/software-mansion/scarb.git?rev=v2.11.1)", + "scarb-proc-macro-server-types", + "scarb-stable-hash 1.0.0 (git+https://github.com/software-mansion/scarb.git?rev=v2.11.1)", + "scarb-ui 0.1.5 (git+https://github.com/software-mansion/scarb.git?rev=v2.11.1)", "semver", + "semver-pubgrub", "serde", "serde-untagged", "serde-value", @@ -4858,8 +6176,10 @@ dependencies = [ "smallvec", "smol_str", "tar", - "thiserror", + "target-triple", + "thiserror 2.0.12", "tokio", + "tokio-stream", "toml", "toml_edit", "tracing", @@ -4867,10 +6187,10 @@ dependencies = [ "typed-builder", "url", "walkdir", - "which 5.0.0", - "windows-sys 0.52.0", + "which 7.0.2", + "windows-sys 0.59.0", "zip", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] @@ -4878,7 +6198,7 @@ name = "scarb-agent" version = "0.1.8" dependencies = [ "anyhow", - "bincode", + "bincode 2.0.1", "cainome-cairo-serde", "cairo-felt", "cairo-io-serde", @@ -4895,14 +6215,14 @@ dependencies = [ "cairo-oracle-hint-processor", "cairo-proto-build", "cairo-proto-serde", - "cairo-vm 1.0.1 (git+https://github.com/raphaelDkhn/cairo-vm.git?rev=2738ec0)", + "cairo-vm 2.0.0", "camino", "clap", - "colored", + "colored 2.2.0", "dialoguer 0.10.4", "dunce", "env_logger 0.10.2", - "gix", + "gix 0.66.0", "handlebars", "hex", "indoc", @@ -4911,47 +6231,57 @@ dependencies = [ "once_cell", "reqwest", "scarb", - "scarb-metadata 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scarb-metadata 1.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "scarb-ui 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "serde_json", "serde_yaml", "tempfile", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "scarb-build-metadata" -version = "2.7.0" -source = "git+https://github.com/software-mansion/scarb.git?rev=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" +version = "2.11.1" +source = "git+https://github.com/software-mansion/scarb.git?rev=v2.11.1#6619e7488999280bf63a47ec37a5850c948e2c80" dependencies = [ "cargo_metadata", ] [[package]] name = "scarb-metadata" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170ebce1774a85568646ba4096827f898306665187eebd9282fee313e316518d" +checksum = "f580d215bb85d42e9a1489aa869cae7878aff343384b73e235753334e8fb72b4" dependencies = [ "camino", "semver", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", ] [[package]] name = "scarb-metadata" -version = "1.12.0" -source = "git+https://github.com/software-mansion/scarb.git?rev=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" +version = "1.14.0" +source = "git+https://github.com/software-mansion/scarb.git?rev=v2.11.1#6619e7488999280bf63a47ec37a5850c948e2c80" dependencies = [ "camino", "derive_builder", "semver", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", +] + +[[package]] +name = "scarb-proc-macro-server-types" +version = "0.2.0" +source = "git+https://github.com/software-mansion/scarb.git?rev=v2.11.1#6619e7488999280bf63a47ec37a5850c948e2c80" +dependencies = [ + "cairo-lang-macro", + "serde", + "serde_json", ] [[package]] @@ -4967,7 +6297,7 @@ dependencies = [ [[package]] name = "scarb-stable-hash" version = "1.0.0" -source = "git+https://github.com/software-mansion/scarb.git?rev=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" +source = "git+https://github.com/software-mansion/scarb.git?rev=v2.11.1#6619e7488999280bf63a47ec37a5850c948e2c80" dependencies = [ "data-encoding", "xxhash-rust", @@ -4984,7 +6314,7 @@ dependencies = [ "clap", "console", "indicatif", - "scarb-metadata 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scarb-metadata 1.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "serde_json", "tracing-core", @@ -4993,14 +6323,14 @@ dependencies = [ [[package]] name = "scarb-ui" version = "0.1.5" -source = "git+https://github.com/software-mansion/scarb.git?rev=v2.7.0#e9a2b8716daf7388bfab5e4b0a2656e1b0c02d4d" +source = "git+https://github.com/software-mansion/scarb.git?rev=v2.11.1#6619e7488999280bf63a47ec37a5850c948e2c80" dependencies = [ "anyhow", "camino", "clap", "console", "indicatif", - "scarb-metadata 1.12.0 (git+https://github.com/software-mansion/scarb.git?rev=v2.7.0)", + "scarb-metadata 1.14.0 (git+https://github.com/software-mansion/scarb.git?rev=v2.11.1)", "serde", "serde_json", "tracing-core", @@ -5008,18 +6338,18 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "schemars" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -5030,14 +6360,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -5074,8 +6404,8 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", - "core-foundation", + "bitflags 2.9.0", + "core-foundation 0.9.4", "core-foundation-sys", "libc", "security-framework-sys", @@ -5083,9 +6413,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -5093,27 +6423,36 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] +[[package]] +name = "semver-pubgrub" +version = "0.1.0" +source = "git+https://github.com/software-mansion-labs/semver-pubgrub.git#6c78141d940cda6d8e69aea794c2bf30cc3402df" +dependencies = [ + "pubgrub", + "semver", +] + [[package]] name = "serde" -version = "1.0.209" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde-untagged" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e" dependencies = [ "erased-serde", "serde", @@ -5132,13 +6471,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -5149,14 +6488,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -5177,20 +6516,20 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -5209,15 +6548,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.5.0", + "indexmap 2.8.0", "serde", "serde_derive", "serde_json", @@ -5227,14 +6566,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.9.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -5243,7 +6582,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.8.0", "itoa", "ryu", "serde", @@ -5330,9 +6669,9 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" @@ -5345,9 +6684,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" [[package]] name = "smol_str" @@ -5360,9 +6699,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -5376,15 +6715,22 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "sprs" -version = "0.7.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec63571489873d4506683915840eeb1bb16b3198ee4894cc6f2fe3013d505e56" +checksum = "8bff8419009a08f6cb7519a602c5590241fbff1446bcc823c07af15386eb801b" dependencies = [ "ndarray", "num-complex", - "num-traits 0.1.43", + "num-traits", + "smallvec", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "starknet" version = "0.11.0" @@ -5410,7 +6756,7 @@ dependencies = [ "starknet-crypto 0.7.1", "starknet-providers", "starknet-signers", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5424,7 +6770,7 @@ dependencies = [ "starknet-accounts", "starknet-core", "starknet-providers", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5442,7 +6788,7 @@ dependencies = [ "serde_with", "sha3", "starknet-crypto 0.7.1", - "starknet-types-core 0.1.5", + "starknet-types-core 0.1.7", ] [[package]] @@ -5456,7 +6802,7 @@ dependencies = [ "hmac", "num-bigint", "num-integer", - "num-traits 0.2.19", + "num-traits", "rfc6979", "sha2", "starknet-crypto-codegen", @@ -5475,11 +6821,30 @@ dependencies = [ "hmac", "num-bigint", "num-integer", - "num-traits 0.2.19", + "num-traits", "rfc6979", "sha2", "starknet-curve 0.5.0", - "starknet-types-core 0.1.5", + "starknet-types-core 0.1.7", + "zeroize", +] + +[[package]] +name = "starknet-crypto" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "039a3bad70806b494c9e6b21c5238a6c8a373d66a26071859deb0ccca6f93634" +dependencies = [ + "crypto-bigint", + "hex", + "hmac", + "num-bigint", + "num-integer", + "num-traits", + "rfc6979", + "sha2", + "starknet-curve 0.5.1", + "starknet-types-core 0.1.7", "zeroize", ] @@ -5491,7 +6856,7 @@ checksum = "bbc159a1934c7be9761c237333a57febe060ace2bc9e3b337a59a37af206d19f" dependencies = [ "starknet-curve 0.4.2", "starknet-ff", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -5508,7 +6873,16 @@ name = "starknet-curve" version = "0.5.0" source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=2ddc694#2ddc69479d326ed154df438d22f2d720fbba746e" dependencies = [ - "starknet-types-core 0.1.5", + "starknet-types-core 0.1.7", +] + +[[package]] +name = "starknet-curve" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcde6bd74269b8161948190ace6cf069ef20ac6e79cd2ba09b320efa7500b6de" +dependencies = [ + "starknet-types-core 0.1.7", ] [[package]] @@ -5517,9 +6891,9 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abf1b44ec5b18d87c1ae5f54590ca9d0699ef4dd5b2ffa66fc97f24613ec585" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "crypto-bigint", - "getrandom", + "getrandom 0.2.15", "hex", ] @@ -5529,7 +6903,7 @@ version = "0.2.0" source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=2ddc694#2ddc69479d326ed154df438d22f2d720fbba746e" dependencies = [ "starknet-core", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -5541,14 +6915,14 @@ dependencies = [ "auto_impl", "ethereum-types", "flate2", - "getrandom", + "getrandom 0.2.15", "log", "reqwest", "serde", "serde_json", "serde_with", "starknet-core", - "thiserror", + "thiserror 1.0.69", "url", ] @@ -5561,11 +6935,11 @@ dependencies = [ "auto_impl", "crypto-bigint", "eth-keystore", - "getrandom", - "rand", + "getrandom 0.2.15", + "rand 0.8.5", "starknet-core", "starknet-crypto 0.7.1", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5580,22 +6954,22 @@ dependencies = [ "lazy_static", "num-bigint", "num-integer", - "num-traits 0.2.19", + "num-traits", "serde", ] [[package]] name = "starknet-types-core" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6bacf0ba19bc721e518bc4bf389ff13daa8a7c5db5fd320600473b8aa9fcbd" +checksum = "fa1b9e01ccb217ab6d475c5cda05dbb22c30029f7bb52b192a010a00d77a3d74" dependencies = [ - "lambdaworks-crypto 0.7.0", - "lambdaworks-math 0.7.0", + "lambdaworks-crypto 0.10.0", + "lambdaworks-math 0.10.0", "lazy_static", "num-bigint", "num-integer", - "num-traits 0.2.19", + "num-traits", "serde", ] @@ -5607,13 +6981,12 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "938d512196766101d333398efde81bc1f37b00cb42c2f8350e5df639f040bbbe" dependencies = [ "new_debug_unreachable", - "once_cell", - "parking_lot 0.12.3", + "parking_lot", "phf_shared", "precomputed-hash", ] @@ -5643,9 +7016,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -5658,6 +7031,17 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5665,7 +7049,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", "system-configuration-sys", ] @@ -5687,37 +7071,43 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.41" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" dependencies = [ "filetime", "libc", "xattr", ] +[[package]] +name = "target-triple" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790" + [[package]] name = "tempfile" -version = "3.12.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567" dependencies = [ "cfg-if", "fastrand", + "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 1.0.2", "windows-sys 0.59.0", ] [[package]] name = "term" -version = "0.7.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +checksum = "a3bb6001afcea98122260987f8b7b5da969ecad46dbf0b5453702f776b491a41" dependencies = [ - "dirs-next", - "rustversion", - "winapi", + "home", + "windows-sys 0.52.0", ] [[package]] @@ -5731,22 +7121,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -5781,9 +7191,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" dependencies = [ "deranged", "itoa", @@ -5798,15 +7208,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c" dependencies = [ "num-conv", "time-core", @@ -5821,11 +7231,21 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -5838,9 +7258,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "9975ea0f48b5aa3972bf2d888c238182458437cc2a19374b81b25cdf1023fb3a" dependencies = [ "backtrace", "bytes", @@ -5855,13 +7275,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] @@ -5884,11 +7304,22 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -5899,9 +7330,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -5920,15 +7351,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.8.0", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.7.3", ] [[package]] @@ -5939,9 +7370,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -5950,20 +7381,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -5982,12 +7413,12 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", - "nu-ansi-term", + "nu-ansi-term 0.46.0", "once_cell", "regex", "sharded-slab", @@ -5998,6 +7429,16 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "triomphe" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85" +dependencies = [ + "serde", + "stable_deref_trait", +] + [[package]] name = "try-lock" version = "0.2.5" @@ -6021,26 +7462,26 @@ checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", ] [[package]] name = "typeid" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -6069,14 +7510,14 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c878a167baa8afd137494101a688ef8c67125089ff2249284bd2b5f9bfedb815" dependencies = [ - "thiserror", + "thiserror 1.0.69", ] [[package]] -name = "unicode-bidi" -version = "0.3.15" +name = "unicase" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-bom" @@ -6086,36 +7527,36 @@ checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unsafe-libyaml" @@ -6129,11 +7570,17 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -6141,6 +7588,18 @@ dependencies = [ "serde", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -6153,15 +7612,15 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.15", "serde", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -6169,6 +7628,14 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "version-ranges" +version = "0.1.0" +source = "git+https://github.com/software-mansion-labs/pubgrub.git?branch=dev#cdae1729d7c47a6194a499d674ccdc96ce0838f1" +dependencies = [ + "smallvec", +] + [[package]] name = "version_check" version = "0.9.5" @@ -6200,49 +7667,59 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6250,28 +7727,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -6282,9 +7762,19 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -6298,26 +7788,25 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "which" -version = "5.0.0" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "once_cell", - "rustix", - "windows-sys 0.48.0", + "rustix 0.38.44", + "winsafe", ] [[package]] name = "which" -version = "6.0.3" +version = "7.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +checksum = "2774c861e1f072b3aadc02f8ba886c26ad6321567ecc294c935434cad06f1283" dependencies = [ "either", - "home", - "rustix", + "env_home", + "rustix 0.38.44", "winsafe", ] @@ -6361,6 +7850,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-link" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" + [[package]] name = "windows-sys" version = "0.48.0" @@ -6511,9 +8006,18 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "1e90edd2ac1aa278a5c4599b1d89cf03074b610800f866d4026dc199d7929a28" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" dependencies = [ "memchr", ] @@ -6534,6 +8038,27 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -6545,41 +8070,64 @@ dependencies = [ [[package]] name = "xattr" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" dependencies = [ "libc", - "linux-raw-sys", - "rustix", + "rustix 1.0.2", ] [[package]] name = "xshell" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db0ab86eae739efd1b054a8d3d16041914030ac4e01cd1dca0cf252fd8b6437" +checksum = "9e7290c623014758632efe00737145b6867b66292c42167f2ec381eb566a373d" dependencies = [ "xshell-macros", ] [[package]] name = "xshell-macros" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d422e8e38ec76e2f06ee439ccc765e9c6a9638b9e7c9f2e8255e4d41e8bd852" +checksum = "32ac00cd3f8ec9c1d33fb3e7958a82df6989c42d747bd326c822b1d625283547" [[package]] name = "xxhash-rust" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" [[package]] name = "yansi" -version = "0.5.1" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure", +] [[package]] name = "zerocopy" @@ -6587,8 +8135,16 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +dependencies = [ + "zerocopy-derive 0.8.23", ] [[package]] @@ -6599,7 +8155,39 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure", ] [[package]] @@ -6619,7 +8207,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.100", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -6653,11 +8263,11 @@ dependencies = [ [[package]] name = "zstd" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ - "zstd-safe 7.2.1", + "zstd-safe 7.2.3", ] [[package]] @@ -6672,18 +8282,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.2.1" +version = "7.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +checksum = "f3051792fbdc2e1e143244dc28c60f73d8470e93f3f9cbd0ead44da5ed802722" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.14+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "8fb060d4926e4ac3a3ad15d864e99ceb5f343c6b34f5bd6d81ae6ed417311be5" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index c7cec89..1ba33f7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,29 +22,26 @@ bincode = { version = "2.0.0-rc.3", default-features = false, features = [ "serde", ] } bytes = "1.5.0" -cairo-lang-casm = "=2.7.0" -cairo-lang-compiler = "=2.7.0" -cairo-lang-filesystem = "=2.7.0" -cairo-lang-runner = "=2.7.0" -cairo-lang-sierra = "=2.7.0" -cairo-lang-sierra-ap-change = { version = "2.7.0", default-features = false } -cairo-lang-sierra-gas = { version = "2.7.0", default-features = false } -cairo-lang-sierra-to-casm = "=2.7.0" -cairo-lang-sierra-generator = "=2.7.0" -cairo-lang-sierra-type-size = { version = "2.7.0", default-features = false } -cairo-lang-starknet = "=2.7.0" +cairo-lang-casm = "=2.11.1" +cairo-lang-compiler = "=2.11.1" +cairo-lang-filesystem = "=2.11.1" +cairo-lang-runner = "=2.11.1" +cairo-lang-sierra = "=2.11.1" +cairo-lang-sierra-ap-change = { version = "2.11.1", default-features = false } +cairo-lang-sierra-gas = { version = "2.11.1", default-features = false } +cairo-lang-sierra-to-casm = "=2.11.1" +cairo-lang-sierra-generator = "=2.11.1" +cairo-lang-sierra-type-size = { version = "2.11.1", default-features = false } +cairo-lang-starknet = "=2.11.1" cairo-lang-hints-test-runner = { path = "./cairo-lang-hints-test-runner" } -cairo-lang-test-plugin = "=2.7.0" -cairo-lang-utils = "=2.7.0" +cairo-lang-test-plugin = "=2.11.1" +cairo-lang-utils = "=2.11.1" cairo-oracle-hint-processor = { path = "./cairo-oracle-hint-processor"} cairo-proto-build = { path = "./cairo-proto-build", default-features = false } cairo-proto-serde = { path = "./cairo-proto-serde" } cairo-io-serde = { path = "./cairo-io-serde" } cairo-felt = "0.9.1" -cairo-vm = { git = "https://github.com/raphaelDkhn/cairo-vm.git", rev = "2738ec0", features = [ - "std", - "cairo-1-hints", -] } +cairo-vm = { git = "https://github.com/Tbelleng/cairo-vm", features = [ "std", "cairo-1-hints" ] } cainome-cairo-serde = { git = "https://github.com/cartridge-gg/cainome.git", rev = "0d29bb0" } camino = "1.1.6" clap = { version = "4.3.10", features = ["derive"] } @@ -65,7 +62,7 @@ prost = "0.12.3" prost-types = "0.12.3" rayon = "1.8.1" reqwest = { version = "0.11.23", features = ["blocking", "json"] } -scarb = { git = "https://github.com/software-mansion/scarb.git", rev = "v2.7.0" } +scarb = { git = "https://github.com/software-mansion/scarb.git", rev = "v2.11.1" } scarb-metadata = "1.12.0" scarb-ui = "0.1.5" serde = { version = "1.0.195", features = ["derive"] } @@ -74,3 +71,6 @@ starknet-types-core = "0.0.7" tempfile = "3.9.0" thiserror = "1.0.40" which = "6.0.0" +wasm-bindgen = "=0.2.92" + + diff --git a/cairo-io-serde/src/cairo_input.rs b/cairo-io-serde/src/cairo_input.rs index 503cf0e..159db3c 100644 --- a/cairo-io-serde/src/cairo_input.rs +++ b/cairo-io-serde/src/cairo_input.rs @@ -34,9 +34,12 @@ fn parse_schema(value: &Value, schema_name: &str, schema: &Schema) -> Result { - /// Input arguments for the `main` function in the cairo progran - pub args: &'a [FuncArg], - /// Serialize program output into a user-friendly format - pub serialize_output: bool, - /// Compute cairo trace during execution - pub trace_enabled: bool, - /// Relocate cairo memory at the end of the run - pub relocate_mem: bool, - /// Cairo layout chosen for the run - pub layout: LayoutName, - /// Run in proof_mode - pub proof_mode: bool, - /// Should be true if either air_public_input or cairo_pie_output are needed - /// Sets builtins stop_ptr by calling `final_stack` on each builtin - pub finalize_builtins: bool, - /// Appends the return and input values to the output segment. This is performed by default when running in proof_mode - pub append_return_values: bool, -} - -impl Default for Cairo1RunConfig<'_> { - fn default() -> Self { - Self { - args: Default::default(), - serialize_output: false, - trace_enabled: false, - relocate_mem: false, - layout: LayoutName::all_cairo, - proof_mode: false, - finalize_builtins: false, - append_return_values: false, - } - } -} - -impl Cairo1RunConfig<'_> { - // Returns true if the flags in the config enable adding the output builtin and - // copying input and output values into it's segment - fn copy_to_output(&self) -> bool { - self.append_return_values || self.proof_mode - } -} - -// Runs a Cairo 1 program -// Returns the runner & VM after execution + the return values -pub fn cairo_run_program( - sierra_program: &SierraProgram, - cairo_run_config: Cairo1RunConfig, - configuration: &Configuration, - entry_func_name: &str, - schema: &Schema, -) -> Result<(CairoRunner, Vec, Option), Error> { - let metadata = calc_metadata_ap_change_only(sierra_program) - .map_err(|_| VirtualMachineError::Unexpected)?; - let sierra_program_registry = ProgramRegistry::::new(sierra_program)?; - let type_sizes = - get_type_size_map(sierra_program, &sierra_program_registry).unwrap_or_default(); - let config = SierraToCasmConfig { - gas_usage_check: false, - max_bytecode_size: usize::MAX, - }; - let casm_program = - cairo_lang_sierra_to_casm::compiler::compile(sierra_program, &metadata, config)?; - - let main_func = find_function(sierra_program, entry_func_name)?; - - let initial_gas = 9999999999999_usize; - - // Fetch return type data - let return_type_id = match main_func.signature.ret_types.last() { - // We need to check if the last return type is indeed the function's return value and not an implicit return value - return_type @ Some(concrete_ty) - if get_info(&sierra_program_registry, concrete_ty) - .is_some_and(|info| !is_implicit_generic_id(&info.long_id.generic_id)) => - { - return_type - } - _ => None, - }; - - if cairo_run_config.copy_to_output() - && !check_only_array_felt_input_type( - &main_func.signature.param_types, - &sierra_program_registry, - ) - { - return Err(Error::IlegalInputValue); - }; - if cairo_run_config.copy_to_output() - && !check_only_array_felt_return_type(return_type_id, &sierra_program_registry) - { - return Err(Error::IlegalReturnValue); - }; - - // Modified entry code to be compatible with custom cairo1 Proof Mode. - // This adds code that's needed for dictionaries, adjusts ap for builtin pointers, adds initial gas for the gas builtin if needed, and sets up other necessary code for cairo1 - let (entry_code, builtins) = create_entry_code( - &sierra_program_registry, - &casm_program, - &type_sizes, - main_func, - &cairo_run_config, - )?; - - // Fetch return type data - let return_type_size = return_type_id - .and_then(|id| type_sizes.get(id).cloned()) - .unwrap_or_default(); - - // This footer is used by lib funcs - let libfunc_footer = create_code_footer(); - let builtin_count: i16 = builtins.len().into_or_panic(); - - // This is the program we are actually running/proving - // With (embedded proof mode), cairo1 header and the libfunc footer - let instructions = chain!( - entry_code.instructions.iter(), - casm_program.instructions.iter(), - libfunc_footer.iter(), - ); - - let (processor_hints, program_hints) = build_hints_vec(instructions.clone()); - - let hint_processor = Cairo1HintProcessor::new( - &processor_hints, - RunResources::default(), - cairo_run_config.copy_to_output(), - ); - let mut hint_processor = Rpc1HintProcessor::new(hint_processor, configuration)?; - - let data: Vec = instructions - .flat_map(|inst| inst.assemble().encode()) - .map(|x| Felt252::from(&x)) - .map(MaybeRelocatable::from) - .collect(); - - let program = if cairo_run_config.proof_mode { - Program::new_for_proof( - builtins.clone(), - data, - 0, - // Proof mode is on top - // `jmp rel 0` is the last line of the entry code. - entry_code.current_code_offset - 2, - program_hints, - ReferenceManager { - references: Vec::new(), - }, - HashMap::new(), - vec![], - None, - )? - } else { - Program::new( - builtins.clone(), - data, - Some(0), - program_hints, - ReferenceManager { - references: Vec::new(), - }, - HashMap::new(), - vec![], - None, - )? - }; - - let runner_mode = if cairo_run_config.proof_mode { - RunnerMode::ProofModeCairo1 - } else { - RunnerMode::ExecutionMode - }; - - let mut runner = CairoRunner::new_v2( - &program, - cairo_run_config.layout, - runner_mode, - cairo_run_config.trace_enabled, - )?; - let end = runner.initialize(cairo_run_config.proof_mode)?; - load_arguments(&mut runner, &cairo_run_config, main_func, initial_gas)?; - - // Run it until the end / infinite loop in proof_mode - runner.run_until_pc(end, &mut hint_processor)?; - if cairo_run_config.proof_mode { - runner.run_for_steps(1, &mut hint_processor)?; - } - - runner.end_run(false, false, &mut hint_processor)?; - - let result_inner_type_size = - result_inner_type_size(return_type_id, &sierra_program_registry, &type_sizes); - // Fetch return values - let return_values = fetch_return_values( - return_type_size, - result_inner_type_size, - &runner.vm, - builtin_count, - cairo_run_config.copy_to_output(), - )?; - - let serialized_output = if cairo_run_config.serialize_output { - if cairo_run_config.copy_to_output() { - // The return value is already serialized, so we can just print the array values - let mut output_felts: Vec = vec![]; - // Skip array_len - for elem in return_values[1..].iter() { - match elem { - MaybeRelocatable::RelocatableValue(_relocatable) => { - panic!("Element should not be relocatable") - } - MaybeRelocatable::Int(felt) => { - output_felts.push(*felt); - } - } - } - Some(process_output(output_felts, schema).expect("Process output failed")) - } else { - let serialized = serialize_output( - &return_values, - &mut runner.vm, - return_type_id, - &sierra_program_registry, - &type_sizes, - ); - - Some(process_output(serialized, schema).expect("Process output failed")) - } - } else { - None - }; - - // Set stop pointers for builtins so we can obtain the air public input - if cairo_run_config.finalize_builtins { - if cairo_run_config.copy_to_output() { - // Set stop pointer for each builtin - runner.vm.builtins_final_stack_from_stack_pointer_dict( - &builtins - .iter() - .enumerate() - .map(|(i, builtin)| { - ( - *builtin, - (runner.vm.get_ap() - (builtins.len() - 1 - i)).unwrap(), - ) - }) - .collect(), - false, - )?; - } else { - finalize_builtins( - &main_func.signature.ret_types, - &type_sizes, - &mut runner.vm, - builtin_count, - )?; - } - - // Build execution public memory - if cairo_run_config.proof_mode { - runner.finalize_segments()?; - } - } - - runner.relocate(true)?; - - Ok((runner, return_values, serialized_output)) -} - -#[allow(clippy::type_complexity)] -fn build_hints_vec<'b>( - instructions: impl Iterator, -) -> (Vec<(usize, Vec)>, HashMap>) { - let mut hints: Vec<(usize, Vec)> = Vec::new(); - let mut program_hints: HashMap> = HashMap::new(); - - let mut hint_offset = 0; - - for instruction in instructions { - if !instruction.hints.is_empty() { - hints.push((hint_offset, instruction.hints.clone())); - program_hints.insert( - hint_offset, - vec![HintParams { - code: hint_offset.to_string(), - accessible_scopes: Vec::new(), - flow_tracking_data: FlowTrackingData { - ap_tracking: ApTracking::default(), - reference_ids: HashMap::new(), - }, - }], - ); - } - hint_offset += instruction.body.op_size(); - } - (hints, program_hints) -} - -/// Finds first function ending with `name_suffix`. -fn find_function<'a>( - sierra_program: &'a SierraProgram, - name_suffix: &'a str, -) -> Result<&'a Function, RunnerError> { - sierra_program - .funcs - .iter() - .find(|f| { - if let Some(name) = &f.id.debug_name { - name.ends_with(name_suffix) - } else { - false - } - }) - .ok_or_else(|| RunnerError::MissingMain) -} - -/// Creates a list of instructions that will be appended to the program's bytecode. -fn create_code_footer() -> Vec { - casm! { - // Add a `ret` instruction used in libfuncs that retrieve the current value of the `fp` - // and `pc` registers. - ret; - } - .instructions -} - -// Loads the input arguments into the execution segment, leaving the necessary gaps for the values that will be written by -// the instructions in the entry_code (produced by `create_entry_code`). Also loads the initial gas if the GasBuiltin is present - -/* Example of execution segment before running the main function: -Before calling this function (after runner.initialize): -[ - (*1) output_builtin_base - builtin_base_0 - builtin_base_1 - return_fp - return_pc -] -After calling this function (before running the VM): -[ - (*1) output_builtin_base - builtin_base_0 - builtin_base_1 - return_fp - return_pc - (*1+2+3) gap - (*1+2) gap - (*1+2) gap - (*2) gap - (*2) gap - (*2) gap - gap - gap - (*2) gap - (*3) arg_0 - (*3) arg_1 -] - -After the entry_code (up until calling main) has been ran by the VM: -[ - (*1) output_builtin_base - builtin_base_0 - builtin_base_1 - return_fp - return_pc - (*1) gap (for output_builtin final ptr) - (*1) gap (for builtin_0 final ptr) - (*1) gap (for builtin_1 final ptr) - (*2) segment_arena_ptr - (*2) infos_ptr - (*2) 0 - builtin_base_0 - builtin_base_1 - (*2) segment_arena_ptr + 3 (segment_arena base) - (*4) initial_gas - (*3) arg_0 - (*3) arg_1 -] -(*1) if output builtin is added (if either proof_mode or append_return_values is enabled) -(*2) if segment arena is present -(*3) if args are used -(*4) if gas builtin is present -*/ -fn load_arguments( - runner: &mut CairoRunner, - cairo_run_config: &Cairo1RunConfig, - main_func: &Function, - initial_gas: usize, -) -> Result<(), Error> { - let got_gas_builtin = main_func - .signature - .param_types - .iter() - .any(|ty| ty.debug_name.as_ref().is_some_and(|n| n == "GasBuiltin")); - if cairo_run_config.args.is_empty() && !got_gas_builtin { - // Nothing to be done - return Ok(()); - } - let got_segment_arena = main_func - .signature - .param_types - .iter() - .any(|ty| ty.debug_name.as_ref().is_some_and(|n| n == "SegmentArena")); - // This AP correction represents the memory slots taken up by the values created by `create_entry_code`: - // These include: - // * The builtin bases (not including output) - // * (Only if the output builtin is added) A gap for each builtin's final pointer - // * The segment arena values (if present), including: - // * segment_arena_ptr - // * info_segment_ptr - // * 0 - // * segment_arena_ptr + 3 - let mut ap_offset = runner.get_program().builtins_len(); - if cairo_run_config.copy_to_output() { - ap_offset += runner.get_program().builtins_len() - 1; - } - if got_segment_arena { - ap_offset += 4; - } - // Load initial gas if GasBuiltin is present - if got_gas_builtin { - runner.vm.insert_value( - (runner.vm.get_ap() + ap_offset).map_err(VirtualMachineError::Math)?, - Felt252::from(initial_gas), - )?; - ap_offset += 1; - } - for arg in cairo_run_config.args { - match arg { - FuncArg::Array(args) => { - let array_start = runner.vm.add_memory_segment(); - let array_end = runner.vm.load_data( - array_start, - &args.iter().map(|f| f.into()).collect::>(), - )?; - runner.vm.insert_value( - (runner.vm.get_ap() + ap_offset).map_err(VirtualMachineError::Math)?, - array_start, - )?; - ap_offset += 1; - runner.vm.insert_value( - (runner.vm.get_ap() + ap_offset).map_err(VirtualMachineError::Math)?, - array_end, - )?; - ap_offset += 1; - } - FuncArg::Single(arg) => { - runner.vm.insert_value( - (runner.vm.get_ap() + ap_offset).map_err(VirtualMachineError::Math)?, - arg, - )?; - ap_offset += 1; - } - } - } - - Ok(()) -} - -/// Returns the instructions to add to the beginning of the code to successfully call the main -/// function, as well as the builtins required to execute the program. -fn create_entry_code( - sierra_program_registry: &ProgramRegistry, - casm_program: &CairoProgram, - type_sizes: &UnorderedHashMap, - func: &Function, - config: &Cairo1RunConfig, -) -> Result<(CasmContext, Vec), Error> { - let copy_to_output_builtin = config.copy_to_output(); - let signature = &func.signature; - let got_segment_arena = signature.param_types.iter().any(|ty| { - get_info(sierra_program_registry, ty) - .map(|x| x.long_id.generic_id == SegmentArenaType::ID) - .unwrap_or_default() - }); - let got_gas_builtin = signature.param_types.iter().any(|ty| { - get_info(sierra_program_registry, ty) - .map(|x| x.long_id.generic_id == GasBuiltinType::ID) - .unwrap_or_default() - }); - // The builtins in the formatting expected by the runner. - let (builtins, builtin_offset) = - get_function_builtins(&signature.param_types, copy_to_output_builtin); - let mut ctx = CasmBuilder::default(); - // Getting a variable pointing to the location of each builtin. - let mut builtin_vars = - HashMap::::from_iter(builtin_offset.iter().map(|(id, offset)| { - ( - id.clone(), - ctx.add_var(CellExpression::Deref(deref!([fp - offset]))), - ) - })); - // Getting a variable for the location output builtin if required. - let output_ptr = copy_to_output_builtin.then(|| { - let offset: i16 = 2 + builtins.len().into_or_panic::(); - ctx.add_var(CellExpression::Deref(deref!([fp - offset]))) - }); - if copy_to_output_builtin { - // Leave a gap to write the builtin final pointers - // We write them on a fixed cells relative to the starting FP pointer so we don't lose them after serializing outputs - for _ in 0..builtins.len() { - casm_build_extend!(ctx, tempvar _local;); - } - casm_build_extend!(ctx, ap += builtins.len();); - } - let mut expected_arguments_size = 0; - if got_segment_arena { - // Allocating the segment arena and initializing it. - casm_build_extend! {ctx, - tempvar segment_arena; - tempvar infos; - hint AllocSegment {} into {dst: segment_arena}; - hint AllocSegment {} into {dst: infos}; - const czero = 0; - tempvar zero = czero; - // Write Infos segment, n_constructed (0), and n_destructed (0) to the segment. - assert infos = *(segment_arena++); - assert zero = *(segment_arena++); - assert zero = *(segment_arena++); - } - // Adding the segment arena to the builtins var map. - builtin_vars.insert(SegmentArenaType::ID, segment_arena); - }; - - for ty in &signature.param_types { - let info = get_info(sierra_program_registry, ty) - .ok_or_else(|| Error::NoInfoForType(ty.clone()))?; - let generic_ty = &info.long_id.generic_id; - if let Some(var) = builtin_vars.get(generic_ty).cloned() { - casm_build_extend!(ctx, tempvar _builtin = var;); - } else if generic_ty == &SystemType::ID { - casm_build_extend! {ctx, - tempvar system; - hint AllocSegment {} into {dst: system}; - ap += 1; - }; - } else if generic_ty == &GasBuiltinType::ID { - // We already loaded the inital gas so we just advance AP - casm_build_extend! {ctx, - ap += 1; - }; - } else { - let ty_size = type_sizes[ty]; - // We already loaded these arguments, so we just advance AP - casm_build_extend!(ctx, - ap+=ty_size as usize; - ); - expected_arguments_size += ty_size; - } - } - let actual_args_size = config - .args - .iter() - .map(|arg| match arg { - FuncArg::Single(_) => 1, - FuncArg::Array(_) => 2, - }) - .sum::(); - if expected_arguments_size != actual_args_size { - return Err(Error::ArgumentsSizeMismatch { - expected: expected_arguments_size, - actual: actual_args_size, - }); - } - - casm_build_extend!(ctx, let () = call FUNCTION;); - - let return_type_id = signature.ret_types.last(); - let return_type_size = return_type_id - .and_then(|id| type_sizes.get(id).cloned()) - .unwrap_or_default(); - let mut offset: i16 = 0; - for ty in signature.ret_types.iter().rev() { - let info = get_info(sierra_program_registry, ty) - .ok_or_else(|| Error::NoInfoForType(ty.clone()))?; - offset += type_sizes[ty]; - let generic_ty = &info.long_id.generic_id; - let Some(var) = builtin_vars.get_mut(generic_ty) else { - continue; - }; - *var = ctx.add_var(CellExpression::Deref(deref!([ap - offset]))); - } - - // Helper to get a variable for a given builtin. - // Fails for builtins that will never be present. - let get_var = |name: &BuiltinName| match name { - BuiltinName::range_check => builtin_vars[&RangeCheckType::ID], - BuiltinName::pedersen => builtin_vars[&PedersenType::ID], - BuiltinName::bitwise => builtin_vars[&BitwiseType::ID], - BuiltinName::ec_op => builtin_vars[&EcOpType::ID], - BuiltinName::poseidon => builtin_vars[&PoseidonType::ID], - BuiltinName::segment_arena => builtin_vars[&SegmentArenaType::ID], - _ => unreachable!(), - }; - if copy_to_output_builtin { - // Copying the final builtins into a local variables. - for (i, builtin) in builtins.iter().enumerate() { - // Skip output_ptr as we still haven't written into it and this will lead to the wrong size being written - if matches!(builtin, BuiltinName::output) { - continue; - } - let var = get_var(builtin); - let local = ctx.add_var(CellExpression::Deref(deref!([fp + i.to_i16().unwrap()]))); - casm_build_extend!(ctx, assert local = var;); - } - // Serialize return values into output segment - let output_ptr = output_ptr.unwrap(); - let outputs = (1..(return_type_size + 1)) - .rev() - .map(|i| ctx.add_var(CellExpression::Deref(deref!([ap - i])))) - .collect_vec(); - let (array_start_ptr, array_end_ptr) = if is_panic_result(signature.ret_types.last()) { - // Write panic flag value - let panic_flag = outputs[0]; - casm_build_extend! {ctx, - assert panic_flag = *(output_ptr++); - }; - // If the run did panic, these will point to the panic data - (outputs[1], outputs[2]) - } else { - (outputs[0], outputs[1]) - }; - casm_build_extend! {ctx, - // Calculate size of array and write it into the output segment - tempvar array_size = array_end_ptr - array_start_ptr; - assert array_size = *(output_ptr++); - // Create loop variables - tempvar remaining_elements = array_size; - tempvar array_ptr = array_start_ptr; - tempvar write_ptr = output_ptr; - // Enter copying loop - rescope{remaining_elements = remaining_elements, array_ptr = array_ptr, write_ptr = write_ptr}; - jump CopyOutputArray if remaining_elements != 0; - jump EndOutputCopy; - - // Main Loop - CopyOutputArray: - #{steps = 0;} - // Write array value into output segment - tempvar val = *(array_ptr++); - assert val = *(write_ptr++); - const one = 1; - // Create loop variables - tempvar new_remaining_elements = remaining_elements - one; - tempvar new_array_ptr = array_ptr; - tempvar new_write_ptr = write_ptr; - // Continue the loop - rescope{remaining_elements = new_remaining_elements, array_ptr = new_array_ptr, write_ptr = new_write_ptr}; - jump CopyOutputArray if remaining_elements != 0; - - EndOutputCopy: - }; - if !actual_args_size.is_zero() { - // Serialize the input values into the output segment - // We lost the output_ptr var after re-scoping, so we need to create it again - // The last instruction will write the last output ptr so we can find it in [ap - 1] - let output_ptr = ctx.add_var(CellExpression::Deref(deref!([ap - 1]))); - // len(builtins - output) + len(builtins) + if segment_arena: segment_arena_ptr + info_ptr + 0 + (segment_arena_ptr + 3) + (gas_builtin) - let offset = (2 * builtins.len() - 1 - + 4 * got_segment_arena as usize - + got_gas_builtin as usize) as i16; - let array_start_ptr = ctx.add_var(CellExpression::Deref(deref!([fp + offset]))); - let array_end_ptr = ctx.add_var(CellExpression::Deref(deref!([fp + offset + 1]))); - casm_build_extend! {ctx, - // Calculate size of array and write it into the output segment - tempvar array_size = array_end_ptr - array_start_ptr; - assert array_size = *(output_ptr++); - // Create loop variables - tempvar remaining_elements = array_size; - tempvar array_ptr = array_start_ptr; - tempvar write_ptr = output_ptr; - // Enter copying loop - rescope{remaining_elements = remaining_elements, array_ptr = array_ptr, write_ptr = write_ptr}; - jump CopyInputArray if remaining_elements != 0; - jump EndInputCopy; - - // Main Loop - CopyInputArray: - #{steps = 0;} - // Write array value into output segment - tempvar val = *(array_ptr++); - assert val = *(write_ptr++); - const one = 1; - // Create loop variables - tempvar new_remaining_elements = remaining_elements - one; - tempvar new_array_ptr = array_ptr; - tempvar new_write_ptr = write_ptr; - // Continue the loop - rescope{remaining_elements = new_remaining_elements, array_ptr = new_array_ptr, write_ptr = new_write_ptr}; - jump CopyInputArray if remaining_elements != 0; - - EndInputCopy: - }; - } - // After we are done writing into the output segment, we can write the final output_ptr into locals: - // The last instruction will write the final output ptr so we can find it in [ap - 1] - let output_ptr = ctx.add_var(CellExpression::Deref(deref!([ap - 1]))); - let local = ctx.add_var(CellExpression::Deref(deref!([fp]))); - casm_build_extend!(ctx, assert local = output_ptr;); - - if got_segment_arena { - // We re-scoped when serializing the output so we have to create a var for the segment arena - // len(builtins) + len(builtins - output) + segment_arena_ptr + info_segment + 0 - let off = 2 * builtins.len() + 2; - let segment_arena_ptr = ctx.add_var(CellExpression::Deref(deref!([fp + off as i16]))); - // Call the hint that will relocate all dictionaries - ctx.add_hint( - |[ignored_in], [ignored_out]| StarknetHint::Cheatcode { - selector: BigIntAsHex { - value: BigInt::from_bytes_be( - Sign::Plus, - "RelocateAllDictionaries".as_bytes(), - ), - }, - input_start: ignored_in.clone(), - input_end: ignored_in, - output_start: ignored_out, - output_end: ignored_out, - }, - [segment_arena_ptr], - [segment_arena_ptr], - ); - // Validating the segment arena's segments are one after the other. - casm_build_extend! {ctx, - tempvar n_segments = segment_arena_ptr[-2]; - tempvar n_finalized = segment_arena_ptr[-1]; - assert n_segments = n_finalized; - jump STILL_LEFT_PRE if n_segments != 0; - rescope{}; - jump DONE_VALIDATION; - STILL_LEFT_PRE: - const one = 1; - tempvar infos = segment_arena_ptr[-3]; - tempvar remaining_segments = n_segments - one; - rescope{infos = infos, remaining_segments = remaining_segments}; - LOOP_START: - jump STILL_LEFT_LOOP if remaining_segments != 0; - rescope{}; - jump DONE_VALIDATION; - STILL_LEFT_LOOP: - const one = 1; - const three = 3; - tempvar prev_end = infos[1]; - tempvar curr_start = infos[3]; - assert curr_start = prev_end + one; - tempvar next_infos = infos + three; - tempvar next_remaining_segments = remaining_segments - one; - rescope{infos = next_infos, remaining_segments = next_remaining_segments}; - #{ steps = 0; } - jump LOOP_START; - DONE_VALIDATION: - }; - } - // Copying the final builtins from locals into the top of the stack. - for i in 0..builtins.len().to_i16().unwrap() { - let local = ctx.add_var(CellExpression::Deref(deref!([fp + i]))); - casm_build_extend!(ctx, tempvar _r = local;); - } - } else { - // Writing the final builtins into the top of the stack. - for builtin in &builtins { - let var = get_var(builtin); - casm_build_extend!(ctx, tempvar _r = var;); - } - } - - if config.proof_mode { - casm_build_extend! {ctx, - INFINITE_LOOP: - // To enable the merge of the branches. - #{ steps = 0; } - jump INFINITE_LOOP; - }; - } else { - casm_build_extend!(ctx, ret;); - } - let result = ctx.build(["FUNCTION"]); - let [call_inst] = result.branches[0].1.as_slice() else { - panic!("Expected a single relocation"); - }; - let mut instructions = result.instructions; - let instruction_sizes = instructions.iter().map(|inst| inst.body.op_size()); - let prev_call_size: usize = instruction_sizes.clone().take(*call_inst).sum(); - let post_call_size: usize = instruction_sizes.skip(*call_inst).sum(); - let InstructionBody::Call(inst) = &mut instructions[*call_inst].body else { - panic!("Expected call instruction"); - }; - inst.target = deref_or_immediate!( - post_call_size - + casm_program.debug_info.sierra_statement_info[func.entry_point.0].start_offset - ); - Ok(( - CasmContext { - instructions, - current_code_offset: prev_call_size + post_call_size, - current_hints: vec![], - }, - builtins, - )) -} - -fn get_info<'a>( - sierra_program_registry: &'a ProgramRegistry, - ty: &'a cairo_lang_sierra::ids::ConcreteTypeId, -) -> Option<&'a cairo_lang_sierra::extensions::types::TypeInfo> { - sierra_program_registry - .get_type(ty) - .ok() - .map(|ctc| ctc.info()) -} - -fn get_function_builtins( - params: &[cairo_lang_sierra::ids::ConcreteTypeId], - append_output: bool, -) -> ( - Vec, - HashMap, -) { - let mut builtins = Vec::new(); - let mut builtin_offset: HashMap = HashMap::new(); - let mut current_offset = 3; - for (debug_name, builtin_name, sierra_id) in [ - ("Poseidon", BuiltinName::poseidon, PoseidonType::ID), - ("EcOp", BuiltinName::ec_op, EcOpType::ID), - ("Bitwise", BuiltinName::bitwise, BitwiseType::ID), - ("RangeCheck", BuiltinName::range_check, RangeCheckType::ID), - ("Pedersen", BuiltinName::pedersen, PedersenType::ID), - ] { - if params - .iter() - .any(|id| id.debug_name.as_deref() == Some(debug_name)) - { - builtins.push(builtin_name); - builtin_offset.insert(sierra_id, current_offset); - current_offset += 1; - } - } - // Force an output builtin so that we can write the program output into it's segment - if append_output { - builtins.push(BuiltinName::output); - } - builtins.reverse(); - (builtins, builtin_offset) -} - -// Checks that the program input (if present) is of type Array -fn check_only_array_felt_input_type( - params: &[ConcreteTypeId], - sierra_program_registry: &ProgramRegistry, -) -> bool { - // Filter implicit arguments (builtins, gas) - let arg_types = params - .iter() - .filter(|ty| { - let info = get_info(sierra_program_registry, ty).unwrap(); - let generic_ty = &info.long_id.generic_id; - !is_implicit_generic_id(generic_ty) - }) - .collect_vec(); - if arg_types.is_empty() { - // No inputs - true - } else if arg_types.len() == 1 { - arg_types[0] - .debug_name - .as_ref() - .is_some_and(|name| name == "Array") - } else { - false - } -} - -// Returns true if the generic id corresponds to an implicit argument (aka a builtin, gas, or system type) -fn is_implicit_generic_id(generic_ty: &GenericTypeId) -> bool { - [ - SegmentArenaType::ID, - GasBuiltinType::ID, - BitwiseType::ID, - EcOpType::ID, - PedersenType::ID, - PoseidonType::ID, - RangeCheckType::ID, - SegmentArenaType::ID, - SystemType::ID, - ] - .contains(generic_ty) -} - -// Checks that the return type is either an Array or a PanicResult> type -fn check_only_array_felt_return_type( - return_type_id: Option<&ConcreteTypeId>, - sierra_program_registry: &ProgramRegistry, -) -> bool { - if return_type_id.is_none() { - return false; - }; - // Unwrap PanicResult (if appicable) - let return_type = - if let Some(return_type) = result_inner_type(return_type_id, sierra_program_registry) { - return_type - } else { - return_type_id.unwrap() - }; - let return_type = sierra_program_registry.get_type(return_type).unwrap(); - // Check that the resulting type is an Array - match return_type { - cairo_lang_sierra::extensions::core::CoreTypeConcrete::Array(info) => { - let inner_ty = sierra_program_registry.get_type(&info.ty).unwrap(); - matches!( - inner_ty, - cairo_lang_sierra::extensions::core::CoreTypeConcrete::Felt252(_) - ) - } - _ => false, - } -} - -fn is_panic_result(return_type_id: Option<&ConcreteTypeId>) -> bool { - return_type_id - .map(|id| { - id.debug_name - .as_ref() - .is_some_and(|name| name.starts_with("core::panics::PanicResult::")) - }) - .unwrap_or_default() -} - -// Returns the T type in PanicResult::Ok(T) if applicable -// Returns None if the return_type_id is not a PanicResult -fn result_inner_type<'a>( - return_type_id: Option<&'a ConcreteTypeId>, - sierra_program_registry: &'a ProgramRegistry, -) -> Option<&'a ConcreteTypeId> { - if is_panic_result(return_type_id) { - let return_type_info = - get_info(sierra_program_registry, return_type_id.as_ref().unwrap()).unwrap(); - // We already know info.long_id.generic_args[0] contains the Panic variant - let inner_args = &return_type_info.long_id.generic_args[1]; - let inner_type = { - let inner_type = match inner_args { - GenericArg::Type(type_id) => type_id, - _ => unreachable!(), - }; - // The inner type contains a single-element tuple so we need to get rid of it too - let inner_type_info = get_info(sierra_program_registry, inner_type).unwrap(); - match &inner_type_info.long_id.generic_args[1] { - GenericArg::Type(type_id) => type_id, - _ => unreachable!(), - } - }; - - Some(inner_type) - } else { - None - } -} - -// Returns the size of the T type in PanicResult::Ok(T) if applicable -// Returns None if the return_type_id is not a PanicResult -fn result_inner_type_size( - return_type_id: Option<&ConcreteTypeId>, - sierra_program_registry: &ProgramRegistry, - type_sizes: &UnorderedHashMap, -) -> Option { - result_inner_type(return_type_id, sierra_program_registry) - .and_then(|ty| type_sizes.get(ty).copied()) -} - -fn fetch_return_values( - return_type_size: i16, - result_inner_type_size: Option, - vm: &VirtualMachine, - builtin_count: i16, - fetch_from_output: bool, -) -> Result, Error> { - if fetch_from_output { - // In this case we will find the serialized return value in the format: - // [*panic_flag, array_len, array[0], array[1],..., array[array_len-1]] - // *: If the return value is a PanicResult - - // Output Builtin will always be on segment 2 - let return_values = - vm.get_continuous_range((2, 0).into(), vm.get_segment_size(2).unwrap())?; - // Remove panic wrapper - let (return_values, panic_flag) = if result_inner_type_size.is_none() { - // return value is not a PanicResult - (&return_values[..], false) - } else { - // return value is a PanicResult - ( - &return_values[1..], - return_values[0] != MaybeRelocatable::from(0), - ) - }; - // Take only the output (as the output segment will also contain the input) - let output_len = return_values[0].get_int().unwrap().to_usize().unwrap() + 1; - let return_values = &return_values[0..output_len]; - // Return Ok or Err based on panic_flag - if panic_flag { - return Err(Error::RunPanic( - return_values - .iter() - .map(|mr| mr.get_int().unwrap_or_default()) - .collect_vec(), - )); - } else { - return Ok(return_values.to_vec()); - } - } - - let mut return_values = vm.get_continuous_range( - (vm.get_ap() - (return_type_size + builtin_count) as usize).unwrap(), - return_type_size as usize, - )?; - // Handle PanicResult (we already checked if the type is a PanicResult when fetching the inner type size) - if let Some(inner_type_size) = result_inner_type_size { - // Check the failure flag (aka first return value) - if return_values.first() != Some(&MaybeRelocatable::from(0)) { - // In case of failure, extract the error from the return values (aka last two values) - let panic_data_end = return_values - .last() - .ok_or(Error::FailedToExtractReturnValues)? - .get_relocatable() - .ok_or(Error::FailedToExtractReturnValues)?; - let panic_data_start = return_values - .get(return_values.len() - 2) - .ok_or(Error::FailedToExtractReturnValues)? - .get_relocatable() - .ok_or(Error::FailedToExtractReturnValues)?; - let panic_data = vm.get_integer_range( - panic_data_start, - (panic_data_end - panic_data_start).map_err(VirtualMachineError::Math)?, - )?; - return Err(Error::RunPanic( - panic_data.iter().map(|c| *c.as_ref()).collect(), - )); - } else { - if return_values.len() < inner_type_size as usize { - return Err(Error::FailedToExtractReturnValues); - } - return_values = - return_values[((return_type_size - inner_type_size).into_or_panic())..].to_vec() - } - } - Ok(return_values) -} - -// Calculates builtins' final_stack setting each stop_ptr -// Calling this function is a must if either air_public_input or cairo_pie are needed -fn finalize_builtins( - main_ret_types: &[ConcreteTypeId], - type_sizes: &UnorderedHashMap, - vm: &mut VirtualMachine, - builtin_count: i16, -) -> Result<(), Error> { - // Set stop pointers for builtins so we can obtain the air public input - // Cairo 1 programs have other return values aside from the used builtin's final pointers, so we need to hand-pick them - let ret_types_sizes = main_ret_types - .iter() - .map(|id| type_sizes.get(id).cloned().unwrap_or_default()); - let ret_types_and_sizes = main_ret_types.iter().zip(ret_types_sizes.clone()); - - let full_ret_types_size: i16 = ret_types_sizes.sum(); - let mut stack_pointer = (vm.get_ap() - - (full_ret_types_size as usize + builtin_count as usize).saturating_sub(1)) - .map_err(VirtualMachineError::Math)?; - - // Calculate the stack_ptr for each return builtin in the return values - let mut builtin_name_to_stack_pointer = HashMap::new(); - for (id, size) in ret_types_and_sizes { - if let Some(ref name) = id.debug_name { - let builtin_name = match name.as_str() { - "RangeCheck" => BuiltinName::range_check, - "Poseidon" => BuiltinName::poseidon, - "EcOp" => BuiltinName::ec_op, - "Bitwise" => BuiltinName::bitwise, - "Pedersen" => BuiltinName::pedersen, - "Output" => BuiltinName::output, - "Ecdsa" => BuiltinName::ecdsa, - _ => { - stack_pointer.offset += size as usize; - continue; - } - }; - builtin_name_to_stack_pointer.insert(builtin_name, stack_pointer); - } - stack_pointer.offset += size as usize; - } - - // Set stop pointer for each builtin - vm.builtins_final_stack_from_stack_pointer_dict(&builtin_name_to_stack_pointer, false)?; - Ok(()) -} \ No newline at end of file +use cairo_io_serde::{ + cairo_output::{process_output, serialize_output}, + schema::Schema, + FuncArg, +}; +use cairo_lang_casm::{ + builder::{CasmBuilder, Var}, + casm, casm_build_extend, + cell_expression::CellExpression, + deref, deref_or_immediate, + hints::{Hint, StarknetHint}, + inline::CasmContext, + instructions::{Instruction, InstructionBody}, +}; +use cairo_lang_sierra::{ + extensions::{ + bitwise::BitwiseType, + core::{CoreLibfunc, CoreType}, + ec::EcOpType, + gas::GasBuiltinType, + pedersen::PedersenType, + poseidon::PoseidonType, + range_check::RangeCheckType, + segment_arena::SegmentArenaType, + starknet::syscalls::SystemType, + ConcreteType, NamedType, + }, + ids::{ConcreteTypeId, GenericTypeId}, + program::{Function, GenericArg, Program as SierraProgram}, + program_registry::ProgramRegistry, +}; +use cairo_lang_sierra_to_casm::{ + compiler::{CairoProgram, SierraToCasmConfig}, + metadata::calc_metadata_ap_change_only, +}; +use cairo_lang_sierra_type_size::get_type_size_map; +use cairo_lang_utils::{ + bigint::BigIntAsHex, casts::IntoOrPanic, unordered_hash_map::UnorderedHashMap, +}; +use cairo_proto_serde::configuration::Configuration; +use cairo_vm::{ + hint_processor::cairo_1_hint_processor::hint_processor::Cairo1HintProcessor, + serde::deserialize_program::{ApTracking, FlowTrackingData, HintParams, ReferenceManager}, + types::{ + builtin_name::BuiltinName, layout_name::LayoutName, program::Program, + relocatable::MaybeRelocatable, + }, + vm::{ + errors::{runner_errors::RunnerError, vm_errors::VirtualMachineError}, + runners::cairo_runner::{CairoRunner, RunResources, RunnerMode}, + vm_core::VirtualMachine, + }, + Felt252, +}; +use itertools::{chain, Itertools}; +use num_bigint::{BigInt, Sign}; +use num_traits::{cast::ToPrimitive, Zero}; +use std::collections::HashMap; + +use crate::{rpc_hint_processor::Rpc1HintProcessor, Error}; +use cairo_vm::types::layout::CairoLayoutParams; +/// Configuration parameters for a cairo run +#[derive(Debug)] +pub struct Cairo1RunConfig<'a> { + /// Input arguments for the `main` function in the cairo progran + pub args: &'a [FuncArg], + /// Serialize program output into a user-friendly format + pub serialize_output: bool, + /// Compute cairo trace during execution + pub trace_enabled: bool, + /// Relocate cairo memory at the end of the run + pub relocate_mem: bool, + /// Cairo layout chosen for the run + pub layout: LayoutName, + /// Run in proof_mode + pub proof_mode: bool, + /// Should be true if either air_public_input or cairo_pie_output are needed + /// Sets builtins stop_ptr by calling `final_stack` on each builtin + pub finalize_builtins: bool, + /// Appends the return and input values to the output segment. This is performed by default when running in proof_mode + pub append_return_values: bool, +} + +impl Default for Cairo1RunConfig<'_> { + fn default() -> Self { + Self { + args: Default::default(), + serialize_output: false, + trace_enabled: false, + relocate_mem: false, + layout: LayoutName::all_cairo, + proof_mode: false, + finalize_builtins: false, + append_return_values: false, + } + } +} + +impl Cairo1RunConfig<'_> { + // Returns true if the flags in the config enable adding the output builtin and + // copying input and output values into it's segment + fn copy_to_output(&self) -> bool { + self.append_return_values || self.proof_mode + } +} + +// Runs a Cairo 1 program +// Returns the runner & VM after execution + the return values +pub fn cairo_run_program( + sierra_program: &SierraProgram, + cairo_run_config: Cairo1RunConfig, + configuration: &Configuration, + entry_func_name: &str, + schema: &Schema, +) -> Result<(CairoRunner, Vec, Option), Error> { + let metadata = calc_metadata_ap_change_only(sierra_program) + .map_err(|_| VirtualMachineError::Unexpected)?; + let sierra_program_registry = ProgramRegistry::::new(sierra_program)?; + let type_sizes = + get_type_size_map(sierra_program, &sierra_program_registry).unwrap_or_default(); + let config = SierraToCasmConfig { + gas_usage_check: false, + max_bytecode_size: usize::MAX, + }; + let casm_program = + cairo_lang_sierra_to_casm::compiler::compile(sierra_program, &metadata, config)?; + + let main_func = find_function(sierra_program, entry_func_name)?; + + let initial_gas = 9999999999999_usize; + + // Fetch return type data + let return_type_id = match main_func.signature.ret_types.last() { + // We need to check if the last return type is indeed the function's return value and not an implicit return value + return_type @ Some(concrete_ty) + if get_info(&sierra_program_registry, concrete_ty) + .is_some_and(|info| !is_implicit_generic_id(&info.long_id.generic_id)) => + { + return_type + } + _ => None, + }; + + if cairo_run_config.copy_to_output() + && !check_only_array_felt_input_type( + &main_func.signature.param_types, + &sierra_program_registry, + ) + { + return Err(Error::IlegalInputValue); + }; + if cairo_run_config.copy_to_output() + && !check_only_array_felt_return_type(return_type_id, &sierra_program_registry) + { + return Err(Error::IlegalReturnValue); + }; + + // Modified entry code to be compatible with custom cairo1 Proof Mode. + // This adds code that's needed for dictionaries, adjusts ap for builtin pointers, adds initial gas for the gas builtin if needed, and sets up other necessary code for cairo1 + let (entry_code, builtins) = create_entry_code( + &sierra_program_registry, + &casm_program, + &type_sizes, + main_func, + &cairo_run_config, + )?; + + // Fetch return type data + let return_type_size = return_type_id + .and_then(|id| type_sizes.get(id).cloned()) + .unwrap_or_default(); + + // This footer is used by lib funcs + let libfunc_footer = create_code_footer(); + let builtin_count: i16 = builtins.len().into_or_panic(); + + // This is the program we are actually running/proving + // With (embedded proof mode), cairo1 header and the libfunc footer + let instructions = chain!( + entry_code.instructions.iter(), + casm_program.instructions.iter(), + libfunc_footer.iter(), + ); + + let (processor_hints, program_hints) = build_hints_vec(instructions.clone()); + + let hint_processor = Cairo1HintProcessor::new( + &processor_hints, + RunResources::default(), + cairo_run_config.copy_to_output(), + ); + let mut hint_processor = Rpc1HintProcessor::new(hint_processor, configuration)?; + + let data: Vec = instructions + .flat_map(|inst| inst.assemble().encode()) + .map(|x| Felt252::from(&x)) + .map(MaybeRelocatable::from) + .collect(); + + let program = if cairo_run_config.proof_mode { + Program::new_for_proof( + builtins.clone(), + data, + 0, + // Proof mode is on top + // `jmp rel 0` is the last line of the entry code. + entry_code.current_code_offset - 2, + program_hints, + ReferenceManager { + references: Vec::new(), + }, + HashMap::new(), + vec![], + None, + )? + } else { + Program::new( + builtins.clone(), + data, + Some(0), + program_hints, + ReferenceManager { + references: Vec::new(), + }, + HashMap::new(), + vec![], + None, + )? + }; + + let runner_mode = if cairo_run_config.proof_mode { + RunnerMode::ProofModeCairo1 + } else { + RunnerMode::ExecutionMode + }; + + let mut runner = CairoRunner::new_v2( + &program, + cairo_run_config.layout, + Some(CairoLayoutParams::default()), + runner_mode, + cairo_run_config.relocate_mem, + cairo_run_config.proof_mode, + )?; + let end = runner.initialize(cairo_run_config.proof_mode)?; + load_arguments(&mut runner, &cairo_run_config, main_func, initial_gas)?; + + // Run it until the end / infinite loop in proof_mode + runner.run_until_pc(end, &mut hint_processor)?; + if cairo_run_config.proof_mode { + runner.run_for_steps(1, &mut hint_processor)?; + } + + runner.end_run(false, false, &mut hint_processor)?; + + let result_inner_type_size = + result_inner_type_size(return_type_id, &sierra_program_registry, &type_sizes); + // Fetch return values + let return_values = fetch_return_values( + return_type_size, + result_inner_type_size, + &runner.vm, + builtin_count, + cairo_run_config.copy_to_output(), + )?; + + let serialized_output = if cairo_run_config.serialize_output { + if cairo_run_config.copy_to_output() { + // The return value is already serialized, so we can just print the array values + let mut output_felts: Vec = vec![]; + // Skip array_len + for elem in return_values[1..].iter() { + match elem { + MaybeRelocatable::RelocatableValue(_relocatable) => { + panic!("Element should not be relocatable") + } + MaybeRelocatable::Int(felt) => { + output_felts.push(*felt); + } + } + } + Some(process_output(output_felts, schema).expect("Process output failed")) + } else { + let serialized = serialize_output( + &return_values, + &mut runner.vm, + return_type_id, + &sierra_program_registry, + &type_sizes, + ); + + Some(process_output(serialized, schema).expect("Process output failed")) + } + } else { + None + }; + + // Set stop pointers for builtins so we can obtain the air public input + if cairo_run_config.finalize_builtins { + if cairo_run_config.copy_to_output() { + // Set stop pointer for each builtin + runner.vm.builtins_final_stack_from_stack_pointer_dict( + &builtins + .iter() + .enumerate() + .map(|(i, builtin)| { + ( + *builtin, + (runner.vm.get_ap() - (builtins.len() - 1 - i)).unwrap(), + ) + }) + .collect(), + false, + )?; + } else { + finalize_builtins( + &main_func.signature.ret_types, + &type_sizes, + &mut runner.vm, + builtin_count, + )?; + } + + // Build execution public memory + if cairo_run_config.proof_mode { + runner.finalize_segments()?; + } + } + + runner.relocate(true)?; + + Ok((runner, return_values, serialized_output)) +} + +#[allow(clippy::type_complexity)] +fn build_hints_vec<'b>( + instructions: impl Iterator, +) -> (Vec<(usize, Vec)>, HashMap>) { + let mut hints: Vec<(usize, Vec)> = Vec::new(); + let mut program_hints: HashMap> = HashMap::new(); + + let mut hint_offset = 0; + + for instruction in instructions { + if !instruction.hints.is_empty() { + hints.push((hint_offset, instruction.hints.clone())); + program_hints.insert( + hint_offset, + vec![HintParams { + code: hint_offset.to_string(), + accessible_scopes: Vec::new(), + flow_tracking_data: FlowTrackingData { + ap_tracking: ApTracking::default(), + reference_ids: HashMap::new(), + }, + }], + ); + } + hint_offset += instruction.body.op_size(); + } + (hints, program_hints) +} + +/// Finds first function ending with `name_suffix`. +fn find_function<'a>( + sierra_program: &'a SierraProgram, + name_suffix: &'a str, +) -> Result<&'a Function, RunnerError> { + sierra_program + .funcs + .iter() + .find(|f| { + if let Some(name) = &f.id.debug_name { + name.ends_with(name_suffix) + } else { + false + } + }) + .ok_or_else(|| RunnerError::MissingMain) +} + +/// Creates a list of instructions that will be appended to the program's bytecode. +fn create_code_footer() -> Vec { + casm! { + // Add a `ret` instruction used in libfuncs that retrieve the current value of the `fp` + // and `pc` registers. + ret; + } + .instructions +} + +// Loads the input arguments into the execution segment, leaving the necessary gaps for the values that will be written by +// the instructions in the entry_code (produced by `create_entry_code`). Also loads the initial gas if the GasBuiltin is present + +/* Example of execution segment before running the main function: +Before calling this function (after runner.initialize): +[ + (*1) output_builtin_base + builtin_base_0 + builtin_base_1 + return_fp + return_pc +] +After calling this function (before running the VM): +[ + (*1) output_builtin_base + builtin_base_0 + builtin_base_1 + return_fp + return_pc + (*1+2+3) gap + (*1+2) gap + (*1+2) gap + (*2) gap + (*2) gap + (*2) gap + gap + gap + (*2) gap + (*3) arg_0 + (*3) arg_1 +] + +After the entry_code (up until calling main) has been ran by the VM: +[ + (*1) output_builtin_base + builtin_base_0 + builtin_base_1 + return_fp + return_pc + (*1) gap (for output_builtin final ptr) + (*1) gap (for builtin_0 final ptr) + (*1) gap (for builtin_1 final ptr) + (*2) segment_arena_ptr + (*2) infos_ptr + (*2) 0 + builtin_base_0 + builtin_base_1 + (*2) segment_arena_ptr + 3 (segment_arena base) + (*4) initial_gas + (*3) arg_0 + (*3) arg_1 +] +(*1) if output builtin is added (if either proof_mode or append_return_values is enabled) +(*2) if segment arena is present +(*3) if args are used +(*4) if gas builtin is present +*/ +fn load_arguments( + runner: &mut CairoRunner, + cairo_run_config: &Cairo1RunConfig, + main_func: &Function, + initial_gas: usize, +) -> Result<(), Error> { + let got_gas_builtin = main_func + .signature + .param_types + .iter() + .any(|ty| ty.debug_name.as_ref().is_some_and(|n| n == "GasBuiltin")); + if cairo_run_config.args.is_empty() && !got_gas_builtin { + // Nothing to be done + return Ok(()); + } + let got_segment_arena = main_func + .signature + .param_types + .iter() + .any(|ty| ty.debug_name.as_ref().is_some_and(|n| n == "SegmentArena")); + // This AP correction represents the memory slots taken up by the values created by `create_entry_code`: + // These include: + // * The builtin bases (not including output) + // * (Only if the output builtin is added) A gap for each builtin's final pointer + // * The segment arena values (if present), including: + // * segment_arena_ptr + // * info_segment_ptr + // * 0 + // * segment_arena_ptr + 3 + let mut ap_offset = runner.get_program().builtins_len(); + if cairo_run_config.copy_to_output() { + ap_offset += runner.get_program().builtins_len() - 1; + } + if got_segment_arena { + ap_offset += 4; + } + // Load initial gas if GasBuiltin is present + if got_gas_builtin { + runner.vm.insert_value( + (runner.vm.get_ap() + ap_offset).map_err(VirtualMachineError::Math)?, + Felt252::from(initial_gas), + )?; + ap_offset += 1; + } + for arg in cairo_run_config.args { + match arg { + FuncArg::Array(args) => { + let array_start = runner.vm.add_memory_segment(); + let array_end = runner.vm.load_data( + array_start, + &args.iter().map(|f| f.into()).collect::>(), + )?; + runner.vm.insert_value( + (runner.vm.get_ap() + ap_offset).map_err(VirtualMachineError::Math)?, + array_start, + )?; + ap_offset += 1; + runner.vm.insert_value( + (runner.vm.get_ap() + ap_offset).map_err(VirtualMachineError::Math)?, + array_end, + )?; + ap_offset += 1; + } + FuncArg::Single(arg) => { + runner.vm.insert_value( + (runner.vm.get_ap() + ap_offset).map_err(VirtualMachineError::Math)?, + arg, + )?; + ap_offset += 1; + } + } + } + + Ok(()) +} + +/// Returns the instructions to add to the beginning of the code to successfully call the main +/// function, as well as the builtins required to execute the program. +fn create_entry_code( + sierra_program_registry: &ProgramRegistry, + casm_program: &CairoProgram, + type_sizes: &UnorderedHashMap, + func: &Function, + config: &Cairo1RunConfig, +) -> Result<(CasmContext, Vec), Error> { + let copy_to_output_builtin = config.copy_to_output(); + let signature = &func.signature; + let got_segment_arena = signature.param_types.iter().any(|ty| { + get_info(sierra_program_registry, ty) + .map(|x| x.long_id.generic_id == SegmentArenaType::ID) + .unwrap_or_default() + }); + let got_gas_builtin = signature.param_types.iter().any(|ty| { + get_info(sierra_program_registry, ty) + .map(|x| x.long_id.generic_id == GasBuiltinType::ID) + .unwrap_or_default() + }); + // The builtins in the formatting expected by the runner. + let (builtins, builtin_offset) = + get_function_builtins(&signature.param_types, copy_to_output_builtin); + let mut ctx = CasmBuilder::default(); + // Getting a variable pointing to the location of each builtin. + let mut builtin_vars = + HashMap::::from_iter(builtin_offset.iter().map(|(id, offset)| { + ( + id.clone(), + ctx.add_var(CellExpression::Deref(deref!([fp - offset]))), + ) + })); + // Getting a variable for the location output builtin if required. + let output_ptr = copy_to_output_builtin.then(|| { + let offset: i16 = 2 + builtins.len().into_or_panic::(); + ctx.add_var(CellExpression::Deref(deref!([fp - offset]))) + }); + if copy_to_output_builtin { + // Leave a gap to write the builtin final pointers + // We write them on a fixed cells relative to the starting FP pointer so we don't lose them after serializing outputs + for _ in 0..builtins.len() { + casm_build_extend!(ctx, tempvar _local;); + } + casm_build_extend!(ctx, ap += builtins.len();); + } + let mut expected_arguments_size = 0; + if got_segment_arena { + // Allocating the segment arena and initializing it. + casm_build_extend! {ctx, + tempvar segment_arena; + tempvar infos; + hint AllocSegment {} into {dst: segment_arena}; + hint AllocSegment {} into {dst: infos}; + const czero = 0; + tempvar zero = czero; + // Write Infos segment, n_constructed (0), and n_destructed (0) to the segment. + assert infos = *(segment_arena++); + assert zero = *(segment_arena++); + assert zero = *(segment_arena++); + } + // Adding the segment arena to the builtins var map. + builtin_vars.insert(SegmentArenaType::ID, segment_arena); + }; + + for ty in &signature.param_types { + let info = get_info(sierra_program_registry, ty) + .ok_or_else(|| Error::NoInfoForType(ty.clone()))?; + let generic_ty = &info.long_id.generic_id; + if let Some(var) = builtin_vars.get(generic_ty).cloned() { + casm_build_extend!(ctx, tempvar _builtin = var;); + } else if generic_ty == &SystemType::ID { + casm_build_extend! {ctx, + tempvar system; + hint AllocSegment {} into {dst: system}; + ap += 1; + }; + } else if generic_ty == &GasBuiltinType::ID { + // We already loaded the inital gas so we just advance AP + casm_build_extend! {ctx, + ap += 1; + }; + } else { + let ty_size = type_sizes[ty]; + // We already loaded these arguments, so we just advance AP + casm_build_extend!(ctx, + ap+=ty_size as usize; + ); + expected_arguments_size += ty_size; + } + } + let actual_args_size = config + .args + .iter() + .map(|arg| match arg { + FuncArg::Single(_) => 1, + FuncArg::Array(_) => 2, + }) + .sum::(); + if expected_arguments_size != actual_args_size { + return Err(Error::ArgumentsSizeMismatch { + expected: expected_arguments_size, + actual: actual_args_size, + }); + } + + casm_build_extend!(ctx, let () = call FUNCTION;); + + let return_type_id = signature.ret_types.last(); + let return_type_size = return_type_id + .and_then(|id| type_sizes.get(id).cloned()) + .unwrap_or_default(); + let mut offset: i16 = 0; + for ty in signature.ret_types.iter().rev() { + let info = get_info(sierra_program_registry, ty) + .ok_or_else(|| Error::NoInfoForType(ty.clone()))?; + offset += type_sizes[ty]; + let generic_ty = &info.long_id.generic_id; + let Some(var) = builtin_vars.get_mut(generic_ty) else { + continue; + }; + *var = ctx.add_var(CellExpression::Deref(deref!([ap - offset]))); + } + + // Helper to get a variable for a given builtin. + // Fails for builtins that will never be present. + let get_var = |name: &BuiltinName| match name { + BuiltinName::range_check => builtin_vars[&RangeCheckType::ID], + BuiltinName::pedersen => builtin_vars[&PedersenType::ID], + BuiltinName::bitwise => builtin_vars[&BitwiseType::ID], + BuiltinName::ec_op => builtin_vars[&EcOpType::ID], + BuiltinName::poseidon => builtin_vars[&PoseidonType::ID], + BuiltinName::segment_arena => builtin_vars[&SegmentArenaType::ID], + _ => unreachable!(), + }; + if copy_to_output_builtin { + // Copying the final builtins into a local variables. + for (i, builtin) in builtins.iter().enumerate() { + // Skip output_ptr as we still haven't written into it and this will lead to the wrong size being written + if matches!(builtin, BuiltinName::output) { + continue; + } + let var = get_var(builtin); + let local = ctx.add_var(CellExpression::Deref(deref!([fp + i.to_i16().unwrap()]))); + casm_build_extend!(ctx, assert local = var;); + } + // Serialize return values into output segment + let output_ptr = output_ptr.unwrap(); + let outputs = (1..(return_type_size + 1)) + .rev() + .map(|i| ctx.add_var(CellExpression::Deref(deref!([ap - i])))) + .collect_vec(); + let (array_start_ptr, array_end_ptr) = if is_panic_result(signature.ret_types.last()) { + // Write panic flag value + let panic_flag = outputs[0]; + casm_build_extend! {ctx, + assert panic_flag = *(output_ptr++); + }; + // If the run did panic, these will point to the panic data + (outputs[1], outputs[2]) + } else { + (outputs[0], outputs[1]) + }; + casm_build_extend! {ctx, + // Calculate size of array and write it into the output segment + tempvar array_size = array_end_ptr - array_start_ptr; + assert array_size = *(output_ptr++); + // Create loop variables + tempvar remaining_elements = array_size; + tempvar array_ptr = array_start_ptr; + tempvar write_ptr = output_ptr; + // Enter copying loop + rescope{remaining_elements = remaining_elements, array_ptr = array_ptr, write_ptr = write_ptr}; + jump CopyOutputArray if remaining_elements != 0; + jump EndOutputCopy; + + // Main Loop + CopyOutputArray: + #{steps = 0;} + // Write array value into output segment + tempvar val = *(array_ptr++); + assert val = *(write_ptr++); + const one = 1; + // Create loop variables + tempvar new_remaining_elements = remaining_elements - one; + tempvar new_array_ptr = array_ptr; + tempvar new_write_ptr = write_ptr; + // Continue the loop + rescope{remaining_elements = new_remaining_elements, array_ptr = new_array_ptr, write_ptr = new_write_ptr}; + jump CopyOutputArray if remaining_elements != 0; + + EndOutputCopy: + }; + if !actual_args_size.is_zero() { + // Serialize the input values into the output segment + // We lost the output_ptr var after re-scoping, so we need to create it again + // The last instruction will write the last output ptr so we can find it in [ap - 1] + let output_ptr = ctx.add_var(CellExpression::Deref(deref!([ap - 1]))); + // len(builtins - output) + len(builtins) + if segment_arena: segment_arena_ptr + info_ptr + 0 + (segment_arena_ptr + 3) + (gas_builtin) + let offset = (2 * builtins.len() - 1 + + 4 * got_segment_arena as usize + + got_gas_builtin as usize) as i16; + let array_start_ptr = ctx.add_var(CellExpression::Deref(deref!([fp + offset]))); + let array_end_ptr = ctx.add_var(CellExpression::Deref(deref!([fp + offset + 1]))); + casm_build_extend! {ctx, + // Calculate size of array and write it into the output segment + tempvar array_size = array_end_ptr - array_start_ptr; + assert array_size = *(output_ptr++); + // Create loop variables + tempvar remaining_elements = array_size; + tempvar array_ptr = array_start_ptr; + tempvar write_ptr = output_ptr; + // Enter copying loop + rescope{remaining_elements = remaining_elements, array_ptr = array_ptr, write_ptr = write_ptr}; + jump CopyInputArray if remaining_elements != 0; + jump EndInputCopy; + + // Main Loop + CopyInputArray: + #{steps = 0;} + // Write array value into output segment + tempvar val = *(array_ptr++); + assert val = *(write_ptr++); + const one = 1; + // Create loop variables + tempvar new_remaining_elements = remaining_elements - one; + tempvar new_array_ptr = array_ptr; + tempvar new_write_ptr = write_ptr; + // Continue the loop + rescope{remaining_elements = new_remaining_elements, array_ptr = new_array_ptr, write_ptr = new_write_ptr}; + jump CopyInputArray if remaining_elements != 0; + + EndInputCopy: + }; + } + // After we are done writing into the output segment, we can write the final output_ptr into locals: + // The last instruction will write the final output ptr so we can find it in [ap - 1] + let output_ptr = ctx.add_var(CellExpression::Deref(deref!([ap - 1]))); + let local = ctx.add_var(CellExpression::Deref(deref!([fp]))); + casm_build_extend!(ctx, assert local = output_ptr;); + + if got_segment_arena { + // We re-scoped when serializing the output so we have to create a var for the segment arena + // len(builtins) + len(builtins - output) + segment_arena_ptr + info_segment + 0 + let off = 2 * builtins.len() + 2; + let segment_arena_ptr = ctx.add_var(CellExpression::Deref(deref!([fp + off as i16]))); + // Call the hint that will relocate all dictionaries + ctx.add_hint( + |[ignored_in], [ignored_out]| StarknetHint::Cheatcode { + selector: BigIntAsHex { + value: BigInt::from_bytes_be( + Sign::Plus, + "RelocateAllDictionaries".as_bytes(), + ), + }, + input_start: ignored_in.clone(), + input_end: ignored_in, + output_start: ignored_out, + output_end: ignored_out, + }, + [segment_arena_ptr], + [segment_arena_ptr], + ); + // Validating the segment arena's segments are one after the other. + casm_build_extend! {ctx, + tempvar n_segments = segment_arena_ptr[-2]; + tempvar n_finalized = segment_arena_ptr[-1]; + assert n_segments = n_finalized; + jump STILL_LEFT_PRE if n_segments != 0; + rescope{}; + jump DONE_VALIDATION; + STILL_LEFT_PRE: + const one = 1; + tempvar infos = segment_arena_ptr[-3]; + tempvar remaining_segments = n_segments - one; + rescope{infos = infos, remaining_segments = remaining_segments}; + LOOP_START: + jump STILL_LEFT_LOOP if remaining_segments != 0; + rescope{}; + jump DONE_VALIDATION; + STILL_LEFT_LOOP: + const one = 1; + const three = 3; + tempvar prev_end = infos[1]; + tempvar curr_start = infos[3]; + assert curr_start = prev_end + one; + tempvar next_infos = infos + three; + tempvar next_remaining_segments = remaining_segments - one; + rescope{infos = next_infos, remaining_segments = next_remaining_segments}; + #{ steps = 0; } + jump LOOP_START; + DONE_VALIDATION: + }; + } + // Copying the final builtins from locals into the top of the stack. + for i in 0..builtins.len().to_i16().unwrap() { + let local = ctx.add_var(CellExpression::Deref(deref!([fp + i]))); + casm_build_extend!(ctx, tempvar _r = local;); + } + } else { + // Writing the final builtins into the top of the stack. + for builtin in &builtins { + let var = get_var(builtin); + casm_build_extend!(ctx, tempvar _r = var;); + } + } + + if config.proof_mode { + casm_build_extend! {ctx, + INFINITE_LOOP: + // To enable the merge of the branches. + #{ steps = 0; } + jump INFINITE_LOOP; + }; + } else { + casm_build_extend!(ctx, ret;); + } + let result = ctx.build(["FUNCTION"]); + let [call_inst] = result.branches[0].1.as_slice() else { + panic!("Expected a single relocation"); + }; + let mut instructions = result.instructions; + let instruction_sizes = instructions.iter().map(|inst| inst.body.op_size()); + let prev_call_size: usize = instruction_sizes.clone().take(*call_inst).sum(); + let post_call_size: usize = instruction_sizes.skip(*call_inst).sum(); + let InstructionBody::Call(inst) = &mut instructions[*call_inst].body else { + panic!("Expected call instruction"); + }; + inst.target = deref_or_immediate!( + post_call_size + + casm_program.debug_info.sierra_statement_info[func.entry_point.0].start_offset + ); + Ok(( + CasmContext { + instructions, + current_code_offset: prev_call_size + post_call_size, + current_hints: vec![], + }, + builtins, + )) +} + +fn get_info<'a>( + sierra_program_registry: &'a ProgramRegistry, + ty: &'a cairo_lang_sierra::ids::ConcreteTypeId, +) -> Option<&'a cairo_lang_sierra::extensions::types::TypeInfo> { + sierra_program_registry + .get_type(ty) + .ok() + .map(|ctc| ctc.info()) +} + +fn get_function_builtins( + params: &[cairo_lang_sierra::ids::ConcreteTypeId], + append_output: bool, +) -> ( + Vec, + HashMap, +) { + let mut builtins = Vec::new(); + let mut builtin_offset: HashMap = HashMap::new(); + let mut current_offset = 3; + for (debug_name, builtin_name, sierra_id) in [ + ("Poseidon", BuiltinName::poseidon, PoseidonType::ID), + ("EcOp", BuiltinName::ec_op, EcOpType::ID), + ("Bitwise", BuiltinName::bitwise, BitwiseType::ID), + ("RangeCheck", BuiltinName::range_check, RangeCheckType::ID), + ("Pedersen", BuiltinName::pedersen, PedersenType::ID), + ] { + if params + .iter() + .any(|id| id.debug_name.as_deref() == Some(debug_name)) + { + builtins.push(builtin_name); + builtin_offset.insert(sierra_id, current_offset); + current_offset += 1; + } + } + // Force an output builtin so that we can write the program output into it's segment + if append_output { + builtins.push(BuiltinName::output); + } + builtins.reverse(); + (builtins, builtin_offset) +} + +// Checks that the program input (if present) is of type Array +fn check_only_array_felt_input_type( + params: &[ConcreteTypeId], + sierra_program_registry: &ProgramRegistry, +) -> bool { + // Filter implicit arguments (builtins, gas) + let arg_types = params + .iter() + .filter(|ty| { + let info = get_info(sierra_program_registry, ty).unwrap(); + let generic_ty = &info.long_id.generic_id; + !is_implicit_generic_id(generic_ty) + }) + .collect_vec(); + if arg_types.is_empty() { + // No inputs + true + } else if arg_types.len() == 1 { + arg_types[0] + .debug_name + .as_ref() + .is_some_and(|name| name == "Array") + } else { + false + } +} + +// Returns true if the generic id corresponds to an implicit argument (aka a builtin, gas, or system type) +fn is_implicit_generic_id(generic_ty: &GenericTypeId) -> bool { + [ + SegmentArenaType::ID, + GasBuiltinType::ID, + BitwiseType::ID, + EcOpType::ID, + PedersenType::ID, + PoseidonType::ID, + RangeCheckType::ID, + SegmentArenaType::ID, + SystemType::ID, + ] + .contains(generic_ty) +} + +// Checks that the return type is either an Array or a PanicResult> type +fn check_only_array_felt_return_type( + return_type_id: Option<&ConcreteTypeId>, + sierra_program_registry: &ProgramRegistry, +) -> bool { + if return_type_id.is_none() { + return false; + }; + // Unwrap PanicResult (if appicable) + let return_type = + if let Some(return_type) = result_inner_type(return_type_id, sierra_program_registry) { + return_type + } else { + return_type_id.unwrap() + }; + let return_type = sierra_program_registry.get_type(return_type).unwrap(); + // Check that the resulting type is an Array + match return_type { + cairo_lang_sierra::extensions::core::CoreTypeConcrete::Array(info) => { + let inner_ty = sierra_program_registry.get_type(&info.ty).unwrap(); + matches!( + inner_ty, + cairo_lang_sierra::extensions::core::CoreTypeConcrete::Felt252(_) + ) + } + _ => false, + } +} + +fn is_panic_result(return_type_id: Option<&ConcreteTypeId>) -> bool { + return_type_id + .map(|id| { + id.debug_name + .as_ref() + .is_some_and(|name| name.starts_with("core::panics::PanicResult::")) + }) + .unwrap_or_default() +} + +// Returns the T type in PanicResult::Ok(T) if applicable +// Returns None if the return_type_id is not a PanicResult +fn result_inner_type<'a>( + return_type_id: Option<&'a ConcreteTypeId>, + sierra_program_registry: &'a ProgramRegistry, +) -> Option<&'a ConcreteTypeId> { + if is_panic_result(return_type_id) { + let return_type_info = + get_info(sierra_program_registry, return_type_id.as_ref().unwrap()).unwrap(); + // We already know info.long_id.generic_args[0] contains the Panic variant + let inner_args = &return_type_info.long_id.generic_args[1]; + let inner_type = { + let inner_type = match inner_args { + GenericArg::Type(type_id) => type_id, + _ => unreachable!(), + }; + // The inner type contains a single-element tuple so we need to get rid of it too + let inner_type_info = get_info(sierra_program_registry, inner_type).unwrap(); + match &inner_type_info.long_id.generic_args[1] { + GenericArg::Type(type_id) => type_id, + _ => unreachable!(), + } + }; + + Some(inner_type) + } else { + None + } +} + +// Returns the size of the T type in PanicResult::Ok(T) if applicable +// Returns None if the return_type_id is not a PanicResult +fn result_inner_type_size( + return_type_id: Option<&ConcreteTypeId>, + sierra_program_registry: &ProgramRegistry, + type_sizes: &UnorderedHashMap, +) -> Option { + result_inner_type(return_type_id, sierra_program_registry) + .and_then(|ty| type_sizes.get(ty).copied()) +} + +fn fetch_return_values( + return_type_size: i16, + result_inner_type_size: Option, + vm: &VirtualMachine, + builtin_count: i16, + fetch_from_output: bool, +) -> Result, Error> { + if fetch_from_output { + // In this case we will find the serialized return value in the format: + // [*panic_flag, array_len, array[0], array[1],..., array[array_len-1]] + // *: If the return value is a PanicResult + + // Output Builtin will always be on segment 2 + let return_values = + vm.get_continuous_range((2, 0).into(), vm.get_segment_size(2).unwrap())?; + // Remove panic wrapper + let (return_values, panic_flag) = if result_inner_type_size.is_none() { + // return value is not a PanicResult + (&return_values[..], false) + } else { + // return value is a PanicResult + ( + &return_values[1..], + return_values[0] != MaybeRelocatable::from(0), + ) + }; + // Take only the output (as the output segment will also contain the input) + let output_len = return_values[0].get_int().unwrap().to_usize().unwrap() + 1; + let return_values = &return_values[0..output_len]; + // Return Ok or Err based on panic_flag + if panic_flag { + return Err(Error::RunPanic( + return_values + .iter() + .map(|mr| mr.get_int().unwrap_or_default()) + .collect_vec(), + )); + } else { + return Ok(return_values.to_vec()); + } + } + + let mut return_values = vm.get_continuous_range( + (vm.get_ap() - (return_type_size + builtin_count) as usize).unwrap(), + return_type_size as usize, + )?; + // Handle PanicResult (we already checked if the type is a PanicResult when fetching the inner type size) + if let Some(inner_type_size) = result_inner_type_size { + // Check the failure flag (aka first return value) + if return_values.first() != Some(&MaybeRelocatable::from(0)) { + // In case of failure, extract the error from the return values (aka last two values) + let panic_data_end = return_values + .last() + .ok_or(Error::FailedToExtractReturnValues)? + .get_relocatable() + .ok_or(Error::FailedToExtractReturnValues)?; + let panic_data_start = return_values + .get(return_values.len() - 2) + .ok_or(Error::FailedToExtractReturnValues)? + .get_relocatable() + .ok_or(Error::FailedToExtractReturnValues)?; + let panic_data = vm.get_integer_range( + panic_data_start, + (panic_data_end - panic_data_start).map_err(VirtualMachineError::Math)?, + )?; + return Err(Error::RunPanic( + panic_data.iter().map(|c| *c.as_ref()).collect(), + )); + } else { + if return_values.len() < inner_type_size as usize { + return Err(Error::FailedToExtractReturnValues); + } + return_values = + return_values[((return_type_size - inner_type_size).into_or_panic())..].to_vec() + } + } + Ok(return_values) +} + +// Calculates builtins' final_stack setting each stop_ptr +// Calling this function is a must if either air_public_input or cairo_pie are needed +fn finalize_builtins( + main_ret_types: &[ConcreteTypeId], + type_sizes: &UnorderedHashMap, + vm: &mut VirtualMachine, + builtin_count: i16, +) -> Result<(), Error> { + // Set stop pointers for builtins so we can obtain the air public input + // Cairo 1 programs have other return values aside from the used builtin's final pointers, so we need to hand-pick them + let ret_types_sizes = main_ret_types + .iter() + .map(|id| type_sizes.get(id).cloned().unwrap_or_default()); + let ret_types_and_sizes = main_ret_types.iter().zip(ret_types_sizes.clone()); + + let full_ret_types_size: i16 = ret_types_sizes.sum(); + let mut stack_pointer = (vm.get_ap() + - (full_ret_types_size as usize + builtin_count as usize).saturating_sub(1)) + .map_err(VirtualMachineError::Math)?; + + // Calculate the stack_ptr for each return builtin in the return values + let mut builtin_name_to_stack_pointer = HashMap::new(); + for (id, size) in ret_types_and_sizes { + if let Some(ref name) = id.debug_name { + let builtin_name = match name.as_str() { + "RangeCheck" => BuiltinName::range_check, + "Poseidon" => BuiltinName::poseidon, + "EcOp" => BuiltinName::ec_op, + "Bitwise" => BuiltinName::bitwise, + "Pedersen" => BuiltinName::pedersen, + "Output" => BuiltinName::output, + "Ecdsa" => BuiltinName::ecdsa, + _ => { + stack_pointer.offset += size as usize; + continue; + } + }; + builtin_name_to_stack_pointer.insert(builtin_name, stack_pointer); + } + stack_pointer.offset += size as usize; + } + + // Set stop pointer for each builtin + vm.builtins_final_stack_from_stack_pointer_dict(&builtin_name_to_stack_pointer, false)?; + Ok(()) +} diff --git a/cairo-oracle-hint-processor/src/lib.rs b/cairo-oracle-hint-processor/src/lib.rs index df9fea7..94a3a9a 100644 --- a/cairo-oracle-hint-processor/src/lib.rs +++ b/cairo-oracle-hint-processor/src/lib.rs @@ -134,7 +134,7 @@ pub fn run_1( entry_func_name: &str, proof_mode: bool, finalize_builtins: Option, - append_return_values: Option + append_return_values: Option, ) -> Result<(Option, CairoRunner), Error> { let cairo_run_config = Cairo1RunConfig { proof_mode: proof_mode, @@ -152,7 +152,7 @@ pub fn run_1( cairo_run_config, configuration, entry_func_name, - schema + schema, )?; if let Some(file_path) = air_public_input { @@ -186,13 +186,15 @@ pub fn run_1( } if let Some(ref file_path) = cairo_pie_output { - runner.get_cairo_pie()?.write_zip_file(file_path)? + runner + .get_cairo_pie()? + .write_zip_file(file_path, proof_mode)? } if let Some(trace_path) = trace_file { let relocated_trace = runner .relocated_trace - .as_ref() + .as_ref() .ok_or(Error::Trace(TraceError::TraceNotRelocated))?; let trace_file = std::fs::File::create(trace_path)?; let mut trace_writer = diff --git a/cairo-proto-serde/src/lib.rs b/cairo-proto-serde/src/lib.rs index 7a05c26..d6622b6 100644 --- a/cairo-proto-serde/src/lib.rs +++ b/cairo-proto-serde/src/lib.rs @@ -130,7 +130,7 @@ pub fn serialize_cairo_serde( let value = value .as_object() .expect(format!("must be an object to serialize as message {message_ty}").as_str()); - + for field in message_config { if let Some(field_value) = value.get(&field.name) { result.append(&mut serialize_cairo_serde(config, &field.ty, field_value)); diff --git a/scarb-agent/scarb-agent-new/new_cairo.rs b/scarb-agent/scarb-agent-new/new_cairo.rs index 3f21da0..807d19a 100644 --- a/scarb-agent/scarb-agent-new/new_cairo.rs +++ b/scarb-agent/scarb-agent-new/new_cairo.rs @@ -114,7 +114,7 @@ pub(crate) fn mk_cairo( fsx::write( &filename, indoc! {r#" - scarb 2.7.0 + scarb 2.11.1 "#}, )?; }