diff --git a/.github/workflows/cairo_1_programs.yml b/.github/workflows/cairo_1_programs.yml index bd0a637f57..d8a4c1f3f4 100644 --- a/.github/workflows/cairo_1_programs.yml +++ b/.github/workflows/cairo_1_programs.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@1.69.0 + uses: dtolnay/rust-toolchain@1.70.0 - name: Set up Cargo cache uses: Swatinem/rust-cache@v2 - name: Checkout diff --git a/.github/workflows/iai_main.yml b/.github/workflows/iai_main.yml index 73ea622296..e1217085ba 100644 --- a/.github/workflows/iai_main.yml +++ b/.github/workflows/iai_main.yml @@ -8,6 +8,8 @@ jobs: cache-iai-results: runs-on: ubuntu-22.04 steps: + - name: Checkout + uses: actions/checkout@v3 - name: Install Rust uses: dtolnay/rust-toolchain@1.70.0 - name: Set up cargo cache @@ -16,8 +18,6 @@ jobs: uses: actions/setup-python@v4 with: python-version: '3.9' - - name: Checkout - uses: actions/checkout@v3 - name: Install test dependencies run: | pip install -r requirements.txt diff --git a/.github/workflows/iai_pr.yml b/.github/workflows/iai_pr.yml index 7c296b3e1b..db446adeb9 100644 --- a/.github/workflows/iai_pr.yml +++ b/.github/workflows/iai_pr.yml @@ -8,6 +8,10 @@ jobs: fetch-iai-results: runs-on: ubuntu-22.04 steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.base.sha }} - name: Initialize IAI cache for ${{ github.event.pull_request.base.sha }} uses: actions/cache@v3 id: cache-iai-results @@ -28,11 +32,6 @@ jobs: uses: actions/setup-python@v4 with: python-version: '3.9' - - name: Checkout - if: ${{ steps.cache-iai-results.outputs.cache-hit != 'true' }} - uses: actions/checkout@v3 - with: - ref: ${{ github.event.pull_request.base.sha }} - name: Install test dependencies if: ${{ steps.cache-iai-results.outputs.cache-hit != 'true' }} run: | @@ -49,6 +48,8 @@ jobs: needs: fetch-iai-results runs-on: ubuntu-22.04 steps: + - name: Checkout + uses: actions/checkout@v3 - name: Install Rust uses: dtolnay/rust-toolchain@1.70.0 - name: Set up cargo cache @@ -57,8 +58,6 @@ jobs: uses: actions/setup-python@v4 with: python-version: '3.9' - - name: Checkout - uses: actions/checkout@v3 - name: Install test dependencies run: | pip install -r requirements.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index ca452c4f59..a3564e1c7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ * feat(breaking): Replace `cairo-felt` crate with `stark-felt` [#1408](https://github.com/lambdaclass/cairo-vm/pull/1408) +* feat: add debugging capabilities behind `print` feature flag. [#1476](https://github.com/lambdaclass/cairo-vm/pull/1476) + +#### [0.9.1] - 2023-11-16 + +* chore: bump `cairo-lang-` dependencies to 2.3.1 [#1482](https://github.com/lambdaclass/cairo-vm/pull/1482), [#1483](https://github.com/lambdaclass/cairo-vm/pull/1483) + +* feat: Make PublicInput fields public [#1474](https://github.com/lambdaclass/cairo-vm/pull/1474) + * chore: bump starknet-crypto to v0.6.1 [#1469](https://github.com/lambdaclass/cairo-vm/pull/1469) * feat: Implement the Serialize and Deserialize methods for the Program struct [#1458](https://github.com/lambdaclass/cairo-vm/pull/1458) diff --git a/Cargo.lock b/Cargo.lock index d83f7cebe6..049b507ee3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -102,9 +102,9 @@ checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "arbitrary" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e1373abdaa212b704512ec2bd8b26bd0b7d5c3f70117411a5d9a451383c859" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" dependencies = [ "derive_arbitrary", ] @@ -284,9 +284,9 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b89fd5edce5c0b128fa25f76f07db322ae9b28c123619ddcd11df18a73d3217" +checksum = "c0cca7891c0df31a87740acbcda3f3c04e6516e283b67842386873f3a181fd91" dependencies = [ "cairo-lang-utils", "indoc", @@ -301,9 +301,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc2689f520038019ddc8884ee36f6df04a66fe46906c9d1ac76e8e9675e55f0" +checksum = "f8c4bd031bf62046af88e75b86f419ad7e2317c3b7ee26cbad367f2ff2f2bfa4" dependencies = [ "anyhow", "cairo-lang-defs", @@ -325,18 +325,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3544967c563b53066163794d3c400270faf4617cfdd33ba1f74296efdca14e9d" +checksum = "954529b40c914ff089bd06b4cdfa3b51f39fb8769a6f9af92ba745e4a1300bd4" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07a54c419c573bc2610c2b3d672420723ca38b79a4cae2f24e0287173524e18" +checksum = "2a2ab80b21943392da07b2ee54f1f7e15ac783ea1567ed27bd4682774713f7ee" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -351,9 +351,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82dc3934a47960155812cc181e7e2a3d48f2df447c23fcdbecff966855244162" +checksum = "07052c58dc014904bfecc6fb253a0461bbdcdd3ac41f1385ac9fba5ef9a0da61" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -363,9 +363,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f944eae57f6c31fa0157811117b584cba4556770e2e5db4fd856459b877680f" +checksum = "eac351e6a4af689df90119d95d8fa9441b8ad1b2eef6f4868ed7a1c1808f786c" dependencies = [ "cairo-lang-utils", "good_lp", @@ -373,9 +373,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b9b4f02ee6da5526a58b054dae3dce8ff592ae5e740c1d028ebd7e8218e1dc" +checksum = "77f253875f0503f13d2a15e303db4f77a932a84600787a496938d0daf687945d" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -387,9 +387,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5654b46630d3e8e740ebb058d344aa62ca92c5b1cbc5febbb993abe1ab622cb" +checksum = "9aa602a50c7d216beb4c261036b024b24f90ce6724d623f1b23f56076584473c" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -401,7 +401,7 @@ dependencies = [ "cairo-lang-syntax", "cairo-lang-utils", "id-arena", - "indexmap 2.0.2", + "indexmap 2.1.0", "itertools 0.11.0", "log", "num-bigint", @@ -412,9 +412,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f42707f9db24a7c15b82b1d26615c3038323b6136c76739622ea3a3877a8ed7" +checksum = "b25e847ef219635b837cbfd8eed797a7aa6a4b01e1775065cff67b1d5bfda1fe" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -432,9 +432,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11b58c906cfb2d64ab630c1417a9dac15dea0859978cc5b2b61dab7fa098a9b9" +checksum = "4c109f0b788a95bb86cff0e3917e1ce7d75210020fc53904d2a5e3ba54728adb" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -451,20 +451,20 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "178c68268a904eba03c07714b2c29d1f97d6754e74931f5d465961f901a88d59" +checksum = "d2bbbfe1934e11fe3cce4f23cdccd22341ed63af5d76e593234288dd4ba06f56" dependencies = [ "cairo-lang-debug", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] name = "cairo-lang-project" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5eb369e0b51a8f03ad92dc2981387cb9b35cba6d117271ef307a14a14ff58b0" +checksum = "e2ba814a9dd17b1341204d8e7bb67775aadebc5138a475bdf176dff0f11999cb" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -476,9 +476,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7564b5ea75237c83b6b7e39d9177fcf13f34f035bf8bd5f659198ac8f6ee78b9" +checksum = "19678648e0efec3f837c0d75b6071bc2afe5c4bc611e177381478c023b72a74c" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -499,9 +499,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ada598c1f7a7c343cf5d604c0f028000fcc17d67c036d797d5cd3b7fd8777e1a" +checksum = "79b7d09f0b7461701a9ba5d7a2260551b5026cd8f6efc6ca9ca270f6c0a6fd23" dependencies = [ "anyhow", "cairo-lang-utils", @@ -523,9 +523,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00cf99976ca90ceeb11895521feb34b1be8e0f98b6ca79e9a4018148d7ff7888" +checksum = "3e66740bcfadb365d488ff9c334f68cb4cb6a6cb9666ae12109fc6eee7371116" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -537,9 +537,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f64f8d381ef4f97ecdbfae7f9f77fe6aa18191696e52b112e53c75a84af7e84" +checksum = "ac27c07af11fcdc9546a9c55c1463cb871fb5b7af1daa3cdf31cfb0872da3d88" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -551,9 +551,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfee5967e7967c71cee15f545faf5288a9c6046c60ecff89748c65d9654a7be4" +checksum = "456cd75547a127b8f4088216a419d317c753c6b9188e944846bf3a5193c14797" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -574,9 +574,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4af7d2812d283b63f074a1ab4135fe0db586bf1b5edaa7ef2129f3067c9e894a" +checksum = "da74c7c4a2df66b961a982396e0f5221d6594266aed48c76d8c22d5b0d96af5d" dependencies = [ "assert_matches", "cairo-felt", @@ -595,9 +595,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b753a6569f903c3637dda7ef944455a91b2b004f5294262ab1e823914ea65e5" +checksum = "a7fdf2dbda71f1ed4e4020914e7494ad32db84dbc75cc8dbf05c06caef678fc8" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -605,9 +605,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6866e7599234986acb221cbc5a9720731e4b6d068e87ce07d6437e51f8fc8a24" +checksum = "9217e979f11980609d13d3a5adea8438ec9345709ddfebca975cc9cd1f85201e" dependencies = [ "anyhow", "cairo-felt", @@ -641,9 +641,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91c81cd720549131e80598172d6a9db3d62795ab6be1060b7efed463c793bd1" +checksum = "2d461d88e09ba7055822eb42d6b2c2ea38a4eaa5b9e4196d8f63db48c563fb56" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -657,9 +657,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f2e93b768bf5fff62bcd445fda45c98cdb4e58a81b2095bda01cdbf00e2e6a" +checksum = "9615745282c0c0d3a255c2ac2665a18ae1d163c54285014d85dacda2d5e53637" dependencies = [ "genco", "xshell", @@ -667,11 +667,11 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a676a06f80da115e9ef2669e708ee3d2a495224ebc6e5464e8d6132d0e8266b" +checksum = "15edcd2fba78af9b753614885464c9b5bf6041b7decba46587c2b0babc4197ac" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.1.0", "itertools 0.11.0", "num-bigint", "num-traits 0.2.17", @@ -682,7 +682,7 @@ dependencies = [ [[package]] name = "cairo-vm" -version = "0.9.0" +version = "0.9.1" dependencies = [ "anyhow", "arbitrary", @@ -721,7 +721,7 @@ dependencies = [ [[package]] name = "cairo-vm-cli" -version = "0.9.0" +version = "0.9.1" dependencies = [ "assert_matches", "bincode", @@ -735,7 +735,7 @@ dependencies = [ [[package]] name = "cairo1-run" -version = "0.9.0" +version = "0.9.1" dependencies = [ "assert_matches", "bincode", @@ -805,9 +805,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.7" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" dependencies = [ "clap_builder", "clap_derive", @@ -815,9 +815,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.7" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" dependencies = [ "anstream", "anstyle", @@ -834,7 +834,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -907,9 +907,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbc60abd742b35f2492f808e1abbb83d45f72db402e14c55057edc9c7b1e9e4" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -991,9 +991,9 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", "subtle", @@ -1023,13 +1023,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e0efad4403bfc52dc201159c4b842a246a14b98c64b55dfd0f2d89729dfeb8" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -1072,9 +1072,9 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" [[package]] name = "either" @@ -1099,9 +1099,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" dependencies = [ "libc", "windows-sys", @@ -1133,9 +1133,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ "futures-channel", "futures-core", @@ -1148,9 +1148,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", "futures-sink", @@ -1158,15 +1158,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -1175,32 +1175,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-timer" @@ -1210,9 +1210,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-channel", "futures-core", @@ -1228,9 +1228,9 @@ dependencies = [ [[package]] name = "genco" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4fd234893ffe9cf5b81224ebb1d21bbe2eeb94d95bac3ea25c97cba7293304d" +checksum = "98d7af598790738fee616426e669360fa361273b1b9c9b7f30c92fa627605cad" dependencies = [ "genco-macros", "relative-path", @@ -1239,13 +1239,13 @@ dependencies = [ [[package]] name = "genco-macros" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1c8cd3de2f32ee05ba2adaa90f8d0c354ffa0adeb2d186978d7ae70e5025e9" +checksum = "d4cf186fea4af17825116f72932fe52cce9a13bae39ff63b4dc0cfdb3fb4bde1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -1260,9 +1260,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "js-sys", @@ -1336,7 +1336,7 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hint_accountant" -version = "0.9.0" +version = "0.9.1" dependencies = [ "cairo-vm", "serde", @@ -1394,9 +1394,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", "hashbrown 0.14.2", @@ -1455,9 +1455,9 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] @@ -1519,9 +1519,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.149" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libm" @@ -1539,11 +1539,22 @@ dependencies = [ "libc", ] +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] + [[package]] name = "linux-raw-sys" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" [[package]] name = "lock_api" @@ -1831,7 +1842,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.0.2", + "indexmap 2.1.0", ] [[package]] @@ -1922,9 +1933,9 @@ dependencies = [ [[package]] name = "proptest" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", @@ -1934,7 +1945,7 @@ dependencies = [ "rand", "rand_chacha", "rand_xorshift", - "regex-syntax 0.7.5", + "regex-syntax 0.8.2", "rusty-fork", "tempfile", "unarray", @@ -2035,15 +2046,6 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.4.1" @@ -2055,12 +2057,12 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ "getrandom", - "redox_syscall 0.2.16", + "libredox", "thiserror", ] @@ -2158,9 +2160,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.20" +version = "0.38.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0" +checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" dependencies = [ "bitflags 2.4.1", "errno", @@ -2233,9 +2235,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -2246,9 +2248,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ "proc-macro2", "quote", @@ -2276,22 +2278,22 @@ checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.189" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.189" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2307,9 +2309,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -2363,9 +2365,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smol_str" @@ -2421,7 +2423,7 @@ checksum = "af6527b845423542c8a16e060ea1bc43f67229848e7cd4c4d80be994a84220ce" dependencies = [ "starknet-curve", "starknet-ff", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2435,9 +2437,9 @@ dependencies = [ [[package]] name = "starknet-ff" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2cb1d9c0a50380cddab99cb202c6bfb3332728a2769bd0ca2ee80b0b390dd4" +checksum = "7584bc732e4d2a8ccebdd1dda8236f7940a79a339e30ebf338d45c329659e36c" dependencies = [ "ark-ff", "crypto-bigint", @@ -2497,9 +2499,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ "proc-macro2", "quote", @@ -2514,13 +2516,13 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "rustix", "windows-sys", ] @@ -2553,7 +2555,7 @@ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2622,7 +2624,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.1.0", "serde", "serde_spanned", "toml_datetime", @@ -2643,9 +2645,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unescaper" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96a44ae11e25afb520af4534fd7b0bd8cd613e35a78def813b8cf41631fa3c8" +checksum = "d8f0f68e58d297ba8b22b8b5a96a87b863ba6bb46aaf51e19a4b02c5a6dd5b7f" dependencies = [ "thiserror", ] @@ -2707,9 +2709,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2717,24 +2719,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" dependencies = [ "cfg-if", "js-sys", @@ -2744,9 +2746,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2754,28 +2756,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "wasm-bindgen-test" -version = "0.3.37" +version = "0.3.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e6e302a7ea94f83a6d09e78e7dc7d9ca7b186bc2829c24a22d0753efd680671" +checksum = "c6433b7c56db97397842c46b67e11873eda263170afeb3a2dc74a7cb370fee0d" dependencies = [ "console_error_panic_hook", "js-sys", @@ -2787,17 +2789,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.37" +version = "0.3.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecb993dd8c836930ed130e020e77d9b2e65dd0fbab1b67c790b0f5d80b11a575" +checksum = "493fcbab756bb764fa37e6bee8cec2dd709eb4273d06d0c282a5e74275ded735" dependencies = [ "proc-macro2", "quote", + "syn 2.0.39", ] [[package]] name = "wasm-demo" -version = "0.9.0" +version = "0.9.1" dependencies = [ "cairo-vm", "console_error_panic_hook", @@ -2808,9 +2811,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" dependencies = [ "js-sys", "wasm-bindgen", @@ -2915,9 +2918,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.17" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" dependencies = [ "memchr", ] @@ -2948,29 +2951,29 @@ checksum = "7e2c411759b501fb9501aac2b1b2d287a6e93e5bdcf13c25306b23e1b716dd0e" [[package]] name = "zerocopy" -version = "0.7.15" +version = "0.7.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ba595b9f2772fbee2312de30eeb80ec773b4cb2f1e8098db024afadda6c06f" +checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.15" +version = "0.7.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772666c41fb6dceaf520b564b962d738a8e1a83b41bd48945f50837aed78bb1d" +checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" dependencies = [ "zeroize_derive", ] @@ -2983,5 +2986,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] diff --git a/Cargo.toml b/Cargo.toml index 45f019f6a9..0f897a2ce7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ exclude = ["ensure-no_std"] resolver = "2" [workspace.package] -version = "0.9.0" +version = "0.9.1" edition = "2021" license = "Apache-2.0" repository = "https://github.com/lambdaclass/cairo-vm/" @@ -26,7 +26,7 @@ readme = "README.md" keywords = ["starknet", "cairo", "vm", "wasm", "no_std"] [workspace.dependencies] -cairo-vm = { path = "./vm", version = "0.9.0", default-features = false } +cairo-vm = { path = "./vm", version = "0.9.1", default-features = false } mimalloc = { version = "0.1.37", default-features = false } num-bigint = { version = "0.4", default-features = false, features = [ "serde", @@ -63,14 +63,14 @@ thiserror-no-std = { version = "2.0.2", default-features = false } bitvec = { version = "1", default-features = false, features = ["alloc"] } # Dependencies for cairo-1-hints feature -cairo-lang-starknet = { version = "2.2.0", default-features = false } -cairo-lang-casm = { version = "2.2.0", default-features = false } +cairo-lang-starknet = { version = "2.3.1", default-features = false } +cairo-lang-casm = { version = "2.3.1", default-features = false } -cairo-lang-compiler = { version = "2.2.0", default-features = false } -cairo-lang-sierra-to-casm = { version = "2.2.0", default-features = false } -cairo-lang-sierra = { version = "2.2.0", default-features = false } -cairo-lang-runner = { version = "2.2.0", default-features = false } -cairo-lang-utils = { version = "2.2.0", default-features = false } +cairo-lang-compiler = { version = "2.3.1", default-features = false } +cairo-lang-sierra-to-casm = { version = "2.3.1", default-features = false } +cairo-lang-sierra = { version = "2.3.1", default-features = false } +cairo-lang-runner = { version = "2.3.1", default-features = false } +cairo-lang-utils = { version = "2.3.1", default-features = false } # TODO: check these dependencies for wasm compatibility ark-ff = { version = "0.4.2", default-features = false } diff --git a/Makefile b/Makefile index c22dbf80e9..8925012f37 100644 --- a/Makefile +++ b/Makefile @@ -73,6 +73,10 @@ BAD_TEST_DIR=cairo_programs/bad_programs BAD_TEST_FILES:=$(wildcard $(BAD_TEST_DIR)/*.cairo) COMPILED_BAD_TESTS:=$(patsubst $(BAD_TEST_DIR)/%.cairo, $(BAD_TEST_DIR)/%.json, $(BAD_TEST_FILES)) +PRINT_TEST_DIR=cairo_programs/print_feature +PRINT_TEST_FILES:=$(wildcard $(PRINT_TEST_DIR)/*.cairo) +COMPILED_PRINT_TESTS:=$(patsubst $(PRINT_TEST_DIR)/%.cairo, $(PRINT_TEST_DIR)/%.json, $(PRINT_TEST_FILES)) + NORETROCOMPAT_DIR:=cairo_programs/noretrocompat NORETROCOMPAT_FILES:=$(wildcard $(NORETROCOMPAT_DIR)/*.cairo) COMPILED_NORETROCOMPAT_TESTS:=$(patsubst $(NORETROCOMPAT_DIR)/%.cairo, $(NORETROCOMPAT_DIR)/%.json, $(NORETROCOMPAT_FILES)) @@ -92,15 +96,12 @@ $(TEST_DIR)/%.trace $(TEST_DIR)/%.memory: $(TEST_DIR)/%.json $(NORETROCOMPAT_DIR)/%.json: $(NORETROCOMPAT_DIR)/%.cairo cairo-compile --cairo_path="$(TEST_DIR):$(BENCH_DIR):$(NORETROCOMPAT_DIR)" $< --output $@ - -BAD_TEST_DIR=cairo_programs/bad_programs -BAD_TEST_FILES:=$(wildcard $(BAD_TEST_DIR)/*.cairo) -COMPILED_BAD_TESTS:=$(patsubst $(BAD_TEST_DIR)/%.cairo, $(BAD_TEST_DIR)/%.json, $(BAD_TEST_FILES)) - - $(BAD_TEST_DIR)/%.json: $(BAD_TEST_DIR)/%.cairo cairo-compile $< --output $@ +$(PRINT_TEST_DIR)/%.json: $(PRINT_TEST_DIR)/%.cairo + cairo-compile $< --output $@ + # ====================== # Test Cairo 1 Contracts # ====================== @@ -181,7 +182,7 @@ cargo-deps: cargo install --version 1.14.0 hyperfine cargo install --version 0.9.49 cargo-nextest cargo install --version 0.5.9 cargo-llvm-cov - cargo install --version 0.11.0 wasm-pack + cargo install --version 0.12.1 wasm-pack cairo1-run-deps: cd cairo1-run; make deps @@ -217,7 +218,7 @@ run: check: cargo check -cairo_test_programs: $(COMPILED_TESTS) $(COMPILED_BAD_TESTS) $(COMPILED_NORETROCOMPAT_TESTS) +cairo_test_programs: $(COMPILED_TESTS) $(COMPILED_BAD_TESTS) $(COMPILED_NORETROCOMPAT_TESTS) $(COMPILED_PRINT_TESTS) cairo_proof_programs: $(COMPILED_PROOF_TESTS) cairo_bench_programs: $(COMPILED_BENCHES) cairo_1_test_contracts: $(CAIRO_1_COMPILED_CASM_CONTRACTS) @@ -301,6 +302,7 @@ clean: rm -f $(TEST_DIR)/*.trace rm -f $(BENCH_DIR)/*.json rm -f $(BAD_TEST_DIR)/*.json + rm -f $(PRINT_TEST_DIR)/*.json rm -f $(CAIRO_1_CONTRACTS_TEST_DIR)/*.sierra rm -f $(CAIRO_1_CONTRACTS_TEST_DIR)/*.casm rm -f $(TEST_PROOF_DIR)/*.json diff --git a/cairo1-run/Cargo.toml b/cairo1-run/Cargo.toml index 456c66164e..34138ce983 100644 --- a/cairo1-run/Cargo.toml +++ b/cairo1-run/Cargo.toml @@ -11,9 +11,9 @@ keywords.workspace = true [dependencies] cairo-vm = {workspace = true, features = ["std", "cairo-1-hints"]} -cairo-lang-sierra-type-size = { version = "2.2.0", default-features = false } -cairo-lang-sierra-ap-change = { version = "2.2.0", default-features = false } -cairo-lang-sierra-gas = { version = "2.2.0", default-features = false } +cairo-lang-sierra-type-size = { version = "2.3.1", default-features = false } +cairo-lang-sierra-ap-change = { version = "2.3.1", default-features = false } +cairo-lang-sierra-gas = { version = "2.3.1", default-features = false } cairo-lang-sierra-to-casm.workspace = true cairo-lang-compiler.workspace = true cairo-lang-sierra.workspace = true diff --git a/cairo1-run/Makefile b/cairo1-run/Makefile index bb00dbebab..337cf3a53e 100644 --- a/cairo1-run/Makefile +++ b/cairo1-run/Makefile @@ -15,7 +15,7 @@ MEMORY:=$(patsubst $(CAIRO_1_FOLDER)/%.cairo, $(CAIRO_1_FOLDER)/%.memory, $(CAIR deps: git clone https://github.com/starkware-libs/cairo.git \ && cd cairo \ - && git checkout v2.2.0 \ + && git checkout v2.3.1 \ && cd .. \ && mv cairo/corelib/ . \ && rm -rf cairo/ diff --git a/cairo_programs/print_feature/print_array.cairo b/cairo_programs/print_feature/print_array.cairo new file mode 100644 index 0000000000..18183092e3 --- /dev/null +++ b/cairo_programs/print_feature/print_array.cairo @@ -0,0 +1,20 @@ +%builtins range_check + +from starkware.cairo.common.alloc import alloc + +func main{range_check_ptr: felt}() { + let name = 0x4b4b5254; + let (arr: felt*) = alloc(); + assert arr[0] = 1; + assert arr[1] = 2; + assert arr[2] = 3; + assert arr[3] = 4; + assert arr[4] = 5; + let arr_len = 5; + %{ + print(bytes.fromhex(f"{ids.name:062x}").decode().replace('\x00','')) + arr = [memory[ids.arr + i] for i in range(ids.arr_len)] + print(arr) + %} + return(); +} diff --git a/cairo_programs/print_feature/print_dict_array.cairo b/cairo_programs/print_feature/print_dict_array.cairo new file mode 100644 index 0000000000..4bdb56b76e --- /dev/null +++ b/cairo_programs/print_feature/print_dict_array.cairo @@ -0,0 +1,34 @@ +%builtins range_check + +from starkware.cairo.common.dict_access import DictAccess +from starkware.cairo.common.default_dict import default_dict_new, default_dict_finalize +from starkware.cairo.common.dict import dict_write + +struct MyStruct { + a: felt, + b: felt, + c: felt, +} + +func main{range_check_ptr: felt}() { + let name = 0x4b4b5254; + let (dict_ptr) = default_dict_new(0); + let pointer_size = 3; + + tempvar one = new MyStruct(1,2,3); + dict_write{dict_ptr=dict_ptr}(0, cast(one, felt)); + tempvar two = new MyStruct(2,3,4); + dict_write{dict_ptr=dict_ptr}(1, cast(two, felt)); + tempvar three = new MyStruct(3,4,5); + dict_write{dict_ptr=dict_ptr}(2, cast(three, felt)); + tempvar four = new MyStruct(4,5,6); + dict_write{dict_ptr=dict_ptr}(3, cast(four, felt)); + %{ + print(bytes.fromhex(f"{ids.name:062x}").decode().replace('\x00','')) + data = __dict_manager.get_dict(ids.dict_ptr) + print( + {k: v if isinstance(v, int) else [memory[v + i] for i in range(ids.pointer_size)] for k, v in data.items()} + ) + %} + return(); +} diff --git a/cairo_programs/print_feature/print_dict_felt.cairo b/cairo_programs/print_feature/print_dict_felt.cairo new file mode 100644 index 0000000000..10c3344e0d --- /dev/null +++ b/cairo_programs/print_feature/print_dict_felt.cairo @@ -0,0 +1,24 @@ +%builtins range_check + +from starkware.cairo.common.dict_access import DictAccess +from starkware.cairo.common.default_dict import default_dict_new, default_dict_finalize +from starkware.cairo.common.dict import dict_write + +func main{range_check_ptr: felt}() { + let name = 0x4b4b5254; + let (dict_ptr) = default_dict_new(0); + let pointer_size = 1; + dict_write{dict_ptr=dict_ptr}(0, 1); + dict_write{dict_ptr=dict_ptr}(1, 2); + dict_write{dict_ptr=dict_ptr}(2, 3); + dict_write{dict_ptr=dict_ptr}(3, 4); + dict_write{dict_ptr=dict_ptr}(4, 5); + %{ + print(bytes.fromhex(f"{ids.name:062x}").decode().replace('\x00','')) + data = __dict_manager.get_dict(ids.dict_ptr) + print( + {k: v if isinstance(v, int) else [memory[v + i] for i in range(ids.pointer_size)] for k, v in data.items()} + ) + %} + return(); +} diff --git a/cairo_programs/print_feature/print_felt.cairo b/cairo_programs/print_feature/print_felt.cairo new file mode 100644 index 0000000000..383c6d6db2 --- /dev/null +++ b/cairo_programs/print_feature/print_felt.cairo @@ -0,0 +1,9 @@ +%builtins range_check + +func main{range_check_ptr: felt}() { + let x = 123; + %{ + print(ids.x) + %} + return(); +} diff --git a/fuzzer/Cargo.lock b/fuzzer/Cargo.lock index e59a962a4c..251fddc077 100644 --- a/fuzzer/Cargo.lock +++ b/fuzzer/Cargo.lock @@ -159,7 +159,7 @@ checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "cairo-vm" -version = "0.9.0" +version = "0.9.1" dependencies = [ "anyhow", "arbitrary", diff --git a/vm/Cargo.toml b/vm/Cargo.toml index e23c59d598..653001ddf2 100644 --- a/vm/Cargo.toml +++ b/vm/Cargo.toml @@ -31,10 +31,12 @@ cairo-1-hints = [ test_utils = [ "skip_next_instruction_hint", "hooks", + "print", ] # This feature will reference every test-oriented feature skip_next_instruction_hint = [] hooks = [] arbitrary = ["dep:arbitrary", "std", "starknet-types-core/arbitrary", "starknet-types-core/std"] +print = ["std"] [dependencies] mimalloc = { workspace = true, optional = true } diff --git a/vm/src/air_public_input.rs b/vm/src/air_public_input.rs index 6b36f0b0d3..f72fc7142b 100644 --- a/vm/src/air_public_input.rs +++ b/vm/src/air_public_input.rs @@ -16,10 +16,10 @@ use crate::{ #[derive(Serialize, Debug)] pub struct PublicMemoryEntry { - address: usize, + pub address: usize, #[serde(serialize_with = "mem_value_serde::serialize")] - value: Option, - page: usize, + pub value: Option, + pub page: usize, } mod mem_value_serde { @@ -40,9 +40,9 @@ mod mem_value_serde { } #[derive(Serialize, Debug)] -struct MemorySegmentAddresses { - begin_addr: usize, - stop_ptr: usize, +pub struct MemorySegmentAddresses { + pub begin_addr: usize, + pub stop_ptr: usize, } impl From<(usize, usize)> for MemorySegmentAddresses { @@ -57,12 +57,12 @@ impl From<(usize, usize)> for MemorySegmentAddresses { #[derive(Serialize, Debug)] pub struct PublicInput<'a> { - layout: &'a str, - rc_min: isize, - rc_max: isize, - n_steps: usize, - memory_segments: HashMap<&'a str, MemorySegmentAddresses>, - public_memory: Vec, + pub layout: &'a str, + pub rc_min: isize, + pub rc_max: isize, + pub n_steps: usize, + pub memory_segments: HashMap<&'a str, MemorySegmentAddresses>, + pub public_memory: Vec, #[serde(rename = "dynamic_params")] layout_params: Option<&'a CairoLayout>, } diff --git a/vm/src/hint_processor/builtin_hint_processor/builtin_hint_processor_definition.rs b/vm/src/hint_processor/builtin_hint_processor/builtin_hint_processor_definition.rs index 9df05edcb7..b23f58635b 100644 --- a/vm/src/hint_processor/builtin_hint_processor/builtin_hint_processor_definition.rs +++ b/vm/src/hint_processor/builtin_hint_processor/builtin_hint_processor_definition.rs @@ -116,6 +116,9 @@ use crate::{ #[cfg(feature = "skip_next_instruction_hint")] use crate::hint_processor::builtin_hint_processor::skip_next_instruction::skip_next_instruction; +#[cfg(feature = "print")] +use crate::hint_processor::builtin_hint_processor::print::{print_array, print_dict, print_felt}; + use super::blake2s_utils::example_blake2s_compress; pub struct HintProcessorData { @@ -815,6 +818,14 @@ impl HintProcessorLogic for BuiltinHintProcessor { hint_code::SPLIT_XX => split_xx(vm, &hint_data.ids_data, &hint_data.ap_tracking), #[cfg(feature = "skip_next_instruction_hint")] hint_code::SKIP_NEXT_INSTRUCTION => skip_next_instruction(vm), + #[cfg(feature = "print")] + hint_code::PRINT_FELT => print_felt(vm, &hint_data.ids_data, &hint_data.ap_tracking), + #[cfg(feature = "print")] + hint_code::PRINT_ARR => print_array(vm, &hint_data.ids_data, &hint_data.ap_tracking), + #[cfg(feature = "print")] + hint_code::PRINT_DICT => { + print_dict(vm, exec_scopes, &hint_data.ids_data, &hint_data.ap_tracking) + } code => Err(HintError::UnknownHint(code.to_string().into_boxed_str())), } } diff --git a/vm/src/hint_processor/builtin_hint_processor/hint_code.rs b/vm/src/hint_processor/builtin_hint_processor/hint_code.rs index 2b55c91f30..77365943f8 100644 --- a/vm/src/hint_processor/builtin_hint_processor/hint_code.rs +++ b/vm/src/hint_processor/builtin_hint_processor/hint_code.rs @@ -1409,3 +1409,15 @@ ids.x.low = x & ((1<<128)-1) ids.x.high = x >> 128"; #[cfg(feature = "skip_next_instruction_hint")] pub const SKIP_NEXT_INSTRUCTION: &str = "skip_next_instruction()"; + +pub const PRINT_FELT: &str = "print(ids.x)"; + +pub const PRINT_ARR: &str = r#"print(bytes.fromhex(f"{ids.name:062x}").decode().replace('\x00','')) +arr = [memory[ids.arr + i] for i in range(ids.arr_len)] +print(arr)"#; + +pub const PRINT_DICT: &str = r#"print(bytes.fromhex(f"{ids.name:062x}").decode().replace('\x00','')) +data = __dict_manager.get_dict(ids.dict_ptr) +print( + {k: v if isinstance(v, int) else [memory[v + i] for i in range(ids.pointer_size)] for k, v in data.items()} +)"#; diff --git a/vm/src/hint_processor/builtin_hint_processor/mod.rs b/vm/src/hint_processor/builtin_hint_processor/mod.rs index 0a3f067b5b..8236f8a866 100644 --- a/vm/src/hint_processor/builtin_hint_processor/mod.rs +++ b/vm/src/hint_processor/builtin_hint_processor/mod.rs @@ -18,6 +18,8 @@ pub mod memcpy_hint_utils; pub mod memset_utils; pub mod poseidon_utils; pub mod pow_utils; +#[cfg(feature = "print")] +pub mod print; pub mod secp; pub mod segments; pub mod set; diff --git a/vm/src/hint_processor/builtin_hint_processor/print.rs b/vm/src/hint_processor/builtin_hint_processor/print.rs new file mode 100644 index 0000000000..a73f8e8950 --- /dev/null +++ b/vm/src/hint_processor/builtin_hint_processor/print.rs @@ -0,0 +1,125 @@ +use core::fmt::{Debug, Formatter}; + +use crate::Felt252; +use num_traits::ToPrimitive; + +use crate::hint_processor::builtin_hint_processor::dict_manager::Dictionary; +use crate::hint_processor::builtin_hint_processor::hint_utils::{ + get_integer_from_var_name, get_ptr_from_var_name, +}; +use crate::serde::deserialize_program::ApTracking; +use crate::stdlib::collections::HashMap; + +use crate::types::exec_scope::ExecutionScopes; +use crate::types::relocatable::MaybeRelocatable; +use crate::utils::felt_to_bigint; +use crate::vm::errors::hint_errors::HintError; +use crate::{ + hint_processor::hint_processor_definition::HintReference, vm::vm_core::VirtualMachine, +}; + +pub fn print_felt( + vm: &VirtualMachine, + ids_data: &HashMap, + ap_tracking: &ApTracking, +) -> Result<(), HintError> { + let val = get_integer_from_var_name("x", vm, ids_data, ap_tracking)?; + println!("{val}"); + Ok(()) +} + +fn print_name( + vm: &VirtualMachine, + ids_data: &HashMap, + ap_tracking: &ApTracking, +) -> Result<(), HintError> { + let name = get_integer_from_var_name("name", vm, ids_data, ap_tracking)?; + let name = String::from_utf8(felt_to_bigint(*name.as_ref()).to_signed_bytes_be()) + .map_err(|err| HintError::CustomHint(err.to_string().into_boxed_str()))?; + println!("{name}"); + Ok(()) +} + +pub fn print_array( + vm: &VirtualMachine, + ids_data: &HashMap, + ap_tracking: &ApTracking, +) -> Result<(), HintError> { + print_name(vm, ids_data, ap_tracking)?; + + let mut acc = Vec::new(); + let arr = get_ptr_from_var_name("arr", vm, ids_data, ap_tracking)?; + let arr_len = get_integer_from_var_name("arr_len", vm, ids_data, ap_tracking)?; + let arr_len = arr_len.to_usize().ok_or_else(|| { + HintError::CustomHint(String::from("arr_len must be a positive integer").into_boxed_str()) + })?; + for i in 0..arr_len { + let val = vm.get_integer((arr + i)?)?; + acc.push(val); + } + println!("{:?}", acc); + Ok(()) +} + +enum DictValue { + Int(Felt252), + Relocatable(Vec), +} + +impl Debug for DictValue { + fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result { + match self { + Self::Int(int) => write!(f, "{:?}", int), + Self::Relocatable(relocatable) => write!(f, "{:?}", relocatable), + } + } +} + +pub fn print_dict( + vm: &VirtualMachine, + exec_scopes: &ExecutionScopes, + ids_data: &HashMap, + ap_tracking: &ApTracking, +) -> Result<(), HintError> { + print_name(vm, ids_data, ap_tracking)?; + + let dict_ptr = get_ptr_from_var_name("dict_ptr", vm, ids_data, ap_tracking)?; + let pointer_size = get_integer_from_var_name("pointer_size", vm, ids_data, ap_tracking)?; + let pointer_size = pointer_size.to_usize().ok_or_else(|| { + HintError::CustomHint( + String::from("pointer_size must be a positive integer").into_boxed_str(), + ) + })?; + + let dict_manager = exec_scopes.get_dict_manager()?; + let dict_manager = dict_manager.borrow(); + let tracker = dict_manager.get_tracker(dict_ptr)?; + + let map = match &tracker.data { + Dictionary::SimpleDictionary(dict) => dict, + Dictionary::DefaultDictionary { dict, .. } => dict, + }; + + let mut acc = HashMap::new(); + for (k, v) in map.iter() { + let key = k.get_int_ref().ok_or_else(|| { + HintError::CustomHint(String::from("Expected felt key for dict").into_boxed_str()) + })?; + match v { + MaybeRelocatable::Int(value) => { + acc.insert(key, DictValue::Int(*value)); + } + MaybeRelocatable::RelocatableValue(val) => { + let mut structure = Vec::new(); + for i in 0..pointer_size { + let val = *vm.get_integer((*val + i)?)?.as_ref(); + structure.push(val); + } + acc.insert(key, DictValue::Relocatable(structure)); + } + } + } + + println!("{:?}", acc); + Ok(()) +} diff --git a/vm/src/tests/cairo_run_test.rs b/vm/src/tests/cairo_run_test.rs index 715a087f45..fdcbe16f60 100644 --- a/vm/src/tests/cairo_run_test.rs +++ b/vm/src/tests/cairo_run_test.rs @@ -1032,3 +1032,32 @@ fn divmod_igcdex_not_one() { let error_msg = "Operation failed: divmod(1, 340282366920938463463374607431768211457, 340282366920938463463374607431768211457), igcdex(340282366920938463463374607431768211457, 340282366920938463463374607431768211457) != 1"; run_program_with_error(program_data.as_slice(), error_msg); } + +#[test] +#[cfg(feature = "print")] +fn cairo_run_print_felt() { + let program_data = include_bytes!("../../../cairo_programs/print_feature/print_felt.json"); + run_program_simple(program_data); +} + +#[test] +#[cfg(feature = "print")] +fn cairo_run_print_array() { + let program_data = include_bytes!("../../../cairo_programs/print_feature/print_array.json"); + run_program_simple(program_data); +} + +#[test] +#[cfg(feature = "print")] +fn cairo_run_print_dict_felt() { + let program_data = include_bytes!("../../../cairo_programs/print_feature/print_dict_felt.json"); + run_program_simple_with_memory_holes(program_data, 5); +} + +#[test] +#[cfg(feature = "print")] +fn cairo_run_print_dict_array() { + let program_data = + include_bytes!("../../../cairo_programs/print_feature/print_dict_array.json"); + run_program_simple_with_memory_holes(program_data, 4); +}