From 88a50bb1ae9ee61aa53c830e122dffdb59d7044c Mon Sep 17 00:00:00 2001 From: Ara Adkins Date: Wed, 18 Sep 2024 09:17:50 -0600 Subject: [PATCH] Add linting and checks before commit --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/ISSUE_TEMPLATE/feature.md | 2 +- .github/ISSUE_TEMPLATE/performance.md | 2 +- .github/ISSUE_TEMPLATE/task.md | 2 +- .github/workflows/ci.yml | 25 +- .gitignore | 5 + .husky/pre-commit | 1 + .prettierignore | 3 + .prettierrc.json | 6 + Cargo.lock | 1783 +++++++++++++++++++++++-- Cargo.toml | 20 +- README.md | 8 +- docs/CONTRIBUTING.md | 65 +- docs/Getting LLVM IR Output.md | 23 + flake.lock | 4 +- flake.nix | 6 +- main | Bin 0 -> 459400 bytes package.json | 21 + src/bin/main.rs | 10 + src/error/llvm_compile.rs | 12 + src/error/mod.rs | 33 + src/lib.rs | 23 + src/main.rs | 6 - 23 files changed, 1922 insertions(+), 140 deletions(-) create mode 100755 .husky/pre-commit create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 docs/Getting LLVM IR Output.md create mode 100755 main create mode 100644 package.json create mode 100644 src/bin/main.rs create mode 100644 src/error/llvm_compile.rs create mode 100644 src/error/mod.rs create mode 100644 src/lib.rs delete mode 100644 src/main.rs diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 2fd219d..a64ff2e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,7 +3,7 @@ name: Bug report about: Found something wrong? Let us know. title: "[BUG] " labels: bug -assignees: '' +assignees: "" --- # Describe the Bug diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md index cf73ab1..d64c211 100644 --- a/.github/ISSUE_TEMPLATE/feature.md +++ b/.github/ISSUE_TEMPLATE/feature.md @@ -3,7 +3,7 @@ name: Feature about: A new feature to be added. title: "[FEAT] " labels: enhancement -assignees: '' +assignees: "" --- # Description diff --git a/.github/ISSUE_TEMPLATE/performance.md b/.github/ISSUE_TEMPLATE/performance.md index 5a5657e..24353ba 100644 --- a/.github/ISSUE_TEMPLATE/performance.md +++ b/.github/ISSUE_TEMPLATE/performance.md @@ -3,7 +3,7 @@ name: Performance about: An opportunity for performance improvement or other performance-related work. title: "[PERF] " labels: enhancement -assignees: '' +assignees: "" --- # Description diff --git a/.github/ISSUE_TEMPLATE/task.md b/.github/ISSUE_TEMPLATE/task.md index 37b3994..331c504 100644 --- a/.github/ISSUE_TEMPLATE/task.md +++ b/.github/ISSUE_TEMPLATE/task.md @@ -3,7 +3,7 @@ name: Task about: A development task to be done. title: "[TASK] " labels: enhancement -assignees: '' +assignees: "" --- # Description diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f1a0a4..f9d2720 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,28 +2,27 @@ name: CI on: push: - branches: [ "main" ] + branches: ["main"] pull_request: - branches: [ "*" ] + branches: ["*"] # Environment variables that will be set on all runners env: DEV_SHELL_LINUX: "nix --store ~/nix_store develop '.#ci'" DEV_SHELL_MACOS: "nix develop '.#ci'" - CARGO_TERM_COLOR: always # Always colour Cargo's output. - CARGO_INCREMENTAL: 0 # Always run without incremental builds on CI. + CARGO_TERM_COLOR: always # Always colour Cargo's output. + CARGO_INCREMENTAL: 0 # Always run without incremental builds on CI. CARGO_PROFILE_DEV_DEBUG: 0 # Don't embed debug info even though the build is a dev build. # Configuration for individual jobs jobs: - # This job is responsible for running the unit and integration tests test: name: "Test" strategy: fail-fast: false matrix: - os: [ "ubuntu-latest", "macos-latest" ] + os: ["ubuntu-latest", "macos-latest"] runs-on: ${{ matrix.os }} steps: - name: Checkout Code @@ -72,7 +71,7 @@ jobs: # This job runs the linter. lint: - name: "Lint" + name: "Lint Code" runs-on: "ubuntu-latest" steps: - name: Checkout Code @@ -102,9 +101,9 @@ jobs: - name: Lint Code shell: bash run: | - ${{ env.DEV_SHELL_LINUX }} --command cargo clippy --all-targets + ${{ env.DEV_SHELL_LINUX }} --command cargo clippy --all-targets --all-features - # This job checks the code formatting. + # This job checks the formatting of the code and other artifacts. formatting: name: "Check Formatting" runs-on: "ubuntu-latest" @@ -137,3 +136,11 @@ jobs: shell: bash run: | ${{ env.DEV_SHELL_LINUX }} --command cargo fmt --all -- --check + - name: Install Node Deps + shell: bash + run: | + ${{ env.DEV_SHELL_LINUX }} --command npm install + - name: Lint Documentation + shell: bash + run: | + ${{ env.DEV_SHELL_LINUX}} --command npx prettier --check . diff --git a/.gitignore b/.gitignore index 8460752..c4aac5b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,9 @@ # Tooling .idea/ +node_modules/ result + +# Linting and Formatting +package-lock.json +.husky/_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..f1f12b5 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +cargo clippy --all-targets --all-features -- -D warnings && cargo +nightly fmt && npx lint-staged diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..4f9ee04 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +# Generated Lockfiles +Cargo.lock +package-lock.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..b74084c --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "printWidth": 100, + "proseWrap": "always", + "tabWidth": 2, + "plugins": ["prettier-plugin-toml"] +} diff --git a/Cargo.lock b/Cargo.lock index a4e6426..04d5643 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,33 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + [[package]] name = "anstream" version = "0.6.15" @@ -38,7 +65,7 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -48,7 +75,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -67,6 +94,390 @@ dependencies = [ "yansi", ] +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bstr" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "cairo-lang-compiler" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5852668d1c6966b34d6e4fe249732769ab9cb2012c201e3889d8119f206760a0" +dependencies = [ + "anyhow", + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-lowering", + "cairo-lang-parser", + "cairo-lang-project", + "cairo-lang-semantic", + "cairo-lang-sierra", + "cairo-lang-sierra-generator", + "cairo-lang-syntax", + "cairo-lang-utils", + "indoc", + "rayon", + "rust-analyzer-salsa", + "semver", + "smol_str", + "thiserror", +] + +[[package]] +name = "cairo-lang-debug" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0644fab571f598547993936918c85f0e89b0bbc15140ca3ea723bff376be07d" +dependencies = [ + "cairo-lang-utils", +] + +[[package]] +name = "cairo-lang-defs" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f5f437d75ac25644880458effde562edcac45a888d27f2e497d30c6450fa97d" +dependencies = [ + "cairo-lang-debug", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-parser", + "cairo-lang-syntax", + "cairo-lang-utils", + "itertools 0.12.1", + "rust-analyzer-salsa", + "smol_str", +] + +[[package]] +name = "cairo-lang-diagnostics" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ec5b44d3eaf50e28e068d163e56b9effcea6afe3625c32dd96418d2d4ebc34c" +dependencies = [ + "cairo-lang-debug", + "cairo-lang-filesystem", + "cairo-lang-utils", + "itertools 0.12.1", +] + +[[package]] +name = "cairo-lang-eq-solver" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0cd844e568f51e39729e8ac18bd27ada2e2b6dc9138f8c81adad48456480681" +dependencies = [ + "cairo-lang-utils", + "good_lp", +] + +[[package]] +name = "cairo-lang-filesystem" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323a2385e000589f7591f8a46599b4a462db6e36e5935bad3bceddcc1a1608e1" +dependencies = [ + "cairo-lang-debug", + "cairo-lang-utils", + "path-clean", + "rust-analyzer-salsa", + "semver", + "serde", + "smol_str", +] + +[[package]] +name = "cairo-lang-formatter" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cf9cf637e12d41260dc59f3d988c76a6347424913ac8b6b8449ff3e79b59750" +dependencies = [ + "anyhow", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-parser", + "cairo-lang-syntax", + "cairo-lang-utils", + "diffy", + "ignore", + "itertools 0.12.1", + "rust-analyzer-salsa", + "serde", + "smol_str", + "thiserror", +] + +[[package]] +name = "cairo-lang-lowering" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d71bc5b1f19a00eb662c2cac33259b16b9cdbf9c005047aca0d538c13936407" +dependencies = [ + "cairo-lang-debug", + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-parser", + "cairo-lang-proc-macros", + "cairo-lang-semantic", + "cairo-lang-syntax", + "cairo-lang-utils", + "id-arena", + "itertools 0.12.1", + "log", + "num-bigint", + "num-traits 0.2.19", + "rust-analyzer-salsa", + "smol_str", +] + +[[package]] +name = "cairo-lang-parser" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d939d258e26ace0f3cb1e50338ae18981a7505e3c20eabd24a62d70ee862d6c" +dependencies = [ + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-syntax", + "cairo-lang-syntax-codegen", + "cairo-lang-utils", + "colored", + "itertools 0.12.1", + "num-bigint", + "num-traits 0.2.19", + "rust-analyzer-salsa", + "smol_str", + "unescaper", +] + +[[package]] +name = "cairo-lang-plugins" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67a553a6d2d2b54264e77e3c8cb5bc866b40b32d5e2144a58b74c559c7e289f" +dependencies = [ + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-parser", + "cairo-lang-syntax", + "cairo-lang-utils", + "indent", + "indoc", + "itertools 0.12.1", + "rust-analyzer-salsa", + "smol_str", +] + +[[package]] +name = "cairo-lang-proc-macros" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33b5f4502b7efde6ac07fd5468f6dae15d88760aeece3d57a7bc4c224ba693e" +dependencies = [ + "cairo-lang-debug", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "cairo-lang-project" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63d6a3cc86a79a29978acaaf6f94738c5487e265247fe06c7bf359645d8c200" +dependencies = [ + "cairo-lang-filesystem", + "cairo-lang-utils", + "serde", + "smol_str", + "thiserror", + "toml", +] + +[[package]] +name = "cairo-lang-semantic" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00c284031fd14796dad91483c3039d7929f8440e1e9e334017744b1d22df5aa8" +dependencies = [ + "cairo-lang-debug", + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-parser", + "cairo-lang-plugins", + "cairo-lang-proc-macros", + "cairo-lang-syntax", + "cairo-lang-test-utils", + "cairo-lang-utils", + "id-arena", + "indoc", + "itertools 0.12.1", + "num-bigint", + "num-traits 0.2.19", + "rust-analyzer-salsa", + "smol_str", + "toml", +] + +[[package]] +name = "cairo-lang-sierra" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891488c1a3184ce91679f5bdb63015a1d24769a48bd07e5d51a1779d0031dfbe" +dependencies = [ + "anyhow", + "cairo-lang-utils", + "const-fnv1a-hash", + "convert_case", + "derivative", + "itertools 0.12.1", + "lalrpop", + "lalrpop-util", + "num-bigint", + "num-integer", + "num-traits 0.2.19", + "regex", + "rust-analyzer-salsa", + "serde", + "serde_json", + "sha3", + "smol_str", + "starknet-types-core", + "thiserror", +] + +[[package]] +name = "cairo-lang-sierra-generator" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5cc616e8df44c4d685fe3c5f81f35ebbda57225098b35cea8602457c45c9e96" +dependencies = [ + "cairo-lang-debug", + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-lowering", + "cairo-lang-parser", + "cairo-lang-semantic", + "cairo-lang-sierra", + "cairo-lang-syntax", + "cairo-lang-utils", + "itertools 0.12.1", + "num-traits 0.2.19", + "rust-analyzer-salsa", + "serde", + "serde_json", + "smol_str", +] + +[[package]] +name = "cairo-lang-syntax" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7db0776c3d06cea65d7afe7a3c7685f6867eb6d951cf505caf35abfd1746773b" +dependencies = [ + "cairo-lang-debug", + "cairo-lang-filesystem", + "cairo-lang-utils", + "num-bigint", + "num-traits 0.2.19", + "rust-analyzer-salsa", + "smol_str", + "unescaper", +] + +[[package]] +name = "cairo-lang-syntax-codegen" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce0f7fa01c26cc731bc1d6350ac02fae91a68b5fdf60e684f991e861715adc4" +dependencies = [ + "genco", + "xshell", +] + +[[package]] +name = "cairo-lang-test-utils" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630a070a69c387eee9c0eda65e4f2508d129d4fbe081091077e661020ab95637" +dependencies = [ + "cairo-lang-formatter", + "cairo-lang-utils", + "colored", + "log", + "pretty_assertions", +] + +[[package]] +name = "cairo-lang-utils" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73104609a7d865e4cd1de9cbf4e750683d076b6d0233bf81be511df274a26916" +dependencies = [ + "hashbrown 0.14.5", + "indexmap 2.5.0", + "itertools 0.12.1", + "num-bigint", + "num-traits 0.2.19", + "schemars", + "serde", +] + [[package]] name = "cc" version = "1.1.15" @@ -115,6 +526,144 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "const-fnv1a-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "diffy" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e616e59155c92257e84970156f506287853355f58cd4a6eb167385722c32b790" +dependencies = [ + "nu-ansi-term", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[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-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + [[package]] name = "either" version = "1.13.0" @@ -122,145 +671,940 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] -name = "inkwell" -version = "0.5.0" +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "genco" +version = "0.17.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afac3cbb14db69ac9fef9cdb60d8a87e39a7a527f85a81a923436efa40ad42c6" +dependencies = [ + "genco-macros", + "relative-path", + "smallvec", +] + +[[package]] +name = "genco-macros" +version = "0.17.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "553630feadf7b76442b0849fd25fdf89b860d933623aec9693fed19af0400c78" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "globset" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "good_lp" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3198bd13dea84c76a64621d6ee8ee26a4960a9a0d538eca95ca8f1320a469ac9" +dependencies = [ + "fnv", + "minilp", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "id-arena" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" + +[[package]] +name = "ignore" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "indent" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f1a0777d972970f204fdf8ef319f1f4f8459131636d7e3c96c5d59570d0fa6" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + +[[package]] +name = "inkwell" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40fb405537710d51f6bdbc8471365ddd4cd6d3a3c3ad6e0c8291691031ba94b2" +dependencies = [ + "either", + "inkwell_internals", + "libc", + "llvm-sys", + "once_cell", + "thiserror", +] + +[[package]] +name = "inkwell_internals" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd28cfd4cfba665d47d31c08a6ba637eed16770abca2eccbbc3ca831fef1e44" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph", + "pico-args", + "regex", + "regex-syntax", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fb5d4f22241504f7c7b8d2c3a7d7835d7c07117f10bff2a7d96a9ef6ef217c3" +dependencies = [ + "lambdaworks-math", + "serde", + "sha2", + "sha3", +] + +[[package]] +name = "lambdaworks-math" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "358e172628e713b80a530a59654154bfc45783a6ed70ea284839800cebdf8f97" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.158" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags", + "libc", +] + +[[package]] +name = "llvm-sys" +version = "180.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778fa5fa02e32728e718f11eec147e6f134137399ab02fd2c13d32476337affa" +dependencies = [ + "anyhow", + "cc", + "lazy_static", + "libc", + "regex-lite", + "semver", +] + +[[package]] +name = "llvm-to-cairo" +version = "0.1.0" +dependencies = [ + "anyhow", + "ariadne", + "cairo-lang-compiler", + "cairo-lang-debug", + "cairo-lang-diagnostics", + "cairo-lang-eq-solver", + "cairo-lang-lowering", + "cairo-lang-semantic", + "cairo-lang-utils", + "clap", + "inkwell", + "itertools 0.13.0", + "miette", + "thiserror", + "tracing", +] + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "matrixmultiply" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916806ba0031cd542105d916a97c8572e1fa6dd79c9c51e7eb43a09ec2dd84c1" +dependencies = [ + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "miette" +version = "7.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4edc8853320c2a0dab800fbda86253c8938f6ea88510dc92c5f1ed20e794afc1" +dependencies = [ + "cfg-if", + "miette-derive", + "thiserror", + "unicode-width", +] + +[[package]] +name = "miette-derive" +version = "7.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "minilp" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82a7750a9e5076c660b7bec5e6457b4dbff402b9863c8d112891434e18fd5385" +dependencies = [ + "log", + "sprs", +] + +[[package]] +name = "ndarray" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac06db03ec2f46ee0ecdca1a1c34a99c0d188a0d83439b84bf0cb4b386e4ab09" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits 0.2.19", + "rawpointer", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits 0.2.19", + "serde", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits 0.2.19", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits 0.2.19", +] + +[[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", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "oorandom" +version = "11.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "path-clean" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.5.0", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "pretty_assertions" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "relative-path" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" + +[[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.5.0", + "lock_api", + "oorandom", + "parking_lot", + "rust-analyzer-salsa-macros", + "rustc-hash", + "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", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40fb405537710d51f6bdbc8471365ddd4cd6d3a3c3ad6e0c8291691031ba94b2" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ - "either", - "inkwell_internals", - "libc", - "llvm-sys", - "once_cell", - "thiserror", + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", ] [[package]] -name = "inkwell_internals" -version = "0.10.0" +name = "schemars_derive" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd28cfd4cfba665d47d31c08a6ba637eed16770abca2eccbbc3ca831fef1e44" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", - "syn", + "serde_derive_internals", + "syn 2.0.77", ] [[package]] -name = "is_terminal_polyfill" -version = "1.70.1" +name = "scopeguard" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "lazy_static" -version = "1.5.0" +name = "semver" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] [[package]] -name = "libc" -version = "0.2.158" +name = "serde" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] [[package]] -name = "llvm-sys" -version = "180.0.0" +name = "serde_derive" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778fa5fa02e32728e718f11eec147e6f134137399ab02fd2c13d32476337affa" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ - "anyhow", - "cc", - "lazy_static", - "libc", - "regex-lite", - "semver", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "llvm-to-cairo" -version = "0.1.0" +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ - "anyhow", - "ariadne", - "clap", - "inkwell", - "miette", - "thiserror", - "tracing", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "miette" -version = "7.2.0" +name = "serde_json" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4edc8853320c2a0dab800fbda86253c8938f6ea88510dc92c5f1ed20e794afc1" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", - "miette-derive", - "thiserror", - "unicode-width", + "cpufeatures", + "digest", ] [[package]] -name = "miette-derive" -version = "7.2.0" +name = "sha3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "proc-macro2", - "quote", - "syn", + "digest", + "keccak", ] [[package]] -name = "once_cell" -version = "1.19.0" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] -name = "pin-project-lite" -version = "0.2.14" +name = "siphasher" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] -name = "proc-macro2" -version = "1.0.86" +name = "smallvec" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" dependencies = [ - "unicode-ident", + "serde", ] [[package]] -name = "quote" -version = "1.0.37" +name = "sprs" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "ec63571489873d4506683915840eeb1bb16b3198ee4894cc6f2fe3013d505e56" dependencies = [ - "proc-macro2", + "ndarray", + "num-complex", + "num-traits 0.1.43", ] [[package]] -name = "regex-lite" -version = "0.1.6" +name = "stable_deref_trait" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] -name = "semver" -version = "1.0.23" +name = "starknet-types-core" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "ce6bacf0ba19bc721e518bc4bf389ff13daa8a7c5db5fd320600473b8aa9fcbd" +dependencies = [ + "lambdaworks-crypto", + "lambdaworks-math", + "lazy_static", + "num-bigint", + "num-integer", + "num-traits 0.2.19", + "serde", +] [[package]] -name = "shlex" -version = "1.3.0" +name = "string_cache" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", +] [[package]] name = "strsim" @@ -268,6 +1612,17 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.77" @@ -279,6 +1634,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + [[package]] name = "thiserror" version = "1.0.63" @@ -296,7 +1662,50 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.77", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b072cee73c449a636ffd6f32bd8de3a9f7119139aff882f44943ce2986dc5cf" +dependencies = [ + "indexmap 2.5.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", ] [[package]] @@ -318,7 +1727,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.77", ] [[package]] @@ -330,31 +1739,145 @@ dependencies = [ "once_cell", ] +[[package]] +name = "triomphe" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369" +dependencies = [ + "serde", + "stable_deref_trait", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unescaper" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c878a167baa8afd137494101a688ef8c67125089ff2249284bd2b5f9bfedb815" +dependencies = [ + "thiserror", +] + [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + [[package]] name = "unicode-width" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +[[package]] +name = "unicode-xid" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" + [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -363,28 +1886,46 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -397,32 +1938,100 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] + +[[package]] +name = "xshell" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db0ab86eae739efd1b054a8d3d16041914030ac4e01cd1dca0cf252fd8b6437" +dependencies = [ + "xshell-macros", +] + +[[package]] +name = "xshell-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d422e8e38ec76e2f06ee439ccc765e9c6a9638b9e7c9f2e8255e4d41e8bd852" + [[package]] name = "yansi" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] diff --git a/Cargo.toml b/Cargo.toml index 15c4425..c8653d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,12 +11,20 @@ keywords = ["compiler", "starknet", "starkware"] categories = ["compilers", "virtualization", "cryptography::cryptocurrencies"] edition = "2021" -rust-version = "1.80.1" +rust-version = "1.81.0" [dependencies] ariadne = "0.4.1" +cairo-lang-compiler = "2.8.2" +cairo-lang-debug = "2.8.2" +cairo-lang-diagnostics = "2.8.2" +cairo-lang-eq-solver = "2.8.2" +cairo-lang-lowering = "2.8.2" +cairo-lang-semantic = "2.8.2" +cairo-lang-utils = "2.8.2" clap = "4.5.16" inkwell = { version = "0.5.0", features = ["llvm18-0"] } +itertools = "0.13.0" miette = "7.2.0" thiserror = "1.0.63" tracing = "0.1.40" @@ -25,6 +33,10 @@ tracing = "0.1.40" anyhow = "1.0.86" [profile.release] -debug = true # Include full debug information in release builds. -overflow-checks = true # Keep overflow checks in production builds. -lto = "thin" # Thin LTO performs cross-crate LTO while not bloating the build time too much. +debug = true # Include full debug information in release builds. +overflow-checks = true # Keep overflow checks in production builds. +lto = "thin" # Thin LTO performs cheaper cross-crate LTO. + +[[bin]] +name = "ltc" # Named for Llvm-To-Cairo +path = "src/bin/main.rs" diff --git a/README.md b/README.md index f64b453..4f0f143 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,12 @@ This repository contains the efforts to enable compilation of LLVM bytecode to r goals of this project are threefold: 1. **Provable Rust Execution:** To provide the ability to prove the execution of LLVM bytecode using - Starknet's proving infrastructure, thereby allowing verification of said execution. + Starknet's proving infrastructure, thereby allowing verification of said execution. 2. **Writing Contracts in LLVM Languages:** To provide the ability to write contracts for execution on Starknet using any language that compiles to LLVM (while recognizing that this will require a small per-language effort). 3. **Using Foreign Libraries from Cairo:** There exist a wealth of useful cryptographic libraries in - languages such as Rust that compile to LLVM. Rather than requiring users to reimplement them in + languages such as Rust that compile to LLVM. Rather than requiring users to reimplement them in [Cairo](https://www.cairo-lang.org), this effort would allow them to be exposed directly. The initial efforts for this project are focusing on using [Rust](https://rust-lang.org) as the @@ -23,8 +23,8 @@ the language-specific libraries. As there is a significant mismatch between the computational model expected by LLVM, and the Cairo model of execution, we take a multi-layered approach. -- **Compilation:** Where there is a direct correspondence between LLVM and Cairo's semantics, we can - perform direct compilation, generating Cairo's `FlatLowered` IR from LLVM IR. +- **Compilation:** Where there is a direct correspondence between LLVM and Cairo's semantics, we can + perform direct compilation, generating Cairo's `FlatLowered` IR from LLVM IR. - **Polyfills:** Where there is a mismatch, we have to implement the mismatched operation as an _emulation_ or a _polyfill_. These will implement the expected semantics (often given by [compiler-rt](https://compiler-rt.llvm.org)) as Cairo code that can then be called into by the diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 6598be7..b593d16 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -1,23 +1,23 @@ # Contributing -This document exists as a brief introduction to how you can contribute to the LLVM to Cairo -project. It includes a guide to [getting started](#setting-up-for-development) and -[contributing to `main`](#getting-your-work-on-main). +This document exists as a brief introduction to how you can contribute to the LLVM to Cairo project. +It includes a guide to [getting started](#setting-up-for-development) and +[contributing to `main`](#getting-your-work-on-main). -This repository is written in [Rust](https://www.rust-lang.org), a high-performance and -low-level language with a smart compiler that helps to write reliable and fast software. If you -haven't worked with Rust before, take a look at the ["New to Rust?"](#new-to-rust) section below! +This repository is written in [Rust](https://www.rust-lang.org), a high-performance and low-level +language with a smart compiler that helps to write reliable and fast software. If you haven't worked +with Rust before, take a look at the ["New to Rust?"](#new-to-rust) section below! ## Setting Up for Development Unfortunately the complexity of having LLVM available for building this project means that we have to be a bit careful with our environment setup. We recommend using [lix](https://lix.systems) to -work with the flake configuration included in the repository. +work with the flake configuration included in the repository. We assume that you are either running on linux or macOS at this stage. 1. Install [lix](https://lix.systems/install/) using the lix installer—you will want to say "yes" - when asked if you want to enable flakes—and make sure that you can successfully run the `nix` + when asked if you want to enable flakes—and make sure that you can successfully run the `nix` command. ```shell @@ -37,14 +37,28 @@ We assume that you are either running on linux or macOS at this stage. ```shell git clone git@github.com:reilabs/llvm-to-cairo.git ``` - -3. Enter the cloned directory (`cd llvm-to-cairo`) and launch a development shell using + +3. Enter the cloned directory (`cd llvm-to-cairo`) and launch a development shell using `nix develop`. This will launch into your default shell, but you can override this by running `nix develop ".#ci" --command ` to use the CI dev shell instead. 4. Within this shell you are able to run Cargo commands such as `cargo build`, which will build the project, or `cargo test` which will run the tests. - + +### Pre-Commit Hooks + +In order to ensure uniform formatting we use a series of precommit hooks that run things like +linters and other checks before things get committed. + +1. **Set Up:** Run `npm install`. This will install and set up the hooks that run before every + commit. +2. **Test:** When you run `git commit`, you will see a progress indicator show up that gives insight + into the linting and formatting processes that are running. If any of these fail, then + +In order to run these hooks you will either need to be within the `nix develop` shell, which +provides all of these, or to have the following installed and available on your path: `nodejs`, +`npm` and `npx`, and both `rustfmt` and `clippy`. + ### Setting Up Your IDE Due to the complexities of getting some IDEs to work with nix-based Rust projects, we recommend @@ -53,20 +67,27 @@ using a system-wide installation of the correct toolchain (as specified in provided by `nix develop`, as this will give it the correct environment variables to find the LLVM install. -We cannot provide instructions for _all_ IDEs, but for those using RustRover you will need to go to -the top-level "Rust" section in settings, and point both "Toolchain location" and "Standard library" -to a system-level install of both. For example: +We cannot provide instructions for all IDEs out of the box, but please feel free to add instructions +for your own IDE or editor here if you are working on the project. + +#### RustRover + +For those using RustRover you will need to go to the top-level "Rust" section in settings, and point +both "Toolchain location" and "Standard library" to a **system-level install** of both. For example: ```text Toolchain Location = /Users//.rustup/toolchains/stable-platform-here/bin Standard library = /Users//.rustup/toolchains/stable-platform-here/lib/rustlib/src/rust ``` +Specifically do not point to the locations provided by `nix` for the development shell, as RustRover +seems to have issues with these. + ## Getting Your Work on `main` For contributions this repository works on a -[Pull Request](https://github.com/reilabs/llvm-to-cairo/pulls) and subsequent review -model, supported by CI to check that things avoid being broken. The process works as follows: +[Pull Request](https://github.com/reilabs/llvm-to-cairo/pulls) and subsequent review model, +supported by CI to check that things avoid being broken. The process works as follows: 1. If necessary, you fork the repository, but if you have access please create a branch. 2. You make your changes on that branch. @@ -77,21 +98,21 @@ model, supported by CI to check that things avoid being broken. The process work ## New to Rust? If you are new to working with Rust, a great place to start is the official -[Rust Book](https://doc.rust-lang.org/book/). It gives a great overview of the language and -general style. It's also worth getting familiar with the following tools: +[Rust Book](https://doc.rust-lang.org/book/). It gives a great overview of the language and general +style. It's also worth getting familiar with the following tools: - [Rustup](https://rustup.rs), the Rust toolchain installer. - [Cargo](https://doc.rust-lang.org/cargo/), the Rust build tool and package manager. - [docs.rs](https://docs.rs), a site providing up-to-date crate (package) documentation for all packages published to [crates.io](https://crates.io), the official package registry. -- [Rustdoc](https://doc.rust-lang.org/rustdoc/index.html), the ecosystem's official - documentation tool. +- [Rustdoc](https://doc.rust-lang.org/rustdoc/index.html), the ecosystem's official documentation + tool. In terms of development tooling, there are two major options in this space. - [Rust Analyzer](https://rust-analyzer.github.io) is the official implementation of the - [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) for Rust, - and will work with any LSP compatible host. + [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) for Rust, and + will work with any LSP compatible host. - [RustRover](https://www.jetbrains.com/rust/) is the fully-featured JetBrains IDE for working with Rust in single- and multi-language projects. The Rust support plugin can also run in other JetBrains IDEs if needed. diff --git a/docs/Getting LLVM IR Output.md b/docs/Getting LLVM IR Output.md new file mode 100644 index 0000000..a39d03c --- /dev/null +++ b/docs/Getting LLVM IR Output.md @@ -0,0 +1,23 @@ +# Getting LLVM IR Output + +Most toolchains that compile their source language using LLVM have a means by which they can output +LLVM IR instead of completing the compilation process to the target machine. This document exists as +a quick record of how to get such output from the various source languages we are working with in +this project. + +## Rust + +`rustc` will emit LLVM IR when passed the `--emit=llvm-ir` flag. This will output `.ll` files into +the `target` directory corresponding to your compiled file. For more information, see the +[`rustc` developer guide](https://rustc-dev-guide.rust-lang.org/backend/debugging.html). + +- This can be passed to the correct compiler when using cargo by calling + `cargo rustc -- --emit=llvm-ir`. +- You can also set the `RUSTC_FLAGS` environment variable before invoking cargo as normal: + `RUSTFLAGS='--emit=llvm-ir'`. + +There are some difficulties here with multiple-unit compilation that need to be figured out, but +this is a reasonable starting point. + +For individual functions and compilation units, there is also the `cargo llvm-ir` command, which can +be run after installing `cargo-asm` (`cargo install cargo-asm`). diff --git a/flake.lock b/flake.lock index d85597f..6788922 100644 --- a/flake.lock +++ b/flake.lock @@ -17,9 +17,7 @@ }, "fenix": { "inputs": { - "nixpkgs": [ - "nixpkgs" - ], + "nixpkgs": ["nixpkgs"], "rust-analyzer-src": "rust-analyzer-src" }, "locked": { diff --git a/flake.nix b/flake.nix index 1a8bf81..4b4dca3 100644 --- a/flake.nix +++ b/flake.nix @@ -25,7 +25,7 @@ fenixLib = fenix.packages.${system}; fenixStable = fenixLib.fromToolchainName { name = rustVersion; - sha256 = "sha256-3jVIIf5XPnUU1CRaTyAiO0XHVbJl12MSx3eucTXCjtE="; + sha256 = "sha256-VZZnlyP69+Y3crrLHQyJirqlHrTtGTsyiSnZB8jEvVo="; }; # As we want nightly Rustfmt, we have to build a custom toolchain. @@ -68,6 +68,10 @@ llvmToCairo ]; + packages = [ + pkgs.nodejs_22 + ]; + shellHook = '' exec $(${getUserShellCommand}) ''; diff --git a/main b/main new file mode 100755 index 0000000000000000000000000000000000000000..fbe7dc6178f7a5883b1163dcb2e10e2697794fe0 GIT binary patch literal 459400 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⁣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 E1IzGIod5s; literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..43ebda2 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "devDependencies": { + "husky": "^9.1.6", + "lint-staged": "^15.2.10", + "prettier": "3.3.3", + "prettier-plugin-toml": "2.0.1" + }, + "lint-staged": { + "(*.md|*.toml|*.json|*.yaml|*.yml|*.css|*.js|*.ts)": [ + "prettier --write" + ] + }, + "husky": { + "hooks": { + "pre-commit": "npx lint-staged && cargo clippy -- -D warnings" + } + }, + "scripts": { + "prepare": "husky" + } +} diff --git a/src/bin/main.rs b/src/bin/main.rs new file mode 100644 index 0000000..0c954d2 --- /dev/null +++ b/src/bin/main.rs @@ -0,0 +1,10 @@ +//! This is the CLI driver for the compilation of LLVM IR to Cairo. For more +//! detail, please see the crate documentation [`llvm_to_cairo`]. + +#![warn(clippy::all, clippy::cargo, clippy::pedantic)] +#![allow(clippy::module_name_repetitions)] // Allows for better API naming +#![allow(clippy::multiple_crate_versions)] // Enforced by our dependencies + +fn main() { + println!("Hello, world!"); +} diff --git a/src/error/llvm_compile.rs b/src/error/llvm_compile.rs new file mode 100644 index 0000000..004c866 --- /dev/null +++ b/src/error/llvm_compile.rs @@ -0,0 +1,12 @@ +//! Error types and utilities to do with the compilation from LLVM IR to Cairo +//! IR. + +use thiserror::Error; + +/// This error type is for use during the process of compilation from LLVM IR to +/// the Cairo IR. +#[derive(Clone, Debug, Error)] +pub enum Error { + #[error("Miscellaneous compilation error: {_0}")] + Miscellaneous(String), +} diff --git a/src/error/mod.rs b/src/error/mod.rs new file mode 100644 index 0000000..eacabb8 --- /dev/null +++ b/src/error/mod.rs @@ -0,0 +1,33 @@ +//! Error handling types and utilities. +//! +//! # Error Conventions +//! +//! As we are providing a library that others may want to interact with from +//! _code_ as well as from the CLI driver, we keep our errors strongly typed at +//! all times. While libraries like +//! [anyhow](https://docs.rs/anyhow/latest/anyhow/) are well-suited for +//! application code, they make it more difficult than is necessary to handle +//! specific errors in library code. To that end, we make sure that our errors +//! are kept strongly typed within the library as much as is possible. + +pub mod llvm_compile; + +use thiserror::Error; + +/// The result type to be used at the boundaries of the library. +pub type Result = std::result::Result; + +/// The root of the error hierarchy for this crate. +/// +/// All errors should be able to be implicitly converted to this error type as +/// this is the type that is used at the boundaries of the library. Though we do +/// not make a habit of hiding things, any function intended to be part of the +/// _truly_ public interface of this library should return this error type. +#[derive(Clone, Debug, Error)] +pub enum Error { + #[error(transparent)] + LlvmCompile(#[from] llvm_compile::Error), + + #[error("An unknown error occurred: {_0}")] + Miscellaneous(String), +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..be3a097 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,23 @@ +//! This library implements the functionality necessary for the compilation of +//! [LLVM IR](https://llvm.org/docs/LangRef.html) to the +//! [Cairo](https://www.cairo-lang.org) programming language in order to enable +//! the execution of LLVM-compiled languages on top of the +//! [CairoVM](https://github.com/lambdaclass/cairo-vm) and hence on +//! [Starknet](https://www.starknet.io). +//! +//! The goals of this project are twofold: +//! +//! 1. To enable writing contracts in languages that compile to LLVM. +//! 2. To enable use of libraries in such languages as part of the Cairo +//! ecosystem. +//! +//! The major focus in the initial phases of the project is on using +//! [Rust](https://rust-lang.org) as the source language, but the goal is to +//! eventually support _any_ major language (Swift, C++, and so on) that can +//! target LLVM. + +#![warn(clippy::all, clippy::cargo, clippy::pedantic)] +#![allow(clippy::module_name_repetitions)] // Allows for better API naming +#![allow(clippy::multiple_crate_versions)] // Enforced by our dependencies + +pub mod error; diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index 013f290..0000000 --- a/src/main.rs +++ /dev/null @@ -1,6 +0,0 @@ -#![warn(clippy::all, clippy::cargo, clippy::pedantic)] -#![allow(clippy::module_name_repetitions)] // Allows for better API naming - -fn main() { - println!("Hello, world!"); -}