diff --git a/.gitmodules b/.gitmodules index 8ce19f6d3e..b7d50bab86 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,4 @@ [submodule "crates/blockifier/cairo_native"] path = crates/blockifier/cairo_native url = https://github.com/lambdaclass/cairo_native + rev = 6a4efafa26d6a0424dee593d2091206c6e9f428d diff --git a/Cargo.lock b/Cargo.lock index ac81f970f2..2a13f8f4ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -585,13 +585,13 @@ checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "aquamarine" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2" dependencies = [ "include_dir", "itertools 0.10.5", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.90", @@ -1495,29 +1495,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.6.0", - "cexpr", - "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.90", - "which", -] - [[package]] name = "bindgen" version = "0.70.1" @@ -1662,7 +1639,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "sierra-emu 0.1.0", + "sierra-emu", "stacker", "starknet-types-core", "starknet_api", @@ -1727,31 +1704,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "bon" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f265cdb2e8501f1c952749e78babe8f1937be92c98120e5f78fc72d634682bad" -dependencies = [ - "bon-macros", - "rustversion", -] - -[[package]] -name = "bon-macros" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38aa5c627cd7706490e5b003d685f8b9d69bc343b1a00b9fdd01e75fdf6827cf" -dependencies = [ - "darling 0.20.10", - "ident_case", - "prettyplease", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.90", -] - [[package]] name = "bs58" version = "0.5.1" @@ -1879,9 +1831,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "cairo-lang-casm" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3929a38c1d586e35e19dbdf7798b146fba3627b308417a6d373fea8939535b6b" +checksum = "31a9a437bd4015a0f888d0de9876fd4786eb24b4e17b25c86c53980865980f9d" dependencies = [ "cairo-lang-utils", "indoc 2.0.5", @@ -1894,9 +1846,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bed098f0c3666b3ad3a93aef6293f91fc1119bef660ce994105f6d1bc2802cf" +checksum = "4608693f366e8e86061c824adaca33b56bf0bd7e1cd5edc8592be7a380950322" dependencies = [ "anyhow", "cairo-lang-defs", @@ -1920,18 +1872,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7763505dcfe15f36899074c27185bf7e3494875f63fd06350c6e3ed8d1f91d5" +checksum = "4217fd373449a74efde259f8a4df501a7664f6f9c73b547c3aff632ad14feabf" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4d29dc5a3cafe94ea4397d41b00cd54a9dffbe9bc3a3092a9ea617ea737bc6e" +checksum = "dadf2d1002c9851ea17d37b83a26bbe6f0f53d5f94ba2e477a7a6e9d498f805b" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -1946,9 +1898,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761d20ca9c3a3eb7025b2488aa6e0e5dc23c5d551dd95e83a989b5e87687f523" +checksum = "4c4ac1831e7c14e5308a66254bcc57a8d4790f18567ef8d4d6768b39ffb955a0" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -1958,9 +1910,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d778ec864e92c82293370a512195715b12775b05981e14065d85eb5dd3dd96b6" +checksum = "33c5f879bca42caef7e06f1de022d6961d36c5567db600faed8a947e2b705eaa" dependencies = [ "cairo-lang-utils", "good_lp", @@ -1968,9 +1920,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9dc486c554e2df3be8e84c47e30fe55b59d2349b680fbe992bfba801ef93ff5" +checksum = "c632b6d3ee5f1684f757f86e04ba9cf1daa8e4e74c6a5d6c0b7773cc4465a6c6" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -1984,9 +1936,9 @@ dependencies = [ [[package]] name = "cairo-lang-formatter" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "675d281a3c9aa365055ce6e201d5dd91534dfccfd2929a41b7397f665c80293c" +checksum = "8295a3ddc62d8d92d942292f103de0434d622f47e936a3aea25eccc3eed88c58" dependencies = [ "anyhow", "cairo-lang-diagnostics", @@ -2004,9 +1956,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d880470c94f94fac08c2150bc0ce4af930b6760956a56966e47612de376d57ec" +checksum = "b2a93c2644c64cfdbbe64b1bd6e13d9c6ed511950cfae2e738d228bc89dc5605" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -2029,9 +1981,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e2b488f659432c8b866bf540e54ab3696a24ac0f366faac33b860c5313e78c" +checksum = "d884d9418895fef5b8ffd7458211523ab5abf4357845938b354adfbae1089fe2" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -2049,9 +2001,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13cf34fd39a1efb997455fa38dbdb6bef489a125a2d17d77ebfea1ee580559f3" +checksum = "b224afdc76d9890edf9009fa8ffff9a91ac15614a41049d48c77c192e8c966e3" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -2074,9 +2026,9 @@ checksum = "123ac0ecadf31bacae77436d72b88fa9caef2b8e92c89ce63a125ae911a12fae" [[package]] name = "cairo-lang-proc-macros" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c4a161868276ce022c44ac500afbfa0d7d8371106feb40dfca34ea7be97503" +checksum = "0ae35a282e5f2d15f47ba6fffae5a32e8aa2f254366865339cf326e2e015b8f8" dependencies = [ "cairo-lang-debug", "quote", @@ -2085,9 +2037,9 @@ dependencies = [ [[package]] name = "cairo-lang-project" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fde3cc9777fff4daacbfd839a6fcefa29abd660068de47f72ac6d5883fa93ccd" +checksum = "4da40ba380208db0b861d8b1e6e558adaa98dd0b382177b25bdb1abf8fd8d766" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -2098,9 +2050,9 @@ dependencies = [ [[package]] name = "cairo-lang-runnable-utils" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "872d846834c8fdc886a7dc591c1f6ddd969d25d2c88dd65452931c63dfca7acc" +checksum = "951b72522c8a76e177119699bdcd3c4288bdc0bc784ac22dd7c0f80b2a7444d0" dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", @@ -2116,9 +2068,9 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9121164a61b0a8fcadefc8b21240e372bf04e6648ea31d09f9e85701e60877a" +checksum = "35b1d5b0e9103bea4e39ac1099ad47893a25f334c3ca2596d07b1a8920be22cb" dependencies = [ "ark-ff 0.4.2", "ark-secp256k1 0.4.0", @@ -2146,9 +2098,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8af1f92ba601fd61a994c44d0c80d711fbb3d64b2b5a1e72905fc6f581b1fadd" +checksum = "babdf14729236dfb455519d35e7e399ba73f0eaa4f1e929474d4c37dc9ef7a29" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -2173,9 +2125,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "075c6457642ada82b32cf657d871a8545ae7a9d61c78dd5588a794c8c905abdc" +checksum = "74c0e4951ecd88023856e0faa9fd444647d9f1ec69ca09dfa8e3aebf9d2afdef" dependencies = [ "anyhow", "cairo-lang-utils", @@ -2200,9 +2152,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b69172fe8354b1dd564bba318ccb5233aa78f70d57145b8c92a0b1cf009fa0fc" +checksum = "9ea9c51356e603fa38fcbd4524d19e391ac25e89e64889c3a4ef849de3d1e911" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -2216,9 +2168,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b571b73d9b02103f780aeee05dbf9a71d68d8a16341a04aa1dd581d0db3ad6" +checksum = "1af17244a222fd2398caaf09e909f0b584abe14c77e1b5dc8f479ef35d1e8d50" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -2232,9 +2184,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3857cd98a0cb35b32cc962e70c04e6ddfcd8bf61106ac37b6cf453ec76b878" +checksum = "2368d57175b18976222f844e4dda52d0025d70ce8b2dda35e0cc96efaa9bb4a5" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -2256,9 +2208,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add264b156dfb01f18292282a6037070c078acca3bccde05787da1e1c997b78c" +checksum = "866e6cbba9e81bae1c2f6b8f8e718f702fee69980c3f22bdea1e4657f09a540c" dependencies = [ "assert_matches", "cairo-lang-casm", @@ -2277,9 +2229,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bda5388ef862bc26388e999ac7ad62dd8ab3064720c3483b81fd761b051e627" +checksum = "f8e797aa2f4023e984d13c5adf7068688da665328da6b055842f50fb673fb48b" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -2287,9 +2239,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d5ed4aa48fe739f643a8c503c14aec0858c31dc73ba4e6a335b77ca7438807" +checksum = "85c16967be9b0befaa0e21f65c9c803f8354d0db09de7adf28cdf0dc54b2c90d" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -2317,9 +2269,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet-classes" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe691200b431e51e3d6cfa84f256a3dd2e8405f44d182843fbe124f803d085ff" +checksum = "b0f7b0c28430c9ad477c38dba089ac5a148443bbeaa77cc3f14980de255a220e" dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", @@ -2340,9 +2292,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a38f1431f22a9487b9b0dd7aef098c9605fe6b8677e0f620547aa69195f7fb5" +checksum = "f5adf933d378225e031200bd41c82e09cb0fde1042f5fe3f3c82d1ccd559a6f2" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -2357,9 +2309,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.9.2" +version = "2.10.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd7990586c9bb37eaa875ffeb218bdecf96f87881d03263ebf84fcd46514ca9f" +checksum = "cd79262096fbbd618c52d01964f5ed36e693f9dc1113a0d217e1b3825bd85822" dependencies = [ "genco", "xshell", @@ -2367,9 +2319,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-plugin" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5432fb1e290bed1c961a6bd778b3b553480b364524e7dbc343495b79b452131b" +checksum = "2a9c6f1976c28de3e502589f53b97bdc5f8566724d20ff68de83d8f382f5fc99" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -2394,9 +2346,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-utils" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b76c55a742da177540d2a0eb39fa50d011998d0ccfdeae8b48ea0e2d7f077f" +checksum = "aa7c6930beb6f221c1bc274460fca091e93c377570994b612682da30795ed74e" dependencies = [ "cairo-lang-formatter", "cairo-lang-utils", @@ -2407,9 +2359,9 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.9.2" +version = "2.10.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff5d7609abc99c15de7d7f90b8441b27e2bd52e930a3014c95a9b620e5d3211a" +checksum = "91b6546d9f285c7d4a2700c084f745c35e1884a1dc2e4fa54a71034cea5606aa" dependencies = [ "hashbrown 0.14.5", "indexmap 2.6.0", @@ -2423,7 +2375,7 @@ dependencies = [ [[package]] name = "cairo-native" -version = "0.2.5" +version = "0.2.8" dependencies = [ "anyhow", "aquamarine", @@ -2467,7 +2419,7 @@ dependencies = [ "starknet-types-core", "stats_alloc", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", "tracing-subscriber", "utf8_iter", @@ -2475,17 +2427,17 @@ dependencies = [ [[package]] name = "cairo-native-runtime" -version = "0.2.5" +version = "0.2.8" dependencies = [ "cairo-lang-sierra", "cairo-lang-sierra-gas", "cairo-lang-utils", - "itertools 0.13.0", + "itertools 0.14.0", "lazy_static", "num-bigint 0.4.6", "num-traits 0.2.19", "rand 0.8.5", - "sierra-emu 0.1.0 (git+https://github.com/lambdaclass/sierra-emu)", + "sierra-emu", "starknet-curve 0.5.1", "starknet-types-core", ] @@ -2577,9 +2529,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.4" +version = "1.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" +checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" dependencies = [ "jobserver", "libc", @@ -2843,16 +2795,13 @@ dependencies = [ [[package]] name = "comrak" -version = "0.31.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453dcb42e33f7b474d7e0db12e0b8d82802c88f35cf5a1d8c297d0dfcecb154f" +checksum = "39bff2cbb80102771ca62bd2375bc6f6611dc1493373440b23aa08a155538708" dependencies = [ - "bon", "caseless", "entities", "memchr", - "once_cell", - "regex", "slug", "typed-arena", "unicode_categories", @@ -2945,6 +2894,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "convert_case" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "cookie" version = "0.17.0" @@ -5557,6 +5515,15 @@ 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" @@ -6554,9 +6521,9 @@ dependencies = [ [[package]] name = "melior" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6359eb3167955f03dd9664feeb042cb31fbb3509e2118ccb044cfd450e7dcf57" +checksum = "1cfcb398e6571361b6f54fd0057066d9b47a822bcb797bf5867e5412e9e6f387" dependencies = [ "melior-macro", "mlir-sys", @@ -6564,17 +6531,17 @@ dependencies = [ [[package]] name = "melior-macro" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e14d65328cdb958e2b9fa66f440b84d8e410d9e16742cad4237f2458ab8c17e" +checksum = "53793223a7d821e2f69ac9cb4054d885074013f5a5a7f0accbaba74b454769be" dependencies = [ "comrak", - "convert_case 0.6.0", + "convert_case 0.7.1", "proc-macro2", "quote", "regex", "syn 2.0.90", - "tblgen-alt", + "tblgen", "unindent 0.2.3", ] @@ -10103,41 +10070,7 @@ dependencies = [ "starknet-curve 0.5.1", "starknet-types-core", "tempfile", - "thiserror 2.0.9", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "sierra-emu" -version = "0.1.0" -source = "git+https://github.com/lambdaclass/sierra-emu#e015746b4a7e541853725c2773a7909db37f8f6d" -dependencies = [ - "cairo-lang-compiler", - "cairo-lang-filesystem", - "cairo-lang-runner", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-starknet-classes", - "cairo-lang-utils", - "clap", - "k256", - "keccak", - "num-bigint 0.4.6", - "num-traits 0.2.19", - "p256", - "rand 0.8.5", - "sec1", - "serde", - "serde_json", - "sha2", - "smallvec", - "starknet-crypto 0.7.3", - "starknet-curve 0.5.1", - "starknet-types-core", - "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", "tracing-subscriber", ] @@ -11262,25 +11195,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] -name = "tblgen-alt" -version = "0.4.0" +name = "tblgen" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ecbc9175dd38627cd01d546e7b41c9a115e5773f4c98f64e2185c81ec5f45ab" +checksum = "c155c9310c9e11e6f642b4c8a30ae572ea0cad013d5c9e28bb264b52fa8163bb" dependencies = [ - "bindgen 0.69.5", + "bindgen 0.71.1", "cc", "paste", - "thiserror 1.0.64", + "thiserror 2.0.11", ] [[package]] name = "tempfile" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", "fastrand 2.1.1", + "getrandom", "once_cell", "rustix 0.38.42", "windows-sys 0.59.0", @@ -11378,11 +11312,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl 2.0.9", + "thiserror-impl 2.0.11", ] [[package]] @@ -11398,9 +11332,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", @@ -12321,18 +12255,6 @@ dependencies = [ "cc", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.42", -] - [[package]] name = "widestring" version = "1.1.0" diff --git a/Cargo.toml b/Cargo.toml index 1db4cb681c..0d68a75b3c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,12 +95,12 @@ byteorder = "1.4.3" bytes = "1" cached = "0.44.0" cairo-felt = "0.9.1" -cairo-lang-casm = "2.9.2" -cairo-lang-runner = "2.9.2" -cairo-lang-sierra = "=2.9.2" -cairo-lang-sierra-to-casm = "2.9.2" -cairo-lang-starknet-classes = "2.9.2" -cairo-lang-utils = "2.9.2" +cairo-lang-casm = "2.10.0-rc.0" +cairo-lang-runner = "2.10.0-rc.0" +cairo-lang-sierra = "=2.10.0-rc.0" +cairo-lang-sierra-to-casm = "2.10.0-rc.0" +cairo-lang-starknet-classes = "2.10.0-rc.0" +cairo-lang-utils = "2.10.0-rc.0" # Important: when updated, make sure to update the cairo-native submodule as well. cairo-native = { path = "../cairo_native" } sierra-emu = { path = "../sierra-emu" } diff --git a/crates/bin/starknet-native-compile/Cargo.toml b/crates/bin/starknet-native-compile/Cargo.toml index 4d39d34cb1..697ba48a92 100644 --- a/crates/bin/starknet-native-compile/Cargo.toml +++ b/crates/bin/starknet-native-compile/Cargo.toml @@ -10,6 +10,6 @@ license = "Apache-2.0" # TODO(Avi, 01/02/2025): Check consistency with the blockifier. cairo-lang-sierra = "2.9.2" cairo-lang-starknet-classes = "2.9.2" -cairo-native = { path = "../../../../cairo_native" } +cairo-native = "0.2.4" clap = { version = "4.5.4", features = ["derive"] } serde_json = "1.0.116" diff --git a/crates/blockifier/Cargo.toml b/crates/blockifier/Cargo.toml index ae6cc57adc..fc89802dac 100644 --- a/crates/blockifier/Cargo.toml +++ b/crates/blockifier/Cargo.toml @@ -16,6 +16,7 @@ native_blockifier = [] reexecution = ["transaction_serde"] testing = ["rand", "rstest", "starknet_api/testing"] transaction_serde = [] +profiling = [] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/crates/blockifier/build.rs b/crates/blockifier/build.rs deleted file mode 100644 index 1ea53ca3ae..0000000000 --- a/crates/blockifier/build.rs +++ /dev/null @@ -1,69 +0,0 @@ -#[cfg(feature = "cairo_native")] -fn compile_cairo_native_aot_runtime() { - use std::path::PathBuf; - use std::process::Command; - - use infra_utils::compile_time_cargo_manifest_dir; - use infra_utils::path::current_dir; - - let cairo_native_dir = - PathBuf::from(compile_time_cargo_manifest_dir!()).join(PathBuf::from("cairo_native")); - - if !cairo_native_dir.exists() || !cairo_native_dir.join(".git").exists() { - panic!( - "It seems git submodule at {} doesn't exist or it is not initialized, please \ - run:\n\ngit submodule update --init --recursive\n", - cairo_native_dir.to_str().unwrap() - ); - } - - let runtime_target_dir = cairo_native_dir.join(PathBuf::from("target")); - let status = Command::new("cargo") - .args([ - "build", - "-p", - "cairo-native-runtime", - "--features=with-trace-dump", - "--message-format=json", - "--target-dir", - runtime_target_dir.to_str().unwrap(), - ]) - .current_dir(cairo_native_dir) - .status() - .expect("Failed to execute cargo"); - if !status.success() { - panic!("Building cairo native runtime failed: {status}") - } - - let runtime_target_path = - runtime_target_dir.join(PathBuf::from("release/libcairo_native_runtime.a")); - - const RUNTIME_LIBRARY: &str = "CAIRO_NATIVE_RUNTIME_LIBRARY"; - let runtime_expected_path = { - let expected_path_env = - std::env::var(RUNTIME_LIBRARY).expect("Cairo Native runtime path variable is not set"); - let expected_path = PathBuf::from(&expected_path_env); - - if expected_path.is_absolute() { - expected_path - } else { - current_dir().expect("Failed to get current directory").join(expected_path) - } - }; - - std::fs::copy(&runtime_target_path, &runtime_expected_path) - .expect("Failed to copy native runtime"); - - println!("cargo::rerun-if-changed=./cairo_native/runtime/"); - // todo(rodrigo): this directive seems to cause the build script to trigger everytime on - // Linux based machines. Investigate the issue further. - println!("cargo::rerun-if-changed={}", runtime_expected_path.to_str().unwrap()); - println!("cargo::rerun-if-env-changed={RUNTIME_LIBRARY}"); -} - -fn main() { - // Build instructions are defined behind this condition since they are only relevant when using - // Cairo Native. - #[cfg(feature = "cairo_native")] - compile_cairo_native_aot_runtime(); -} diff --git a/crates/blockifier/cairo_native b/crates/blockifier/cairo_native deleted file mode 120000 index b1c038e7fc..0000000000 --- a/crates/blockifier/cairo_native +++ /dev/null @@ -1 +0,0 @@ -../../../cairo_native/ \ No newline at end of file diff --git a/crates/blockifier/src/execution/native/entry_point_execution.rs b/crates/blockifier/src/execution/native/entry_point_execution.rs index bafd31852c..8ec8dc1f02 100644 --- a/crates/blockifier/src/execution/native/entry_point_execution.rs +++ b/crates/blockifier/src/execution/native/entry_point_execution.rs @@ -54,7 +54,7 @@ pub fn execute_entry_point_call( // adjusting the stack size. // This also limits multi-threading, since each thread has its own stack. // TODO(Aviv/Yonatan): add these numbers to overridable VC. - let stack_size_red_zone = 160 * 1024 * 1024; + let stack_size_red_zone = if !cfg!(feature = "profiling") { 160 * 1024 * 1024 } else { 0 }; let target_stack_size = stack_size_red_zone + 10 * 1024 * 1024; // Use `maybe_grow` and not `grow` for performance, since in happy flows, only the main call // should trigger the growth. diff --git a/crates/starknet_sierra_compile/build.rs b/crates/starknet_sierra_compile/build.rs index bab5b00e66..e54c606938 100644 --- a/crates/starknet_sierra_compile/build.rs +++ b/crates/starknet_sierra_compile/build.rs @@ -1,119 +1,8 @@ -use std::process::Command; - -use tempfile::TempDir; - -include!("src/constants.rs"); -include!("src/paths.rs"); - fn main() { println!("cargo:rerun-if-changed=../../Cargo.lock"); println!("cargo:rerun-if-changed=build.rs"); set_run_time_out_dir_env_var(); - install_starknet_sierra_compile(); - #[cfg(feature = "cairo_native")] - install_starknet_native_compile(); -} - -const REQUIRED_CAIRO_LANG_VERSION: &str = "2.7.1"; -#[cfg(feature = "cairo_native")] -const REQUIRED_CAIRO_NATIVE_VERSION: &str = "0.2.4"; - -/// Downloads the Cairo crate from StarkWare's release page and extracts its contents into the -/// `target` directory. This crate includes the `starknet-sierra-compile` binary, which is used to -/// compile Sierra to Casm. The binary is executed as a subprocess whenever Sierra compilation is -/// required. -fn install_starknet_sierra_compile() { - let binary_name = CAIRO_LANG_BINARY_NAME; - let required_version = REQUIRED_CAIRO_LANG_VERSION; - - let cargo_install_args = &[binary_name, "--version", required_version]; - install_compiler_binary(binary_name, required_version, cargo_install_args); -} - -/// Installs the `starknet-native-compile` crate from the current repository and moves the binary -/// to the shared executables folder. This crate includes the `starknet-native-compile` binary, -/// which is used to compile Sierra to 0x86. The binary is executed as a subprocess whenever Sierra -/// compilation is required. -#[cfg(feature = "cairo_native")] -fn install_starknet_native_compile() { - let binary_name = CAIRO_NATIVE_BINARY_NAME; - let required_version = REQUIRED_CAIRO_NATIVE_VERSION; - - let repo_root_dir = - infra_utils::path::project_path().expect("Should be able to get the project path"); - - // Set the runtime library path. This is required for Cairo native compilation. - let runtime_library_path = repo_root_dir - .join("crates/blockifier/cairo_native/target/release/libcairo_native_runtime.a"); - println!("cargo:rustc-env=CAIRO_NATIVE_RUNTIME_LIBRARY={}", runtime_library_path.display()); - println!("cargo:rerun-if-env-changed=CAIRO_NATIVE_RUNTIME_LIBRARY"); - - let starknet_native_compile_crate_path = repo_root_dir.join("crates/bin").join(binary_name); - let starknet_native_compile_crate_path_str = starknet_native_compile_crate_path - .to_str() - .expect("Failed to convert the crate path to str"); - println!("cargo:rerun-if-changed={}", starknet_native_compile_crate_path_str); - - let cargo_install_args = &["--path", starknet_native_compile_crate_path_str]; - install_compiler_binary(binary_name, required_version, cargo_install_args); -} - -fn install_compiler_binary(binary_name: &str, required_version: &str, cargo_install_args: &[&str]) { - let binary_path = binary_path(out_dir(), binary_name); - println!("cargo:rerun-if-changed={}", binary_path.to_str().unwrap()); - - match Command::new(&binary_path).args(["--version"]).output() { - Ok(binary_version) => { - let binary_version = String::from_utf8(binary_version.stdout) - .expect("Failed to convert the binary version to a string."); - if binary_version.contains(required_version) { - println!("The {binary_name} binary is up to date."); - return; - } else { - println!( - "The {binary_name} binary is not up to date. Installing the required version." - ); - std::fs::remove_file(&binary_path).expect("Failed to remove the old binary."); - } - } - Err(_) => { - println!("The {binary_name} binary is not installed. Installing the required version."); - } - } - - let temp_cargo_path = TempDir::new().expect("Failed to create a temporary directory."); - let post_install_file_path = temp_cargo_path.path().join("bin").join(binary_name); - - let install_command_status = Command::new("cargo") - .args([ - "install", - "--root", - temp_cargo_path.path().to_str().expect("Failed to convert cargo_path to str"), - ]) - .args(cargo_install_args) - .status() - .unwrap_or_else(|_| panic!("Failed to install {binary_name}")); - - if !install_command_status.success() { - panic!("Failed to install {}", binary_name); - } - - // Move the '{binary_name}' executable to a shared location. - std::fs::create_dir_all(shared_folder_dir(out_dir())) - .expect("Failed to create shared executables folder"); - let move_command_status = Command::new("mv") - .args([post_install_file_path.as_os_str(), binary_path.as_os_str()]) - .status() - .expect("Failed to perform mv command."); - - if !move_command_status.success() { - panic!("Failed to move the {} binary to the shared folder.", binary_name); - } - - std::fs::remove_dir_all(temp_cargo_path).expect("Failed to remove the cargo directory."); - - println!("Successfully set executable file: {:?}", binary_path.display()); } // Sets the `RUNTIME_ACCESSIBLE_OUT_DIR` environment variable to the `OUT_DIR` value, which will be @@ -122,10 +11,3 @@ fn set_run_time_out_dir_env_var() { let out_dir = std::env::var("OUT_DIR").expect("OUT_DIR is not set"); println!("cargo:rustc-env=RUNTIME_ACCESSIBLE_OUT_DIR={}", out_dir); } - -// Returns the OUT_DIR. This function is only operable at build time. -fn out_dir() -> std::path::PathBuf { - std::env::var("OUT_DIR") - .expect("Failed to get the build time OUT_DIR environment variable") - .into() -}