diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..278b380199 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.snap whitespace=-blank-at-eol diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 9012673ce1..0000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,12 +0,0 @@ -### What is wrong? - -Please include information like: - -* full output of the error you received -* what command you ran -* the code that caused the failure (see [this link](https://help.github.com/articles/basic-writing-and-formatting-syntax/) for help with formatting code) - - -### How can it be fixed - -Fill this in if you know how to fix it. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 7099b9078e..0000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,14 +0,0 @@ -### What was wrong? - - - -### How was it fixed? - - -### To-Do - -[//]: # (Stay ahead of things, add list items here!) -- [ ] OPTIONAL: Update [Spec](https://github.com/ethereum/fe/blob/master/docs/src/spec/index.md) if applicable -- [ ] Add entry to the [release notes](https://github.com/ethereum/fe/blob/master/newsfragments/README.md) (may forgo for trivial changes) - -- [ ] Clean up commit history diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..927a1498ee --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + cooldown: + default-days: 14 diff --git a/.github/install_deps.sh b/.github/install_deps.sh deleted file mode 100755 index 55220da57c..0000000000 --- a/.github/install_deps.sh +++ /dev/null @@ -1,4 +0,0 @@ -sudo apt-get update -sudo apt-get install -y libboost-all-dev -sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 50 -sudo update-alternatives --set g++ "/usr/bin/g++-10" \ No newline at end of file diff --git a/.github/workflows/expensive.yml b/.github/workflows/expensive.yml deleted file mode 100644 index 6622db3fe0..0000000000 --- a/.github/workflows/expensive.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Expensive - -on: - schedule: - - cron: '*/60 * * * *' - -env: - CARGO_TERM_COLOR: always - -jobs: - test: - # Build & Test runs on all platforms - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - name: Install system dependencies - run: | - sudo apt-get update - sudo apt-get install -y libboost-all-dev - - name: Install rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - - - name: Cache Dependencies - uses: Swatinem/rust-cache@v2 - - - name: Build - run: cargo test --workspace --all-features --no-run --locked -- --ignored - - name: Run expensive tests - id: expensive_tests - run: cargo test --workspace --all-features --verbose -- --ignored - - name: Report - if: failure() && steps.expensive_tests.outcome == 'failure' - run: | - cat ./crates/tests/proptest-regressions/differential.txt diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index aa8f9d7fc0..4a00106469 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,137 +8,408 @@ on: pull_request: +permissions: + contents: read + +concurrency: + group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + env: CARGO_TERM_COLOR: always CARGO_INCREMENTAL: 0 - RUSTFLAGS: "-D warnings" + CARGO_PROFILE_TEST_DEBUG: 0 + RUST_BACKTRACE: full + SOLC_VERSION: v0.8.30 + FOUNDRY_VERSION: v1.5.1 jobs: lint: runs-on: ubuntu-latest + timeout-minutes: 20 + env: + RUSTFLAGS: "-D warnings" steps: - - uses: actions/checkout@v3 - - name: Install system dependencies - run: | - sudo apt-get update - sudo apt-get install -y libboost-all-dev + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + with: + persist-credentials: false - name: Install rust - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@6bed0761d98439e5a578e2877258200ad565ba87 # stable with: toolchain: stable components: rustfmt, clippy + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 20 + - name: Generate tree-sitter parser + working-directory: crates/tree-sitter-fe + run: | + # Install only the pinned tree-sitter CLI (skip the root package's + # Node-addon build, which the Rust build doesn't use), then generate + # parser.c and friends from grammar.js. + npm ci --ignore-scripts + npm rebuild tree-sitter-cli + npx tree-sitter generate --abi=14 - name: Cache Dependencies - uses: Swatinem/rust-cache@v2 + uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2 + with: + save-if: ${{ github.ref == 'refs/heads/master' }} - name: Validate release notes entry - run: ./newsfragments/validate_files.py + # Outside target/, which the Rust cache keeps between runs. + run: make check-notes EISENBOTE="$RUNNER_TEMP/eisenbote" - name: Lint with rustfmt run: cargo fmt --all -- --check - name: Lint with clippy - run: cargo clippy --workspace --all-targets --all-features -- -D clippy::all - - book: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Install rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - - name: Cache Dependencies - uses: Swatinem/rust-cache@v2 - - name: install mdbook & mdbook-linkcheck - run: | - cargo install mdbook - cargo install mdbook-linkcheck - - name: Validate links in book - run: | - mdbook build docs/ - - name: Validate doc examples - run: ./docs/validate_doc_examples.py + run: cargo clippy --locked --workspace --all-targets --all-features -- -D clippy::all test: # Build & Test runs on all platforms runs-on: ${{ matrix.os }} + timeout-minutes: 90 strategy: + fail-fast: false matrix: include: - os: ubuntu-latest - os: macOS-latest + - os: windows-latest + env: + # MSVC's link.exe is much slower than lld at linking the large test + # binaries. Only affects Windows builds. + CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_LINKER: rust-lld.exe steps: - - uses: actions/checkout@v3 - - name: Install Mac System dependencies - if: startsWith(matrix.os,'macOS') - run: | - brew install boost - - name: Install Linux dependencies - if: startsWith(matrix.os,'ubuntu') - run: | - sudo apt-get update - sudo apt-get install -y libboost-all-dev + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + with: + persist-credentials: false - name: Install rust - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@6bed0761d98439e5a578e2877258200ad565ba87 # stable with: toolchain: stable + - name: Cache tree-sitter parser + id: tree-sitter-cache + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + with: + path: | + crates/tree-sitter-fe/src/parser.c + crates/tree-sitter-fe/src/grammar.json + crates/tree-sitter-fe/src/node-types.json + crates/tree-sitter-fe/src/tree_sitter + key: tree-sitter-parser-${{ runner.os }}-${{ hashFiles('crates/tree-sitter-fe/grammar.js', 'crates/tree-sitter-fe/package-lock.json', 'crates/tree-sitter-fe/bindings/rust/build.rs') }} + - name: Mark cached tree-sitter parser as fresh + if: steps.tree-sitter-cache.outputs.cache-hit == 'true' + working-directory: crates/tree-sitter-fe + shell: bash + # The checkout makes grammar.js newer than the restored files, which + # would make the build script try to regenerate them. + run: touch src/parser.c src/grammar.json src/node-types.json + - name: Setup Node + if: steps.tree-sitter-cache.outputs.cache-hit != 'true' + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 20 + - name: Generate tree-sitter parser + if: steps.tree-sitter-cache.outputs.cache-hit != 'true' + working-directory: crates/tree-sitter-fe + shell: bash + run: | + # Install only the pinned tree-sitter CLI (skip the root package's + # Node-addon build, which the Rust build doesn't use), then generate + # parser.c and friends from grammar.js. + npm ci --ignore-scripts + npm rebuild tree-sitter-cli + npx tree-sitter generate --abi=14 + - name: Cache solc + id: solc-cache + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + with: + path: ${{ runner.os == 'Windows' && format('{0}\\solc-{1}.exe', runner.temp, env.SOLC_VERSION) || format('{0}/solc-{1}', runner.temp, env.SOLC_VERSION) }} + key: solc-${{ runner.os }}-${{ env.SOLC_VERSION }} + - name: Download solc (Linux/macOS) + if: steps.solc-cache.outputs.cache-hit != 'true' && runner.os != 'Windows' + run: | + set -euo pipefail + if [ "${{ runner.os }}" = "Linux" ]; then + url="https://github.com/ethereum/solidity/releases/download/${SOLC_VERSION}/solc-static-linux" + else + url="https://github.com/ethereum/solidity/releases/download/${SOLC_VERSION}/solc-macos" + fi + curl -Ls "$url" -o "$RUNNER_TEMP/solc-${SOLC_VERSION}" + chmod +x "$RUNNER_TEMP/solc-${SOLC_VERSION}" + - name: Download solc (Windows) + if: steps.solc-cache.outputs.cache-hit != 'true' && runner.os == 'Windows' + shell: pwsh + run: | + $url = "https://github.com/ethereum/solidity/releases/download/$env:SOLC_VERSION/solc-windows.exe" + $output = "$env:RUNNER_TEMP\solc-$env:SOLC_VERSION.exe" + Invoke-WebRequest -Uri $url -OutFile $output + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@908c540300062bd5a7e473851cdb4282204cee09 # v1.9.1 + with: + version: ${{ env.FOUNDRY_VERSION }} + - name: Install cargo-nextest + uses: taiki-e/install-action@badb8c3638e0b773c6c17a6025c2306a8f1c4303 # nextest + with: + tool: nextest - name: Cache Dependencies - uses: Swatinem/rust-cache@v2 + uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2 + with: + save-if: ${{ github.ref == 'refs/heads/master' }} - name: Build - run: cargo test --workspace --all-features --no-run --locked + run: cargo test --profile test-release --workspace --all-features --no-run --locked --exclude fe-bench --timings - name: Run tests - run: cargo test --workspace --all-features --verbose + env: + FE_SOLC_PATH: ${{ runner.os == 'Windows' && format('{0}\\solc-{1}.exe', runner.temp, env.SOLC_VERSION) || format('{0}/solc-{1}', runner.temp, env.SOLC_VERSION) }} + run: >- + cargo nextest run --cargo-profile test-release --workspace --all-features --no-fail-fast --locked --exclude fe-bench + -E 'not (package(=fe-language-server) and test(/^mock_client_tests::/))' + - name: Upload build timings + if: always() + uses: actions/upload-artifact@v4 + with: + name: cargo-timings-${{ runner.os }} + path: target/cargo-timings/*.html + if-no-files-found: ignore + retention-days: 14 - wasm-test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 + wasm-wasi-check: + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + with: + persist-credentials: false - name: Install rust - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@6bed0761d98439e5a578e2877258200ad565ba87 # stable with: toolchain: stable - - name: Install wasm-pack - run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + - name: Install WASM targets + run: | + rustup target add wasm32-unknown-unknown + rustup target add wasm32-wasip1 - name: Cache Dependencies - uses: Swatinem/rust-cache@v2 - - name: Run WASM tests - # wasm-pack needs a Cargo.toml with a 'package' field. - # (see https://github.com/rustwasm/wasm-pack/issues/642) - # This will still run all tests in the workspace. - run: wasm-pack test --node crates/fe --workspace + uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2 + with: + save-if: ${{ github.ref == 'refs/heads/master' }} + - name: Check core crates for wasm32-unknown-unknown + run: cargo check --locked -p fe-common -p fe-parser -p fe-hir --target wasm32-unknown-unknown + - name: Check filesystem crates for wasm32-wasip1 + run: cargo check --locked -p fe-driver -p fe-resolver --target wasm32-wasip1 - release: + release-build: # Only run this when we push a tag if: startsWith(github.ref, 'refs/tags/') runs-on: ${{ matrix.os }} - # needs: [lint, test, wasm-test] - needs: [lint, test] + timeout-minutes: 90 + needs: [lint, test, wasm-wasi-check] strategy: matrix: include: - os: ubuntu-latest - BIN_FILE: fe_amd64 + target: x86_64-unknown-linux-gnu + BIN_FILE: fe_linux_amd64 + EXT: "" + EXTRA_FEATURES: "" + STRIP: strip + - os: ubuntu-latest + target: aarch64-unknown-linux-gnu + BIN_FILE: fe_linux_arm64 + EXT: "" + EXTRA_FEATURES: "" + STRIP: aarch64-linux-gnu-strip + - os: macOS-latest + target: aarch64-apple-darwin + BIN_FILE: fe_mac_arm64 + EXT: "" + EXTRA_FEATURES: "" + STRIP: strip - os: macOS-latest - BIN_FILE: fe_mac + target: x86_64-apple-darwin + BIN_FILE: fe_mac_amd64 + EXT: "" + EXTRA_FEATURES: "" + STRIP: strip + - os: windows-latest + target: x86_64-pc-windows-msvc + BIN_FILE: fe_windows_amd64.exe + EXT: ".exe" + EXTRA_FEATURES: "" + STRIP: "" steps: - - uses: actions/checkout@v3 - - name: Install Linux dependencies - if: startsWith(matrix.os,'ubuntu') + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + with: + persist-credentials: false + - name: Install cross-compilation toolchain (Linux ARM64) + if: matrix.target == 'aarch64-unknown-linux-gnu' run: | sudo apt-get update - sudo apt-get install -y libboost-all-dev - - name: Install Mac System dependencies - if: startsWith(matrix.os,'macOS') - run: | - brew install boost + sudo apt-get install -y gcc-aarch64-linux-gnu - name: Install rust - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@6bed0761d98439e5a578e2877258200ad565ba87 # stable with: toolchain: stable + targets: ${{ matrix.target }} + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 20 + - name: Generate tree-sitter parser + working-directory: crates/tree-sitter-fe + shell: bash + run: | + # Install the pinned CLI without building the unused Node addon. + npm ci --ignore-scripts + npm rebuild tree-sitter-cli + npx tree-sitter generate --abi=14 - name: Build - run: cargo build --all-features --release && strip target/release/fe && mv target/release/fe target/release/${{ matrix.BIN_FILE }} + env: + CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc + # `fe/cranelift` enables the native backend (`fe build --backend native`). + run: cargo build --locked --release --target ${{ matrix.target }} --features fe/cranelift ${{ matrix.EXTRA_FEATURES }} + - name: Check native backend is available + # Cross-compiled binaries can't run on the build host. + if: matrix.target != 'aarch64-unknown-linux-gnu' && matrix.target != 'x86_64-apple-darwin' + shell: bash + run: target/${{ matrix.target }}/release/fe${{ matrix.EXT }} build --help | grep -q native + - name: Strip binary (Unix) + if: runner.os != 'Windows' + run: ${{ matrix.STRIP }} target/${{ matrix.target }}/release/fe + - name: Rename binary + shell: bash + run: mv target/${{ matrix.target }}/release/fe${{ matrix.EXT }} target/${{ matrix.target }}/release/${{ matrix.BIN_FILE }} + - name: Upload release binary + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: fe-${{ matrix.target }} + path: target/${{ matrix.target }}/release/${{ matrix.BIN_FILE }} + if-no-files-found: error + retention-days: 1 + + release: + if: startsWith(github.ref, 'refs/tags/') + needs: [release-build] + runs-on: ubuntu-latest + timeout-minutes: 15 + permissions: + contents: write + steps: + - name: Download release binaries + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + pattern: fe-* + merge-multiple: true + path: dist - name: Release - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2.6.2 with: - files: target/release/${{ matrix.BIN_FILE }} + files: dist/* + fail_on_unmatched_files: true prerelease: true + + docs-generate: + if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-') + runs-on: ubuntu-latest + timeout-minutes: 20 + needs: [release] + steps: + - name: Validate release tag + run: | + if [[ ! "$GITHUB_REF_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Docs deployment requires a stable version tag" >&2 + exit 1 + fi + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + with: + persist-credentials: false + + - name: Download fe binary from release env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_TOKEN: ${{ github.token }} + run: | + gh release download "$GITHUB_REF_NAME" --pattern 'fe_linux_amd64' --dir /tmp + chmod +x /tmp/fe_linux_amd64 + + - name: Generate documentation + run: | + mkdir -p /tmp/docs-out + timeout 300 /tmp/fe_linux_amd64 doc --builtins -o /tmp/docs-out json + /tmp/fe_linux_amd64 doc -o /tmp/docs-out bundle --with-css + python3 -c " + import json, sys + with open('/tmp/docs-out/docs.json') as f: + d = json.load(f) + sv = d.get('schema_version') + cv = d.get('compiler_version') + if not sv or not cv: + print(f'ERROR: missing schema_version={sv} or compiler_version={cv}', file=sys.stderr) + sys.exit(1) + print(f'docs.json: schema v{sv}, compiler v{cv}, {len(d[\"index\"][\"items\"])} items') + " + + - name: Upload generated docs + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: docs + path: | + /tmp/docs-out/docs.json + /tmp/docs-out/fe-web.js + /tmp/docs-out/fe-highlight.css + /tmp/docs-out/styles.css + if-no-files-found: error + retention-days: 1 + + docs: + if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-') + needs: [docs-generate] + runs-on: ubuntu-latest + timeout-minutes: 15 + environment: fe-docs-deploy + steps: + - name: Download generated docs + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + name: docs + path: /tmp/docs-out + - name: Validate generated docs + run: | + set -euo pipefail + test -d /tmp/docs-out && test ! -L /tmp/docs-out + for name in docs.json fe-web.js fe-highlight.css styles.css; do + file="/tmp/docs-out/$name" + test -f "$file" && test ! -L "$file" + done + + - name: Deploy to doc site + uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + with: + repository: fe-lang/fe-docs + token: ${{ secrets.DOC_DEPLOY_TOKEN }} + path: fe-docs + ref: main + + - name: Deploy docs + run: | + cd fe-docs + make deploy VERSION="${GITHUB_REF_NAME#v}" OUTDIR=/tmp/docs-out + + - name: Push doc site + run: | + cd fe-docs + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add versions.json fe-web.js fe-highlight.css styles.css "${GITHUB_REF_NAME#v}/" + if git diff-index --quiet HEAD; then + echo "No changes to deploy" + exit 0 + fi + git commit -m "Deploy docs for $GITHUB_REF_NAME" + for attempt in 1 2 3; do + if git push; then + exit 0 + fi + echo "Push failed (attempt $attempt), rebasing..." + git pull --rebase + done + echo "ERROR: Failed to push after 3 attempts" >&2 + exit 1 diff --git a/.gitignore b/.gitignore index d37e5db915..abd2877c54 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,18 @@ tarpaulin-report.html /output /docs/tmp_snippets -.vscode \ No newline at end of file +.vscode +.DS_Store +**/*.fe-lsp.json +**/.fe-lsp/ + +# OpenSpec and AI assistant files +openspec/ +AGENTS.md +CLAUDE.md +.claude/ +.gemini/ + +# Local debug artifacts +stackify_*.txt +trace_*.txt diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..e1f31fd4b7 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "editor.tabSize": 4, + "rust-analyzer.linkedProjects": [ + "./crates/language-server/Cargo.toml" + ], +} \ No newline at end of file diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 0000000000..59859a5956 --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,7 @@ +{ + "languages": { + "Fe": { + "enable_language_server": false + } + } +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..132cc981cd --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,358 @@ +# Changelog + +[//]: # (release notes start) +## 26.4.0 (2026-09-30) + +### Features + +- Added experimental host-native executable builds for standalone Fe files on + x86-64 Linux and AArch64 macOS. Build Fe with the `cranelift` feature and pass + `--backend native` to produce an executable from `pub fn main() -> i32`. ([#1549](https://github.com/argotorg/fe/issues/1549)) +- Track ownership and borrows through tuples, structs, arrays, pointer aliases, and helper calls with a structural borrow checker. Borrow information is preserved when references are returned inside aggregates, so overlapping live borrows are rejected after tuple destructuring as well as after a direct return. ([#1557](https://github.com/argotorg/fe/issues/1557)) +- Validate generic calls' ownership and borrow requirements when their concrete trait implementations are selected. Checks that depend on an unresolved implementation remain explicitly pending; executable calls without a concrete implementation or a compiler-provided effect contract are rejected. ([#1557](https://github.com/argotorg/fe/issues/1557)) +- Extended the experimental native backend to whole workspaces, including dependencies. `fe test --backend native` runs tests as native executables, and `std::io` provides character input and output through the host. ([#1565](https://github.com/argotorg/fe/issues/1565)) +- Native programs can receive process arguments by declaring `pub fn main(argc: i32, argv: **u8) -> i32` and reading them through the bounds-checked `std::native::Args`. `std::native::cpu_clock_ticks` returns the process CPU time. ([#1566](https://github.com/argotorg/fe/issues/1566)) +- Added `std::native::ByteBuffer`, an explicitly owned heap byte buffer for native programs with fallible growth that keeps existing data, zero initialization, overlap-safe copying and an explicit `release`. ([#1580](https://github.com/argotorg/fe/issues/1580)) +- Const functions can take immutable trait providers through `uses` and supply them with `with`, including forwarding through generic const functions, calls to const trait methods, and `ref` borrows of a provider such as `ref self` method calls. Mutable effects, type-keyed (storage) effects and extern functions with effects are rejected. ([#1582](https://github.com/argotorg/fe/issues/1582)) +- Const functions can borrow their own locals and parameters with `mut` and `ref`, so helpers that update a value in place, or take a `mut` argument, now evaluate at compile time. Returning a borrow of a local from the function that owns it is rejected during evaluation. ([#1582](https://github.com/argotorg/fe/issues/1582)) +- Add `core::text::concat_slice` for runtime-length string slices and `TextBuilder` for incremental byte-preserving text construction, also available through `std::text`. +- Add `std::evm::checksum_address` for ERC-55 checksummed address formatting. Expand regression coverage of the existing `core::num::isqrt` across power-of-two and maximum-square boundaries. +- Add `std::evm::clones` helpers for ERC-1167 initcode, CREATE/CREATE2 deployment and deterministic address prediction. +- Add overflow-safe EIP-150 gas-budget admission and Call::call_with_min_gas, with a caller reserve, prepaid input memory and no automatic returndata copy. +- Added `Call::try_call_into` and `Call::try_static_into`, which copy at most the capacity of a caller-provided buffer so oversized returndata cannot force a large copy, plus `Call::send_value` for plain value transfers and `Call::try_call_raw` for forwarding raw calldata. `Call::static`, `Call::try_static` and `Address::static` now only need a read-only `Call` effect. Added `std::evm::erc165` with OpenZeppelin `ERC165Checker` semantics and `Address::from_word_truncate`. +- Added `core::num::leading_zeros` and `core::num::trailing_zeros` for `u256`. Both return 256 for zero. `leading_zeros` compiles to the EVM `CLZ` instruction (EIP-7939) and to a branch-free bit search for native targets; both functions are also available in constant evaluation. +- Added `core::panic_code(code)`, which reverts with the Solidity `Panic(uint256)` payload, and the `core::panics::PANIC_*` constants (re-exported from `std::evm::panic`). Out-of-bounds `core::ptr` accesses now revert with `Panic(0x32)` instead of `INVALID`. On native targets the call traps. +- Added `core::text` (re-exported as `std::text`) with `concat`, `decimal`, `hex`, `hex_upper` and `base64` for building `DynString` values, plus `DynString::slice`, `DynString::from_word_prefix`, `DynString::zeroed` and `Eq` for `Bytes` and `DynString`. +- Added `std::evm::SolSlot` for Solidity storage layouts at runtime slots: `read`/`write` access a packed state variable at a byte offset without touching its neighbours (for `bool`, `Address`, all integer widths including `sol::Int24` etc., and `FixedBytes`), and `read_bytes`/`read_string`/`write_bytes`/`write_string` use Solidity's `bytes`/`string` storage layout. Also added `std::evm::SolMapping`, which derives `mapping` slots like Solidity for a runtime root, including nested mappings. Custom-width Solidity ints now implement `StorageKey`. +- Added `std::evm::keccak_words([..])` for hashing a fixed list of words and `std::evm::create2_address(deployer, salt, init_code_hash)`. `keccak_packed` and `encode_packed` now write each value directly at its packed width instead of going through the `Packed` builder, which makes them about four times cheaper, and custom-width Solidity ints (`sol::Int24` etc.) now implement `EncodePacked`. +- Added `std::evm::merkle` for keccak Merkle proofs: `verify`, `process_proof` and `hash_pair_sorted` match OpenZeppelin's `MerkleProof` for sorted-pair trees, and `verify_indexed`/`process_indexed_proof` check positional proofs where bit `i` of the leaf index picks the side at level `i` (as in Seaport bulk order signatures). Proofs are read in place from a `MemSlice` or a decoded `bytes32[]`/`uint256[]` (`DynArray`/`DynArray`). +- Added full-precision `mul_div`, `mul_div_ceil`, `checked_mul_div`, `checked_mul_div_ceil` and `full_mul` to `core::num`. They compute `a * b / d` with a 512-bit intermediate product, so results are exact whenever the quotient fits in a `u256`. `mul_div` and `mul_div_ceil` fail like checked arithmetic (division by zero, or overflow when the quotient does not fit), and the `checked_` variants return `None` instead. `addmod` and `mulmod` are now available as `core::num::addmod` and `core::num::mulmod` too; `std::evm::addmod` and `std::evm::mulmod` remain available. +- Added non-reverting token helpers that return a classified `std::evm::TokenCall` outcome (`Ok`, `Reverted`, `BadReturn`, `NoCode`) so callers can raise their own errors: `erc20::try_transfer`, `try_transfer_from` and `try_approve` (Solady/OpenZeppelin semantics, bounded 32-byte returndata copy), plus the new `std::evm::erc721::try_transfer_from` and `std::evm::erc1155::try_safe_transfer_from` / `try_safe_batch_transfer_from`. `erc721::check_on_received` classifies an `onERC721Received` hook as a `ReceiverCheck` (`Accepted`, `WrongMagic`, `BadReturn`, `Reverted`, `NoCode`). +- Fields and array elements reached through a temporary pointer, such as `f().value` or `(*f()).items[i]`, can now be assigned, compound-assigned and borrowed with `ref` or `mut`, just like those reached through a pointer variable. + +### Bugfixes + +- Fix resolution and validation of default type and const arguments, including dependent defaults in generic function and method calls. + + Fix compiler panics and incorrect trait dispatch when using functions and enum variant constructors as values. ([#1535](https://github.com/argotorg/fe/issues/1535)) +- Fix copying arrays returned from functions so that modifying a copy no longer changes the original array. This also fixes copies of nested arrays while preserving explicit reference semantics. ([#1555](https://github.com/argotorg/fe/issues/1555)) +- Allow generic constants to contain array repeats with symbolic lengths and indices and use them in branches, enum matches, casts, and type-level expressions. Evaluation now preserves bounds checks, operand failures, and assertion diagnostics through specialization. ([#1556](https://github.com/argotorg/fe/issues/1556)) +- Preserve native `ref` and `mut` references' addresses, layouts, and aliasing when storing them in pointer slots or aggregate fields and returning them through helpers. Mutations through a stored reference continue to affect the original referent, including when helpers allocate memory while the reference is live. ([#1557](https://github.com/argotorg/fe/issues/1557)) +- Fix internal compiler errors in native-reference slot assignments, valid compound assignments, and Copy reads from reference-returning calls. Invalid mutations through shared references and mutable field borrows through immutable owned receivers now produce source diagnostics. ([#1557](https://github.com/argotorg/fe/issues/1557)) +- Reserve `StorageMap`'s complete hashing buffer before invoking custom key encoders, preventing allocations during encoding from overwriting the key. Custom `StorageKey` implementations must now provide `encoded_len(self) -> u256` and make `write_key` return `()` instead of the encoded length. ([#1557](https://github.com/argotorg/fe/issues/1557)) +- Reject uses of moved non-Copy values through pointers, including pointers returned by calls and projections into their fields or array elements. Also reject native-reference loads from uninitialized or byte-overwritten slots: typed stores can initialize a reference slot, while zeroing or copying raw bytes cannot establish a valid reference. ([#1557](https://github.com/argotorg/fe/issues/1557)) +- Account for persistent and transient state access during external calls, including callbacks. Live state borrows now conflict with `CALL`, `DELEGATECALL`, `CREATE`, and `CREATE2`; `STATICCALL` conflicts with mutable state borrows while allowing shared state borrows. ([#1557](https://github.com/argotorg/fe/issues/1557)) +- Event entries in the generated JSON ABI now include `"anonymous": false`, so strict ABI consumers such as Foundry's Alloy parser can deserialize them. ([#1562](https://github.com/argotorg/fe/issues/1562)) +- Fixed string literal escapes being kept verbatim. The escapes `\"`, `\\`, `\n`, `\r` and `\t` are now decoded, so escaped strings have the correct byte length and contents in constants and generated code. Invalid escapes are reported at their source location. ([#1563](https://github.com/argotorg/fe/issues/1563)) +- Fixed repeated effect calls through a temporary trait-effect provider in a `with` block, which could falsely move the provider or update separate copies of it. Every call in the block now uses the same provider. ([#1564](https://github.com/argotorg/fe/issues/1564)) +- Fix verification of payable value-returning handlers while requiring ABI wrappers to call their planned return helper and return-type specialization. ([#1567](https://github.com/argotorg/fe/issues/1567)) +- Fix ABI decoding of malformed arrays so overflowing offsets and lengths revert with empty data instead of an arithmetic panic. ([#1570](https://github.com/argotorg/fe/issues/1570)) +- Fix EVM compilation of unchecked signed negation, including wrapping negation of the minimum signed value. ([#1571](https://github.com/argotorg/fe/issues/1571)) +- Fix JSON ABI state mutability so call-local memory effects alone do not prevent a function from being marked pure. ([#1572](https://github.com/argotorg/fe/issues/1572)) +- Include reachable custom errors in generated JSON ABIs, including errors raised through panic_with_value, Result::unwrap(), and overloaded operators. ([#1573](https://github.com/argotorg/fe/issues/1573)) +- Fix a compiler panic during JSON ABI generation for contracts that call generic helpers such as encode_msg_calldata. ([#1574](https://github.com/argotorg/fe/issues/1574)) +- Fixed calls to shared methods on non-Copy fields, such as `frame.memory.capacity()`, falsely consuming the field and rejecting later uses of the containing value. ([#1581](https://github.com/argotorg/fe/issues/1581)) +- Accept ABI dynamic byte and string payloads without trailing padding while preserving bounded reads and copies, zeroing owned padding, and keeping decoded arrays word-aligned for re-encoding. ([#1587](https://github.com/argotorg/fe/issues/1587)) +- Native tests on macOS no longer fail intermittently with "Operation not permitted" when the runner stops a finished test's process group. ([#1590](https://github.com/argotorg/fe/issues/1590)) +- Fixed compilation of recursive raw pointer types such as `struct Node { value: u256, next: *Node }`, which passed type checking but then failed during lowering. Borrow checking of programs that use such types now also terminates. ([#1609](https://github.com/argotorg/fe/issues/1609)) +- Allow bounded raw static calls through a read-only Call effect, preserving view mutability in the generated ABI. +- Calling a function that declares a return value but always diverges (for example one that ends in `core::panic()`) in tail position no longer fails Sonatina IR verification with IR0601. +- Comparison operators such as `==` and `<` no longer move a non-Copy right-hand operand; `a == b` now borrows `b` as `a.eq(b)` does. +- Diagnose invalid constant declaration types, including oversized inline strings, before constant evaluation instead of reaching a compiler panic. +- Fix `continue` in `for` loops so the loop moves on to the next element. Previously `continue` jumped back without advancing, so the loop revisited the same element. +- Fix `fe build` failing in MIR lowering when emitting an `#[event]` struct with no fields. Such events now emit a LOG1 with `keccak256("Name()")` as the only topic and empty data, matching Solidity. +- Fix a bare call such as `digest(..)` inside an `impl` or `trait` resolving to the enclosing impl's or trait's own function of the same name instead of the module-level function. Like in Rust, functions of an impl or trait are no longer in scope as bare names inside it; call them as `Self::name(..)` or `self.name(..)`, and the "undefined variable" error now points this out. Associated consts remain usable unqualified. +- Fix a compiler panic ("optional CTFE fold invariant failed: constant integer exceeds its declared type") when constant evaluation folded bitwise-not or other integer operations whose result has a view type, such as `x == !(0 as u256)`. Integer views now keep the width and signedness of the viewed integer during constant evaluation. +- Fix a compiler panic when implicitly borrowing a record literal, such as an Address literal used in an equality comparison. +- Fix an internal borrow-check error when reading a field through a pointer returned by a call, such as `pick(a, b).value`. Also fix silently lost writes when a `mut self` method call or a `with` binding reaches a value through a temporary pointer, such as `(*f()).set(1)` or `with ((*f()).counter) { ... }`: the call or effect now updates the pointee instead of a copy. +- Fix compilation of errors and events with long names by splitting their generated signature strings into supported chunks. +- Fix layout checking rejecting types that repeat a generic type through ordinary fields, such as a struct holding `Option` where `Argument` holds `Option`. Such layouts are finite. Types whose arguments grow, such as `Growing` containing `Growing<(T, T)>`, are still reported as expanding. +- Fix parsing of generic arguments that start with a qualified path, such as `Wrapped<::Point>`. The `<<` is no longer mistaken for a left shift, so the argument now belongs to `Wrapped` in type position, in expression position, and in a method call such as `wrapped.pick<::Point>(value)`. +- Fix the Solidity ABI encoding of `msg` variants that return a tuple with dynamic elements, such as `-> (DynString, Bytes32, Address)`. The return value is now encoded as a parameter list, like the values of a Solidity function with multiple return values (`returns (string, bytes32, address)`), instead of as a single tuple behind an extra leading offset word. Typed calls and `std::abi::sol::decode_output` decode tuple returns the same way, and the generated JSON ABI lists one output per tuple element. This changes the returndata of dynamic tuple returns; static tuples encode the same bytes as before. A single dynamic return such as `-> DynString` or an `#[abi]` struct is unchanged. +- Fixed a compiler panic when resolving associated types on generic functions with implicit effect parameters by preserving each explicit parameter's original source index during lowering. +- Reject integer expression literals larger than 256 bits during type checking instead of silently truncating them during EVM lowering. +- Report `U::Name` and `Self::Name` as not found when only the bound on a different type parameter declares `Name`. For example, in `fn f(_ x: U::Dom)` and in `trait Eval { fn eval(_ x: Self::Dom) }`, the name used to resolve silently to `T::Dom`. +- Report malformed `sol("...")` selector signatures on msg variants (unbalanced parentheses, invalid or empty function names, empty argument types, whitespace) as `fe check` errors instead of silently using the keccak of the malformed string as the selector and failing only later during JSON ABI emission. +- Report overflowing dynamic ABI offsets as decode errors instead of arithmetic panics. +- Resolve `Self::Name` inside a trait when `Name` is an associated type of one of its supertraits, such as `Self::Dom` in `trait Eval: Arrow`. Bounds in scope at the reference, such as a method's own `where Self: Extra`, are considered alongside the inherited ones, and the reference is reported as ambiguous when they name different associated types. Reaching a single declaration through several supertraits is not ambiguous, even when only some of them bind it with an equality. +- Reverts (including `assert!` with a message) now compile for native targets, where they trap. Previously they failed with an unsupported-terminator error. +- Run `fe test` and the contract test harness under Osaka rules, the EVM revision Fe compiles for. Previously tests executed with Prague rules, so Osaka instructions such as `CLZ` halted with `NotActivated`. The Osaka per-transaction gas cap (EIP-7825) is lifted for tests. +- String literals longer than 31 bytes can now be used as tuple parts of `core::keccak`, `std::abi::sol` and `std::io::write`/`writeln` arguments, e.g. `core::keccak(("OrderComponents(...)", "OfferItem(...)"))`, which hashes the concatenated bytes. Oversized string literals elsewhere now report the inline string capacity error instead of a compiler invariant failure during constant evaluation. +- Teach the tree-sitter grammar the generic arguments that start with a qualified path, such as `Wrapped<::Point>::new(point)`. The compiler already accepted these in expression position while the grammar reported an error, so editors flagged valid code. A `<<` that is not followed by a qualified path is still a left shift. +- The init code a contract deploys with `create` / `create2` (and reads with `Contract::init_code_offset/len`) is now exactly the `B.bin` artifact that `fe build` writes for `B`. Previously the embedded copy of `B` was compiled together with the embedding contract, so shared helpers, symbol names and inlining budgets could change it, and CREATE2 addresses derived off-chain from `B.bin` did not match the deployed address. Each contract is now compiled on its own and embedded as its final bytes, which also makes a contract's bytecode independent of other contracts in the same file. +- `FixedBytes` (`Bytes1` through `Bytes32`) now implements `Copy`, so a `bytesN` value such as a conduit key can be read from a view parameter or used more than once without a move conflict. +- `decode_bytes_view_at` (and `decode_bytes_view`) now revert with empty returndata, like Solidity's ABI decoder, instead of panicking with `Panic(0x11)` when an offset or length is so large that its sum with the payload position overflows. +- `fe fmt` no longer joins a bare qualified first generic argument onto the opening `<`, which turned `Wrapped< >` into `Wrapped<>` and changed how it parsed. It now formats as `Wrapped< >`. + +### Performance improvements + +- Reduced the cost of `DynArray::get` for single-word static elements by relying on the frame validation already done at construction. Bounds checks and canonical-value validation are unchanged. In a Merkle proof benchmark this cuts gas for a 16-sibling proof by about 46% and runtime bytecode by about 28%. ([#1559](https://github.com/argotorg/fe/issues/1559)) +- Constant string values, such as ERC-20 `name()` and `symbol()` getters, are now folded during ABI encoding instead of computing their length at runtime. In an ERC-20 benchmark this shrinks runtime bytecode by about 21% and cuts the gas of `name()` from 3,861 to 857. ([#1560](https://github.com/argotorg/fe/issues/1560)) +- Helper functions reached from several recv arms or modules are now emitted once instead of once per caller, which substantially shrinks contracts with many entry points. ([#1618](https://github.com/argotorg/fe/issues/1618)) +- Reduced compile times by caching and sharing work in semantic analysis, trait solving and borrow checking, and by lowering only the function parameters a caller needs. +- Reuse the outcome of a speculative parse at a position instead of repeating it. Disambiguating generic arguments from shifts and comparisons re-parsed the same nested syntax once per enclosing level, so deeply nested arguments such as `Wrap<::Point> as Model>::Point>` cost roughly five times more per level of depth. A 12-level type took about 96 seconds to parse and now takes milliseconds. Incomplete and malformed nesting, which is what an editor sees while the code is still being typed, is reused the same way. + +### Internal Changes - for Fe Contributors + +- Rebuild the embedded `core` and `std` libraries when a file is added to `ingots/core` or `ingots/std`, including in builds that use a compiler cache. ([#1582](https://github.com/argotorg/fe/issues/1582)) + + +## 26.3 (2026-09-16) + +### Features + +- Support `==` and `!=` for fixed-size arrays whose elements implement `Eq`. ([#528](https://github.com/argotorg/fe/issues/528)) +- Support `==` and `!=` for tuples of up to six elements whose types implement `Eq`, including the empty tuple. ([#748](https://github.com/argotorg/fe/issues/748)) +- Added PC-accurate debug information. `fe dev trace emit` compiles a + standalone Fe file or a whole ingot and writes a validated stream of typed + compiler facts (JSONL) that links EVM bytecode instructions through the + backend and MIR to source spans where attribution can be proven, and + `fe dev debug emit --format ethdebug` + projects that stream into a Fe-specific experimental instruction/source artifact + with optional attribution details containing origin/confidence information. + The CLI prints a per-program attribution summary without requiring that extra + file. Each emitted instruction is classified as source-mapped, ambiguous, + synthetic, or unmapped, and only a unique exact mapping in the recorded graph + carries source context. This does not establish exhaustive contributing origins + or transformation history. Compatibility with stock ethdebug consumers is not + established; neither the artifact nor the optional attribution details is a + stable public API. ([#1336](https://github.com/argotorg/fe/issues/1336)) +- Added first-class typed memory pointers with `*T`, including allocation helpers, dereference reads and writes, pointer field access, and mutable pointer-backed array indexing. New bounded memory-region APIs—`MemSlice`, `MemSpan`, `MemBuffer`, and `FixedMemBuffer`—distinguish read-only views, owned allocations, and writable capacity across ABI and EVM operations. Pointer-bearing values cannot escape into persistent or transient storage. A bare `*` at the start of a line is interpreted as dereference; multiline multiplication must keep the operator on the preceding line. ([#1469](https://github.com/argotorg/fe/issues/1469)) +- Added `fe build --from-metadata ` to rebuild a contract from a `.metadata.json` recompilation input (as produced by `fe build --emit metadata`); `-` reads the JSON from stdin. The recorded project is materialized into a temporary directory and built with the settings captured in the metadata: the contract from `settings.compilationTarget` (overridable with `--contract`) and the recorded optimizer level (an explicit `-O` wins, with a warning that the rebuilt bytecode no longer matches the verified artifact). A compiler version mismatch warns on stderr without aborting. Artifacts are written to `--out-dir`, defaulting to `./out`. This lets external toolchains such as Foundry or source verifiers recompile Fe contracts from a single self-contained JSON document. ([#1505](https://github.com/argotorg/fe/issues/1505)) +- Added `core::num::isqrt` for `u256`, returning the integer square root rounded down. The implementation uses a fixed number of Newton iterations without input-dependent loops. ([#1509](https://github.com/argotorg/fe/issues/1509)) +- Added `StorageBytes::to_memory` to copy stored bytes into memory without ending the contract call, allowing further processing such as hashing or contract deployment. Added `StorageBytes::word_at` for indexed access to individual payload words. ([#1510](https://github.com/argotorg/fe/issues/1510)) +- Added `std::evm::encode_msg_calldata` to encode a message selector and arguments into memory for low-level calls. Added `Address::static` for typed `STATICCALL` operations that forward the available gas and propagate the callee's revert data on failure. ([#1511](https://github.com/argotorg/fe/issues/1511)) +- Added `std::evm::packed` for tightly packed byte encoding, with `encode_packed` and `keccak_packed` tuple helpers and a growable `Packed` builder for payloads assembled at runtime. Supported values include integers, addresses, booleans, strings, and byte sequences. Added `std::evm::crypto::eip712_digest` to compute a digest from a domain separator and struct hash. ([#1512](https://github.com/argotorg/fe/issues/1512)) +- Added `Call::call_with_default` and `Address::call_with_default` to return a caller-supplied default when a successful external call returns no data; non-empty returndata is still decoded strictly and reverts are propagated. Added `std::evm::erc20::{safe_transfer, safe_transfer_from, safe_approve}` for tokens that return either `true` or no data. These ERC-20 helpers reject `false` returns and targets without code; the general `call_with_default` helper also returns the default for successful calls to addresses without code. ([#1514](https://github.com/argotorg/fe/issues/1514)) +- Added source-oriented contract layout information to language-server hovers. Hovering a contract name shows its complete layout grouped under Storage, Transient Storage, and Immutable (Code), while hovering a contract field shows only the entries belonging to that field. + + The hover labels inline fields and explicit or inferred layout parameters with their source paths and types, and shows index formulas and dimensions for static arrays. It no longer presents empty allocation cursors as occupied slots or exposes internal "root" terminology, and explains when a field's layout is invalid or unavailable. ([#1515](https://github.com/argotorg/fe/issues/1515)) +- Added typed `DynArray.get(index)` access and `std::abi::MemVec`, a mutable memory array whose length is chosen at creation and remains fixed. `MemVec` supports zero-initialized construction, independent copies of existing `DynArray` values, indexed reads and writes, and conversion to an independent ABI-encodable `DynArray` for contract calls, return values, and event payloads. Supported elements occupy one static ABI word, including integers, `Address`, `bool`, and fixed-byte types. Reads use Solidity ABI decoding rules, and out-of-bounds reads or writes revert with `Panic(0x32)`. ([#1524](https://github.com/argotorg/fe/issues/1524)) + +### Bugfixes + +- Report unsupported macro calls as compiler errors instead of panicking during semantic lowering. ([#1132](https://github.com/argotorg/fe/issues/1132)) +- Reject associated type definitions in trait implementations when the type is not declared in the implemented trait. ([#1193](https://github.com/argotorg/fe/issues/1193)) +- Fixed the bundled Tree-sitter grammar to parse chained `||` conditions consistently with the compiler parser. ([#1469](https://github.com/argotorg/fe/issues/1469)) +- Fixed library modules being lowered into duplicate ingot main objects when building projects with dependencies. ([#1478](https://github.com/argotorg/fe/issues/1478)) +- Improved the parser diagnostic for Rust-style turbofish syntax. Writing `Name::<...>` (for example `StorageMap::::new()`) now reports a clear "remove the double colons" error pointing at the `::`, instead of a confusing "expected newline or `}`" message. Use the bare `Name<...>` form instead. ([#1498](https://github.com/argotorg/fe/issues/1498)) +- Support functions and recv arms with more than 16 arguments in the Sonatina backend. ([#1500](https://github.com/argotorg/fe/issues/1500)) +- Fixed method selection incorrectly reporting missing trait imports when an inapplicable blanket implementation shadowed a valid concrete implementation. Diagnostics no longer expose unsatisfied bounds involving traits that are not visible at the call site. ([#1501](https://github.com/argotorg/fe/issues/1501)) +- Fixed a compiler error when a mutable `own` aggregate parameter (such as `mut _ s: own [u256; 3]`) is both projected (indexed or field-accessed) and reassigned inside the function. Such functions previously failed to compile with an internal `SlotCarrierMismatch` error; they now compile correctly and keep the parameter's by-value calling convention. ([#1503](https://github.com/argotorg/fe/issues/1503)) +- Fixed a compiler panic when selecting a trait method from an `impl` whose `where` clause constrains an associated-type projection. Satisfied projection bounds now type-check normally, while unsatisfied bounds produce the expected trait-bound diagnostic. ([#1505](https://github.com/argotorg/fe/issues/1505)) +- Fixed a compiler crash when generating bytecode for tuple or struct constants containing string literals of 16 bytes or fewer. ([#1512](https://github.com/argotorg/fe/issues/1512)) +- Fixed a critical contract-layout aliasing bug. Repeating a type with an inferred layout parameter, such as `StorageMap`, inside a struct, tuple, nested generic argument, type alias, enum, or static array now gives each structural occurrence an independent value. Previously, distinct maps could receive the same salt, causing writes through one field or array element to overwrite data belonging to another. + + Explicit layout values are now reserved before inferred values are assigned, so mixing explicit and inferred parameters cannot collide regardless of declaration order. Static arrays of layout-parameterized types receive checked per-element assignments, including nested arrays and enum payloads, while intentionally shared explicit parameters and enum overlays continue to share. + + Layout assignments are preserved when values flow through aggregates, pattern matching, indexing, control flow, function and effect calls, and returns. Invalid, unresolved, overflowing, cyclic, or unsupported contract layouts now fail with diagnostics instead of producing partial layouts, silently aliasing data, or crashing the compiler. ([#1515](https://github.com/argotorg/fe/issues/1515)) +- Fixed compiler crashes when emitting events with eight or more total fields. Events support up to 16 non-indexed data fields, with a type diagnostic when that limit is exceeded. Unsatisfied trait bounds involving string literals are now reported instead of allowing invalid constants to reach code generation. ([#1516](https://github.com/argotorg/fe/issues/1516)) +- Message declarations now report argument-count and ABI-type mismatches between `sol("...")` selector signatures and their fields during type checking, including builds that do not emit ABI JSON. Diagnostics identify the offending declaration or field and suggest the corresponding standard-library type when available. ([#1520](https://github.com/argotorg/fe/issues/1520)) +- Fix Solidity signatures for dynamic array event fields, including imported aliases and fixed-size array elements. Report unsupported indexed dynamic fields and generated event constant evaluation failures as diagnostics. ([#1522](https://github.com/argotorg/fe/issues/1522)) +- Fixed a compiler error when a mutable `own` enum parameter, such as `mut _ value: own Option`, is matched with `if let` or `while let` and reassigned. Such functions previously failed to compile with an internal `SlotCarrierMismatch` error. ([#1527](https://github.com/argotorg/fe/issues/1527)) +- Improved pattern coverage checking to detect previously missed unreachable arms, including wildcards after complete boolean matches and redundant arms after irrefutable patterns. Matches over empty enums can now be exhaustive with no arms, and missing-pattern diagnostics report a representative uncovered case. ([#1528](https://github.com/argotorg/fe/issues/1528)) +- Fixed trait resolution across ingots, handling of incomplete solver answers, and method selection by integrating the `tablesolve` trait solver. Improved type-growth limits during trait resolution. ([#1529](https://github.com/argotorg/fe/issues/1529)) +- Fixed spurious "type must be known here" errors when a call's return type is determined only by a trait bound on the callee's generic parameters (for example `Option::map`). Such bounds were previously solved only after the entire function body had been checked, so the result of the call could not be used later in the same function without a redundant type annotation. These bounds are now solved at the call site before the return type is checked against its context, so the annotation is no longer required. The same call-site solving applies when selecting among deferred trait methods: an expected return type can disambiguate candidates after their bounds resolve, and a conflicting return type reports a type mismatch instead of leaving the call unresolved or spuriously ambiguous. ([#1531](https://github.com/argotorg/fe/issues/1531)) +- Fixed clean builds depending on Tree-sitter parser generation order by ensuring parser generation precedes the web asset build. Installing the parser's npm dependencies no longer attempts to build an unused Node addon. ([#1532](https://github.com/argotorg/fe/issues/1532)) +- Aligned runtime ABI argument-size validation with Solidity, fixing differences in whether malformed inputs are accepted or reverted before decoding. ([#1533](https://github.com/argotorg/fe/issues/1533)) +- Fix compiler crashes when indexing empty arrays nested inside arrays, tuples, structs, or enum variants. These accesses now perform the expected bounds-check revert. ([#1547](https://github.com/argotorg/fe/issues/1547)) +- Fix a compiler crash when a `recv` block names a file module instead of a message module. The compiler now reports an error and consistently describes the expected message module. ([#1552](https://github.com/argotorg/fe/issues/1552)) + +### Performance improvements + +- Functions are now deduplicated in MIR after monomorphization. This reduces compile time for large projects. ([#1465](https://github.com/argotorg/fe/issues/1465)) + +### Deprecations and Removals + +- Removed the old integer-address and wrapper-based memory surface, including `MemPtr`, `core::abi::MemoryInput`, `std::evm::MemoryBytes`, `std::evm::mem::alloc`, and the cursor-based `AbiEncoder` API. Migrate typed memory addresses to `*T`, read-only memory regions to `MemSpan`, and owned or writable allocations to `MemBuffer`. The unused `core::convert::Into` trait was also removed; use explicit conversion APIs instead. ([#1469](https://github.com/argotorg/fe/issues/1469)) + + +## 26.2.0 (2026-06-23) + +### Features + +- Contract fields are now immutable by default unless declared with `mut`. Immutable fields must be initialized before every successful `init` exit and are embedded into contract code; declare fields as `mut` to keep using storage-backed mutable contract state. During `init`, immutable field reads before assignment observe the zero/default value, reassignment is allowed, and the last write is the value embedded into the deployed contract. Binding a field without `mut` as a `mut` effect (`uses (mut field)`) is an error everywhere except `init`'s code-backed fields; this applies to explicit handle fields (e.g. `StorPtr`) as well. + + The compiler verifies initialization with a definite-assignment analysis: a field counts as initialized when it is assigned whole-value (including compound assignment such as `+=`) on every path that reaches the end of `init`, whether directly or through helper functions that receive the field via a `mut` effect or a `mut T` argument. Branches merge conservatively and loop bodies are assumed to possibly run zero times (conditions that are literal `true`/`false` are folded), so assignments guarded by runtime-dependent loop conditions are not credited. Member-wise initialization of an aggregate field (`p.a = ...; p.b = ...`) does not count; assign the whole value instead. ([#1334](https://github.com/argotorg/fe/issues/1334)) +- `fe doc` overhaul for message-based contracts: `msg` variants now render + as children of their parent msg page (matching enum variants), contract + pages gain dedicated init and message-handler sections, and `#[test]` + functions are hidden from generated docs by default (restore them with + `--include-tests`). The doc viewer also exposes CSS variables for fonts, + weights, and layout so downstream sites can retheme it without CSS + specificity battles. ([#1419](https://github.com/argotorg/fe/issues/1419)) +- Added `Option::ok_or` and `Option::ok_or_else` to `core`, mirroring Rust's API, plus a `Panic::from(code)` shorthand constructor. Combined with `Result::unwrap`, this lets users attach a typed error value (e.g. `Panic::from(POP_EMPTY)`) to an Option-unwrap so reverts carry meaningful Solidity-compatible selectors instead of always landing on `Panic(0x01)`. ([#1430](https://github.com/argotorg/fe/issues/1430)) +- `StorageMap` now accepts every primitive integer type (`u8`–`u128`, `usize`, `i8`–`i256`, `isize`) and `bool` as a key, in addition to the previously supported `u256`, `Address`, and tuples. The new `StorageKey` impls left-pad each key to 32 bytes via `WordRepr::to_word()`, so slot derivation matches Solidity's `mapping(intN/uintN/bool => V)` convention exactly. Useful for storage layouts that want to pack indices into a single slot (e.g. `mapping(uint128 => V)` queues). ([#1431](https://github.com/argotorg/fe/issues/1431)) +- Improved optimization options for the default Sonatina backend: + + - `-O1`/`--optimize 1` is now distinct from `-O2` and is the default optimization level. It keeps Sonatina's optimization pipeline enabled while using lower exact-search caps for stack shuffling; usually getting close to `-O2` gas and bytecode while substantially reducing compile time. + - `-O0`/`--optimize 0` now and disables the stack shuffling exact solver entirely in favor of a greedy heuristic, making unoptimized builds much faster. + + ([#1435](https://github.com/argotorg/fe/issues/1435)) +- Added core `String` utilities for fixed-width byte round-trips, effective byte length, concatenation, and equality in const and runtime code. ([#1437](https://github.com/argotorg/fe/issues/1437)) +- Lossless `bool` to integer casts with `as` are now allowed. ([#1445](https://github.com/argotorg/fe/issues/1445)) +- Exposed selected raw EVM operations through `std::evm::ops`, including byte/sign-extension, balance/code inspection, gas price, and blob fee/hash reads. ([#1453](https://github.com/argotorg/fe/issues/1453)) +- Added marker-only `#[must_use]` support for functions, structs, and enums, and marked `core::result::Result` as must-use so ignored fallible results are diagnosed unless explicitly discarded with `let _ = ...`. ([#1468](https://github.com/argotorg/fe/issues/1468)) +- Precompiles: + - `std::evm::crypto` precompile wrappers now `Result` + instead of reverting on precompile call failure. + - Added typed wrappers for the remaining EVM crypto precompiles, including + RIPEMD-160, identity, Blake2F, KZG point evaluation, BLS12-381 operations, and + P-256 verification. + - `ecrecover` now rejects non-canonical secp256k1 signatures before returning + a recovered address. + - added `ecrecover_raw` which does not perform canonical signature checks. ([#1468](https://github.com/argotorg/fe/issues/1468)) +- Added `assert!` builtin, e.g. `assert!(ok)`. Takes an optional second string + literal argument: `assert!(ok, "something's not ok")`. Assertion failure results + in a revert, with Solidity-compatible `Error(string)` payload. `assert!` can + also be used in `const fn`s at compile time; assertion failure results in a + compile-time failure. ([#1471](https://github.com/argotorg/fe/issues/1471)) +- Added the `Bounded` trait in `core::num`, exposing inclusive numeric type bounds as `T::min()` and `T::max()` `const fn` methods on all primitive integer types. ([#1474](https://github.com/argotorg/fe/issues/1474)) +- Added the `Abs` and `UnsignedAbs` traits in `core::num`, providing magnitude operations as `const fn` on all signed integer types. `Abs` bundles `abs`, `checked_abs`, `wrapping_abs`, `saturating_abs`, and `overflowing_abs`, each taking a different stance on the asymmetric `T::MIN` edge case. `UnsignedAbs::unsigned_abs()` returns the magnitude in the unsigned type of the same width — handling `T::MIN` without overflow. ([#1474](https://github.com/argotorg/fe/issues/1474)) +- Inherent `impl` blocks now support associated `const` items. Consts may reference the impl's generic parameters and other consts of the same impl, are evaluated at compile time per instantiation, and can be used in both value and type positions (e.g. array sizes): + + ```fe + pub struct Packed {} + + impl Packed { + const LANES: u256 = 256 / BITS + const LANE_MASK: u256 = (1 << BITS) - 1 + + pub fn lanes(self) -> u256 { + Self::LANES + } + } + ``` + + This is the idiomatic place for derived constants on a generic container; previously the math had to be repeated as local bindings in every method. Inherent consts take precedence over trait consts of the same name, with the trait const still reachable via a qualified path like `::X`. + + Further details: + + - Consts are private to the defining module by default; mark them `pub const` to export them. + - Consts of the enclosing impl are in scope unqualified inside the impl, like trait consts in trait default methods. + - Inherent consts can be used as const generic arguments (`Holder`). + - A const on a conditional impl (`impl Wrap where T: Marker`) is only available when the receiver satisfies the bound. + - Two inherent impls of the same type that define the same const are a definition-site conflict, exactly like conflicting inherent methods (regardless of their `where` clauses). Collisions with an enum variant name or with an inherent associated function of the same name are also rejected. + - A const initializer that is not const-evaluable (e.g. a non-`const fn` call) is rejected at its definition, like a top-level `const`. + + ([#1479](https://github.com/argotorg/fe/issues/1479)) +- Added `fe build --emit metadata`, which writes a Solidity-standard contract `metadata.json` per contract (sources with `keccak256`, compiler version, resolved build settings, transitive dependency sources, and ABI) so verifiers like Sourcify can reproduce and check the bytecode. ([#1487](https://github.com/argotorg/fe/issues/1487)) + +### Bugfixes + +- Fixed `fe test` output so failure details are printed immediately after the corresponding failed test status when tests run in parallel. ([#1420](https://github.com/argotorg/fe/issues/1420)) +- Fixed a compiler panic when code_region_len or code_region_offset was called on an unresolved generic contract runtime parameter. ([#1429](https://github.com/argotorg/fe/issues/1429)) +- Fixed a compiler panic when generic associated constants were used in const expressions before their concrete types were known. ([#1429](https://github.com/argotorg/fe/issues/1429)) +- Fixed Sonatina ABI encoding and decoding for negative signed integers narrower than 256 bits. ([#1434](https://github.com/argotorg/fe/issues/1434)) +- Sonatina: + - Fixed EVM encoded-pointer provenance across calls and memory operations, with more precise escape summaries for i256 pointer carriers, aggregates, malloc-derived pointers, and local/argument/nonlocal storage. This also improves memory-planning performance by avoiding unnecessarily conservative escape assumptions. + - Fixed GVN value-phi materialization so cached/generated value phis are rejected unless they cover the currently reachable predecessors. + - Improved stackify spill slot reuse logic. This fixes a bug where a scratch slot could be reused for values that overlap during phi/control-flow transitions. + + ([#1435](https://github.com/argotorg/fe/issues/1435)) +- Fixed ABfI encoding for `evm.call` message payloads with multiple dynamic fields, and for dynamic custom error payloads. ([#1439](https://github.com/argotorg/fe/issues/1439)) +- Fixed expression-context `&&` and `||` lowering so right-hand side expressions are only evaluated when short-circuiting requires them. ([#1447](https://github.com/argotorg/fe/issues/1447)) +- Fixed compiler panic when lowering zero-sized effect types. ([#1449](https://github.com/argotorg/fe/issues/1449)) +- Allowed blanket implementations of external traits when the implementor is a type parameter directly bounded by a local trait. ([#1450](https://github.com/argotorg/fe/issues/1450)) +- Fixed calls through projected effect providers, such as `with (store.map)`, so nested calls preserve the projected provider's concrete target type. ([#1459](https://github.com/argotorg/fe/issues/1459)) +- Sonatina: + - Fix unchecked signed EVM division and remainder for narrow signed integer types. + - Fix EVM codegen for spilled phi values so control-flow joins do not let one edge's object storage clobber another edge's phi source. ([#1470](https://github.com/argotorg/fe/issues/1470)) +- Fixed the parser rejecting multiple items on the same line inside `impl`, `trait`, and `extern` blocks. The tree-sitter grammar already allowed `impl Foo for Bar { fn a() {} fn b() {} }`, but the main parser required a newline between items. ([#1475](https://github.com/argotorg/fe/issues/1475)) +- Fixed compiler panics when tuple type aliases were used as event or custom error fields. ([#1481](https://github.com/argotorg/fe/issues/1481)) +- Fixed JSON ABI generation for events so fields marked with `#[indexed]` are emitted with `"indexed": true`. ([#1485](https://github.com/argotorg/fe/issues/1485)) +- Fixed contract field layout for nested types containing inferred const slot parameters. Contract fields whose storage slot or address space cannot be determined are now reported as errors instead of being laid out incorrectly. ([#1492](https://github.com/argotorg/fe/issues/1492)) +- Trait associated `const` implementations are now validated against their declarations. A missing associated const, type mismatch (including param-typed const defaults), or otherwise ill-formed const definitions are reported as errors instead of being silently accepted or producing a panic in a later stage. ([#1492](https://github.com/argotorg/fe/issues/1492)) +- Fixed a compiler panic when an `if let`/`while let` condition's pattern was not followed by `=`. The parser now reports a "expected `=`" error and recovers instead of crashing. ([#1497](https://github.com/argotorg/fe/issues/1497)) + +### Performance improvements + +- Fe: + - Lower named aggregate constants as Sonatina const refs. + - Only emit Sonatina data regions for constants that are explicitly used as code regions. + - Avoid duplicated const data in generated bytecode for large const arrays. + - Improve runtime lowering for const-backed local borrows. + - Avoid emitting real globals/data entries for zero-sized aggregate constants. + - Lower view aggregate arguments in a representation-flexible way so the compiler can avoid unnecessary aggregate allocation and copying. + Sonatina: + - Compact and specialize constref loads. + - Deduplicate const data. + - Coalesce adjacent const loads. + - Prune dead const sections and functions. + - Reduce compile-time blowups for large const arrays. ([#1433](https://github.com/argotorg/fe/issues/1433)) +- Sonatina: + - Improved stack shuffling performance via cache improvements and short-circuiting trivial operand-prep cases. + - Improved memory placement performance. + + ([#1435](https://github.com/argotorg/fe/issues/1435)) +- Improved Solidity ABI encoding and decoding performance for dynamic payloads by avoiding redundant memory copies and adding faster paths for canonical dynamic arrays. ([#1440](https://github.com/argotorg/fe/issues/1440)) +- Calldata ABI decode optimizations: + - Decode contract `recv` arguments directly from calldata instead of first copying the payload into memory. + - Inline hot ABI decoding helpers and storage map key paths to reduce generated wrapper overhead. ([#1448](https://github.com/argotorg/fe/issues/1448)) +- Sonatina: + - EVM lowering now goes via a "machine EVM" instruction set, with additional + optimizations and better stack and memory management. + - Improve inlining for small specialized helpers, especially helpers with known callsite arguments or scalarizable object arguments. + - Sink pure computations into the branch or join block where their results are used, reducing unnecessary work and stack pressure. ([#1470](https://github.com/argotorg/fe/issues/1470)) +- Fe: + - Avoid object-backed runtime storage for read-only owned aggregates, tuple destructuring, and read-only aggregate helper calls. + - Construct runtime aggregate values directly. + Sonatina: + - Account for scalarizable aggregate inserts, extracts, and returns when deciding whether to inline small helpers. + - Copy aggregate insert-value webs directly to memory during aggregate legalization instead of materializing source aggregate slots. + - Skip zero-sized aggregate leaf memory operations during aggregate legalization. ([#1483](https://github.com/argotorg/fe/issues/1483)) +- Sonatina: + - Keep explicit `inline(never)` annotations on generated const-data helper variants, preserving source-level code-size controls. + - Emit large EVM constants in shorter forms when a small runtime operation can replace a much larger literal. + - Remove duplicate private helper bodies after EVM lowering when they compile to identical bytecode. + - Remove repeated constant-only helper parameters when every private call passes the same value. + - Drop unnecessary overflow checks for offsets inside statically sized EVM memory allocations. + - Deduplicate terminal EVM return/revert code. + - Replace static const object initialization with direct scalar values where possible. + - Reuse fixed scratch slots for private temporary EVM buffers whose lifetimes do not overlap. + - Reuse known EVM free-pointer bounds across internal calls to avoid redundant allocator setup. + - Build private return/revert payload buffers at fixed addresses instead of routing them through the heap allocator. ([#1488](https://github.com/argotorg/fe/issues/1488)) +- Avoid lowering read-only scalars as memory-backed places. ([#1489](https://github.com/argotorg/fe/issues/1489)) + + +## 26.1.0 (2026-04-30) + +### Features + +- Update the core ABI helper traits and APIs. Custom ABI implementations now use `AbiSize::HEAD_SIZE`, `payload_size`, `Decode::decode_payload`, and `AbiSpan::payload_end`; encoders are created with a fixed output size, and root versus field encoding is split into explicit helpers such as `encode_alloc` and `encode_single_root_alloc`. ([#1404-abi](https://github.com/argotorg/fe/issues/1404-abi)) +- Added `assert_msg(cond, message)`, which reverts with a Solidity-compatible `Error(string)` payload (selector `0x08c379a0`) when `cond` is false. ([#1348](https://github.com/argotorg/fe/issues/1348)) +- Replace the git resolver backend from git2 (libgit2) to gitoxide (pure Rust). This removes the OpenSSL/libgit2 C dependency and adds sparse checkout support, allowing the resolver to fetch only the required subdirectory of a remote repository instead of the entire tree. ([#1383](https://github.com/argotorg/fe/issues/1383)) +- Expose missing `Ctx` trait APIs: `origin`, `coinbase`, `prevrandao`, `gaslimit`, `chainid`, `basefee`, `selfbalance`, and `blockhash`. ([#1388](https://github.com/argotorg/fe/issues/1388)) +- Add `#[error]` attribute for Solidity-compatible custom error types. Structs annotated with `#[error]` get auto-generated `ErrorVariant`, `AbiSize`, and `Encode` implementations with a compile-time computed 4-byte selector. A new `revert_error()` function emits selector-prefixed ABI-encoded revert data. Includes a predefined `Panic` error type matching Solidity's `Panic(uint256)`. ([#1395](https://github.com/argotorg/fe/issues/1395)) +- Improve `fe doc` and generated documentation bundles: message declarations and message variants now render with dedicated item kinds and complete signatures, `fe doc --builtins --stdlib-path ` can document a stdlib loaded from disk, docs JSON includes pre-rendered Markdown HTML, and the web viewer can load gzipped docs JSON bundles. ([#1401](https://github.com/argotorg/fe/issues/1401)) +- Replace backend lowering with the staged SMIR/NSMIR/MIR pipeline. This expands compile-time function evaluation, including const calls that produce aggregate values and symbolic array repeat expressions such as `[value; N]` where `N` is a const generic. ([#1404](https://github.com/argotorg/fe/issues/1404)) +- Add `static_assert(bool_expr)` for compile-time assertions, with diagnostics that show evaluated comparison operands and operators when an assertion fails. ([#1412](https://github.com/argotorg/fe/issues/1412)) +- Expand `const fn` evaluation to support mutable locals, assignments, aggregate field and index writes, `while` and `while let` loops with `break` and `continue`, match/destructuring patterns, and const operator trait implementations. This allows more ordinary helper code, including array and proof builders, to run during CTFE. ([#1413](https://github.com/argotorg/fe/issues/1413)) +- The standard prelude now includes `sol`, `Bytes`, `Decode`, and `AbiDecoder`, so common Solidity selector and ABI decoding code no longer needs explicit imports. ([#1417](https://github.com/argotorg/fe/issues/1417)) +- Checked arithmetic overflow now reverts with a Solidity-compatible `Panic(uint256)` payload (code `0x11`) instead of empty revert data. This makes overflow failures identifiable by off-chain tooling such as Foundry, Hardhat, and block explorers. +- Extend `#[test(should_revert)]` with `panic` and `selector` arguments for verifying revert payloads. `#[test(should_revert, panic = 0x11)]` checks that the test reverts with a Solidity-compatible `Panic(uint256)` and the expected code. `#[test(should_revert, selector = 0x4e487b71)]` checks only the 4-byte error selector. +- Make primitive numeric and boolean intrinsics, `IntDowncast` methods, and EVM `addmod`/`mulmod` const-evaluable. This enables modular arithmetic and field-arithmetic-heavy code to be used in `const fn` and `static_assert`. +- `Result::unwrap()` now emits selector-prefixed revert data for `#[error]` types. Previously, `unwrap()` on a `Result` where `E` is an `#[error]` type would ABI-encode the error without the 4-byte selector. Now the monomorphizer routes these to `revert_error()` instead of `revert()`, producing Solidity-compatible error payloads. +- `assert(false)` now reverts with a Solidity-compatible `Panic(uint256)` payload (code `0x01`) instead of empty revert data. This makes assertion failures identifiable by off-chain tooling. + +### Bugfixes + +- Fix several array and aggregate codegen bugs. Readonly array locals, call results, constructor arguments, and view parameters now preserve their code-backed or borrowed representation until materialization is required. Code-backed arrays copied to storage are staged through memory before word loads and use storage slot offsets instead of byte offsets. Runtime array literals now populate each element before loading the aggregate value. ([#1404-array-codegen](https://github.com/argotorg/fe/issues/1404-array-codegen)) +- Fix never type (`!`) handling in trait checking and lowering. The compiler now avoids probing trait implementations for bare `!`, producing the intended diagnostic for invalid uses, and treats extern functions declared `-> !` as intrinsically non-returning even when they appear in functions with generic or associated return types. ([#1410-never-type](https://github.com/argotorg/fe/issues/1410-never-type)) +- Suppress downstream type mismatch diagnostics when the underlying type is already invalid. This reduces cascading error noise and makes compiler output easier to read. ([#1386](https://github.com/argotorg/fe/issues/1386)) +- Fix chained method call type inference (e.g. `result.map(fn1).map(fn2)`). The compiler now correctly unifies types through canonicalized receivers, resolving incorrect type mismatch errors on valid method chains. ([#1389](https://github.com/argotorg/fe/issues/1389)) +- Overhaul LSP stability and observability: worker-thread panics now surface as visible errors instead of being silently swallowed, a dual-layer logging system writes detailed diagnostics to workspace-local `.fe-lsp/` log files with automatic rotation and retention, and a dispatch-deadlock in concurrent request handling has been fixed via an upgraded async-lsp dependency. ([#1392](https://github.com/argotorg/fe/issues/1392)) +- Remove redundant `EvmResultExt` trait and `unwrap_or_revert()` method. Since `Result::unwrap()` already ABI-encodes errors on revert via `panic_with_value`, `unwrap_or_revert()` was a leftover that duplicated this behavior. ([#1395](https://github.com/argotorg/fe/issues/1395)) +- Fix several MIR correctness issues: `fe build --contract` now filters Sonatina IR output correctly, ingot builds work when contracts are re-exported from the root module, generic calls can forward concrete EVM effects, and escaping storage borrows are rejected. ([#1404](https://github.com/argotorg/fe/issues/1404)) +- Report invalid dependency paths in `fe.toml` as configuration diagnostics instead of panicking. ([#1408](https://github.com/argotorg/fe/issues/1408)) +- Fix `StorageBytes.encode_return` so multi-word `bytes` values are ABI-encoded from allocated return memory instead of clobbering scratch memory. ([#1409](https://github.com/argotorg/fe/issues/1409)) +- Fix CTFE evaluation of unchecked and wrapping numeric intrinsics to use fixed-width word semantics for wrapping negation, bitwise not, shifts, and division/remainder edge cases. +- Fix generic operator overload resolution so ambiguous trait method candidates are preserved and can be disambiguated by argument constraints. Generic wrappers such as field element types can now support mixed operator impls like `Fr + u256`. + +### Performance improvements + +- Improve CTFE performance and scale by reducing repeated const interning, using copy-on-write aggregate stores, caching semantic bodies and instances, and raising the default CTFE step limit to 1,000,000. Larger constant computations such as Poseidon test vectors can now complete during normal checks. + +### Internal Changes - for Fe Contributors + +- Bump sonatina to eb50941. ([#1393](https://github.com/argotorg/fe/issues/1393)) diff --git a/CLI.md b/CLI.md new file mode 100644 index 0000000000..fc3628e24f --- /dev/null +++ b/CLI.md @@ -0,0 +1,593 @@ +# Fe CLI behavior (current implementation) + +This document describes the **current** behavior of the `fe` CLI as implemented in this repository (crate `crates/fe`). +It is not a stability guarantee. + +## Conventions + +### Global options + +- `--color `: controls colored output (default: `auto`). + +### Unstable developer tracing + +`fe dev trace emit` produces compiler-derived trace JSONL with phase-owned MIR facts, source-local display names, MIR storage decisions, Sonatina trace-view CFG/loop facts through a Fe adapter, and actual EVM bytecode instruction/gas facts. It accepts a standalone `.fe` file, an ingot directory, or a workspace member name; one bundle covers every runtime module and contract of the target (workspace roots are rejected, pass a member). The target must compile: a bundle asserts compiler-emitted provenance, so emission prints the diagnostics and refuses if `fe check` would fail. Backend storage allocation, target bytecode loop membership, and zext causality are still explicit gaps. Whole-file code-object source attribution is coarse and should be read as low confidence. `fe dev trace validate` re-checks an emitted bundle and reports the schema-validation summary. + +``` +fe dev trace emit crates/fe/tests/fixtures/trace/fib_demo.fe --out target/fib.trace.jsonl +fe dev trace validate --from target/fib.trace.jsonl +``` + +`fe dev debug emit --format ethdebug` derives an ethdebug instruction/source artifact from a validated trace bundle; `fe dev debug validate` re-checks an artifact (and its optional Fe origin/confidence attribution details). + +``` +fe dev debug emit --format ethdebug --from target/fib.trace.jsonl --out target/fib.ethdebug.json --attribution-details target/fib.attribution-details.json +fe dev debug validate --format ethdebug --input target/fib.ethdebug.json --attribution-details target/fib.attribution-details.json +``` + +Emit also prints a per-program human-readable attribution summary, including when no +attribution details file is requested. Its counts describe the emitted view; +they are not a completeness guarantee and are not a machine-readable API. + +#### Attribution and capability contract + +The observable compiler path supports contract creation/runtime sections, not +standalone `main` sections. It provides partial instruction attribution, not +complete source coverage or exhaustive transformation history. An exact path +in the recorded graph is not proof that every contributing source origin was +recorded. Shared generated paths must not select one requesting statement as +their unique source; per-site mappings remain useful where justified. + +The fact schema and relational projections already represent types, lexical +scopes, variables, and location ranges. This does not mean the compiler +populates all of them: the current source-local producer emits unknown types +and absent scopes, and the EVM trace path does not provide physical variable +location ranges. Backend unmapped reasons are validated in aggregate and +preserved per emitted instruction as typed `attribution_gap` facts. The debug +bundle and optional attribution details expose them as +`classification_reason`, including +missing provenance, missing machine instructions, label/fixup-only emission, +synthetic emission, unknown backend reasons, and missing PC-map entries. +`NoSourceAttributionEvidence` identifies an unmapped instruction without a +more specific explanation; it does not establish why the evidence is missing. +Consumers must not interpret these missing capabilities as complete negative +evidence. + +Source identities belong to HIR/MIR, transformation relationships to the +transform that knows them, and emitted layout to the backend/linker. Exporters +project those facts; they must not invent missing attribution. The shared +panic regression exercises generated-block reuse at O0/O2 in both statement +orders. A separate optimized mask canary checks a surviving constant's source +against genuine contributors and a live neighboring expression. These are +bounded semantic checks, not general optimizer fusion or multi-parent history. + +The debug artifact uses a Fe-specific versioned schema, not an upstream +ethdebug program document. Its wrapper, absent contract definitions, and absent +source contents require adaptation before stock-consumer use. The local +validator checks the Fe schema, not upstream conformance or debugger behavior. +Code-object export accepts the typed EVM creation and runtime kinds only; +native, unknown, and mixed EVM/unsupported bundles are rejected rather than +partially exported. The attribution index uses the same admission rule. +Trace emission compiles +separately from ordinary build/test execution, so it is not yet a bundle bound +to the exact artifact executed by a failing test. These developer interfaces +are not a stable, target-neutral instrumentation format. + +Trace bundles currently use schema v2, and attribution details use schema +`fe-ethdebug-attribution-details-v1`. Version matching is exact. Attribution +details are an experimental implementation detail with no compatibility +guarantees. They may change or disappear, so regenerate older experimental +outputs rather than relying on compatibility. + +### Output streams + +- **Stdout**: “normal” command output (e.g. artifact paths, formatted file paths, dependency trees). +- **Stderr**: diagnostics, errors, warnings, and hints. + +### Message prefixes + +User-facing diagnostics follow these conventions: + +- `Error: ...` for errors (typically causes non-zero exit for `build`, `check`, `test`, `fmt --check`). +- `Warning: ...` for non-fatal warnings. +- `Hint: ...` for suggestions following an error. + +The CLI intentionally does **not** use emoji/icon markers. + +### Exit codes + +- `0` on success. +- `1` on failure. +- `2` on CLI usage/argument parsing errors (emitted by `clap`, e.g. unknown flags or missing values). + +Notable exceptions: + +- `fe check` / `fe build` / `fe tree` on a workspace root with **no members** prints a warning explaining why (no members configured, or configured paths don't exist) and exits `0`. + +### Paths and UTF-8 + +Many CLI paths use `camino::Utf8PathBuf` internally. If a relevant path (including the current directory) is not valid UTF-8, the CLI may error. + +### Colors + +Some subcommands emit ANSI-colored output: + +- `fe fmt --check` prints colored diffs. +- `fe test` prints colored `ok` / `FAILED`. +- `fe tree` renders cycle nodes in red via ANSI escape codes. + +Color emission is controlled by `--color` and respects common environment conventions (`CLICOLOR_FORCE`, `NO_COLOR`, `CLICOLOR`) in `auto` mode. + +## Target resolution (paths vs workspace member names) + +Several subcommands take a single “target” argument which can be: + +- a **standalone** `.fe` file, +- a **directory** containing `fe.toml` (ingot root or workspace root), +- or a **workspace member name** (when run from within a workspace context). + +The general rules are: + +1) **`fe.toml` file paths are rejected**. Pass the containing directory instead. +2) A path that is a **file** must end in `.fe` to be treated as a source file. +3) A path that is a **directory** must contain `fe.toml` to be treated as a project. +4) A **workspace member name** is only considered when the argument: + - looks like a name (ASCII alphanumeric and `_`), and + - the current working directory is inside a workspace context that contains a matching member. + - If the argument also exists as a filesystem path, the CLI requires that the name and path refer to the same member (see disambiguation below). + - Note: name lookup uses the workspace’s “default selection” of members. If the workspace `fe.toml` sets `default-members`, only those members are considered by default; non-default members may need to be targeted by path. + +### Disambiguation: “name” vs existing path + +If the argument both: + +- looks like a workspace member name, **and** +- exists as a path, + +then the CLI requires that they refer to the **same** workspace member; otherwise it errors with a disambiguation message (e.g. “argument matches a workspace member name but does not match the provided path”). + +### Standalone vs ingot context for `.fe` files + +For `build` and `check`: + +- If you pass a `.fe` file that lives under an **ingot** (nearest ancestor `fe.toml` parses as an ingot config), the command runs in **ingot context** (so imports resolve as they would from the ingot). + - Override: `--standalone` forces standalone mode for that `.fe` file target. +- If you pass a `.fe` file that lives under a **workspace root** (nearest ancestor `fe.toml` parses as a workspace config), the command treats the file as **standalone** unless you explicitly target the workspace/ingot by passing a directory or member name. + +## `fe build` + +Compiles Fe contracts to EVM bytecode. + +Builds use the Sonatina codegen pipeline and generate EVM bytecode directly. + +### Synopsis + +``` +fe build [--standalone] [--contract ] [--optimize ] [--out-dir ] [--report [--report-out ] [--report-failed-only]] [path] +fe build --from-metadata [--contract ] [--optimize ] [--out-dir ] [--emit ] +``` + +If `path` is omitted, it defaults to `.`. + +### Inputs + +`fe build` accepts: + +- a `.fe` file path (standalone mode unless the file is inside an ingot; see above), +- an ingot directory (contains `fe.toml` parsing as `[ingot]`), +- a workspace root directory (contains `fe.toml` parsing as `[workspace]`), +- a workspace member name (when run from inside a workspace). + +### Output directory + +- Standalone `.fe` file default: `/out` +- Ingot directory default: `/out` +- Workspace root default: `/out` +- Override: `--out-dir ` + - If `` is relative, it is resolved relative to the **current working directory**. + - Note: default output directories are derived from the **canonicalized** (absolute) target path, so the printed `Wrote ...` paths are absolute by default unless `--out-dir` is set. + +### What gets built + +#### Standalone `.fe` file target + +- The compiler analyzes the file’s top-level module. +- Contracts are discovered and, by default, **all** contracts in that module are built. + +#### Ingot target + +- The ingot and its dependencies are resolved/initialized. +- `src/lib.fe` is treated as the ingot’s root module. If it is missing, the CLI behaves as if an empty `src/lib.fe` existed (a “phantom” root module). +- Contracts are discovered across the ingot’s entire source set (`src/**/*.fe` top-level modules), not only `src/lib.fe`. +- By default, **all** discovered contracts are built. + +#### Workspace root target + +Workspace builds use a **flat output directory**: + +- All member artifacts are written directly into the same `out` directory. +- Before building, the CLI checks for **artifact name collisions** across workspace members: + - Artifact filenames are derived from a sanitized contract name (see below). + - Collision detection is **case-insensitive** (e.g. `Foo` and `foo` collide) to avoid filesystem-dependent behavior on case-insensitive filesystems. + - If multiple contracts (possibly from different members) map to the same artifact base name, the build errors and lists the conflicts. + +Workspace member selection: + +- The set of members considered is the workspace’s “default selection”. + - If `default-members` is present, only those members are built. + - Otherwise, all discovered members are built (including any `dev` members). +- Workspace builds skip members with **zero** contracts; if all selected members have zero contracts, the build fails with `Error: No contracts found to build`. + +### Contract selection: `--contract ` + +- For standalone files and ingots: + - If `` exists, only that contract is built. + - If not found, the build errors and prints “Available contracts:” with a list. +- For workspace roots: + - If **exactly one** workspace member contains the contract, that member is built for that contract. + - If **zero** members contain the contract, it errors. + - It also prints “Available contracts:” for the workspace (unique contract names), capped at `50`, followed by `... and N more` if applicable. + - If **multiple** members contain the contract, it errors and prints a “Matches:” list and a hint to build a specific member by name or path. + +### Optimization + +Optimization is controlled by `--optimize ` / `-O `. + +Defaults: + +- `--optimize` defaults to `1`. +- Supported levels: + - `0`: none + - `s`: size-oriented + - `1`: balanced (default) + - `2`: aggressive + + +### Artifacts and filenames + +For each built contract, `fe build` writes (depending on `--emit`): + +- `/.bin` (deploy bytecode, hex + trailing newline) +- `/.runtime.bin` (runtime bytecode, hex + trailing newline) +- `/.abi.json` (Solidity-compatible ABI; only when `--emit abi`) +- `/.metadata.json` (Solidity-standard contract metadata for verifiers like Sourcify; only when `--emit metadata`) + +For the Sonatina backend, `.bin` is the **init section** bytes and `.runtime.bin` is the **runtime section** bytes. + +The `metadata.json` artifact follows the Solidity Contract Metadata schema (`version: 1`), adapted to Fe. It is a complete, deterministic recompilation input: rebuilding with the same compiler version, `sources`, and `settings` reproduces the same bytecode. Its shape: + +``` +{ + "version": 1, + "language": "Fe", + "compiler": { "version": "", "commit": "" }, + "sources": { + "": { "keccak256": "0x...", "content": "..." }, ... + }, + "settings": { + "compilationTarget": { "": "" }, + "optimizer": { "level": "0|1|2|s" }, + "arithmetic": "checked|unchecked", + "dependencyArithmetic": "defer|checked|unchecked", + "evmVersion": "osaka", + "ingots": [ + { + "name": "", "version": "|null", "namespace": "", + "arithmetic": "checked|unchecked", "dependencyArithmetic": "defer|checked|unchecked", + "dependencies": { "": "" } + }, ... + ] + }, + "output": { "abi": [ ... ] } +} +``` + +`` is the file's path relative to its owning ingot root (e.g. `src/counter.fe`); for a +standalone `.fe` target, it is the file's basename. `sources` contains every `.fe` file of the +contract's owning ingot **plus all transitive dependency ingots**, the latter namespaced by the +ingot's dependency alias (e.g. `mylib/src/lib.fe`). The bundled `core` and `std` are excluded +because they are pinned to `compiler.version` (a verifier re-runs the same compiler, which ships +them). `settings.ingots[]` records, per non-builtin ingot, what a verifier needs to regenerate its +`fe.toml` and `src/` layout. + +The on-screen output is per-artifact: + +``` +Wrote /.bin +Wrote /.runtime.bin +``` + +Filenames are “sanitized” from contract names: + +- Allowed: ASCII alphanumeric, `_`, `-` +- Other characters become `_` +- If the sanitized name is empty, it becomes `contract` + +This sanitization is also what the workspace collision check uses. + +### Rebuilding from metadata: `--from-metadata` + +`fe build --from-metadata ` rebuilds a contract from a `.metadata.json` +recompilation input (as produced by `--emit metadata`) instead of a source tree. `-` reads the +JSON from stdin, so external toolchains can pipe a synthesized metadata document into a single +`fe build` invocation. All diagnostics go to stderr. + +Behavior: + +- The recorded project (all `sources`, one regenerated `fe.toml` per `settings.ingots[]` entry) is + materialized into a temporary directory and built through the normal ingot build path; the + bundled `std`/`core` are provided by the compiler. +- **Contract selection**: defaults to the contract recorded in `settings.compilationTarget`; + `--contract ` overrides it. +- **Optimizer level**: defaults to `settings.optimizer.level`; an explicit `-O`/`--optimize` wins, + with a warning on stderr that the rebuilt bytecode will not match the verified artifact. +- **Arithmetic**: the per-ingot effective `arithmetic` values from the metadata are applied via + the regenerated `fe.toml` files (`dependency-arithmetic` is deliberately not re-applied; the + metadata records post-forcing values). +- **Version check**: if `compiler.version` differs from the running compiler, a warning is printed + to stderr (no abort); exact bytecode reproduction is only guaranteed with the same version. +- **Output**: artifacts are selected with `--emit` as usual and written to `--out-dir`, which + defaults to `./out` (relative to the current working directory, since there is no project + directory to anchor to). + +Errors (exit code 1): unreadable input, invalid JSON, `language != "Fe"`, missing `sources`, or a +missing/rootless `settings.ingots`. Combining `--from-metadata` with the `[path]` argument, +`--ingot`, `--standalone`, or `--report` is a CLI usage error (exit code 2). + +### Reports: `--report` + +`fe build` can optionally write a `.tar.gz` debugging report (useful for sharing failures): + +- `--report`: enable report generation. +- `--report-out `: output path (default: `fe-build-report.tar.gz`). +- `--report-failed-only`: only write the report if `fe build` fails. + +The build report is best-effort and includes: + +- `inputs/`: the ingot or `.fe` file inputs (same rules as `fe check` / `fe test`). +- `artifacts/`: emitted Sonatina IR and bytecode artifacts (when available). +- `errors/`: best-effort captured errors/panics (if any). +- `meta/`: environment and tool metadata. + +## `fe check` + +Type-checks and analyzes Fe code (no bytecode output). + +### Synopsis + +``` +fe check [--standalone] [--dump-mir] [--report [--report-out ] [--report-failed-only]] [path] +``` + +If `path` is omitted, it defaults to `.`. + +### Inputs + +Same target resolution rules as `fe build`: + +- `.fe` file, ingot directory, workspace root directory, or workspace member name. + +### Workspace behavior + +- `fe check ` checks all members in the workspace’s default selection. + - If the workspace `fe.toml` sets `default-members`, only those member paths are checked. + - Otherwise, all discovered members are checked. +- If the selection is empty, it prints a warning explaining why (no members configured, or configured paths don't exist on disk) and exits `0`. + +### Dependency errors + +When checking an ingot with dependencies, if downstream ingots have errors, `fe check` prints a summary line: + +- `Error: Downstream ingot has errors` +- or `Error: Downstream ingots have errors` + +Then, for each dependency with errors, it prints a short header (name/version when available) and its URL, followed by emitted diagnostics. + +### Optional outputs + +- `--dump-mir`: prints MIR for the root module (only when there are no analysis errors). + +### Reports: `--report` + +`fe check` can optionally write a `.tar.gz` debugging report (useful for sharing failures): + +- `--report`: enable report generation. +- `--report-out `: output path (default: `fe-check-report.tar.gz`). +- `--report-failed-only`: only write the report if `fe check` fails. + +The check report is analysis-only and includes: + +- `inputs/`: the ingot or `.fe` file inputs. +- `errors/`: diagnostics output (when available). +- `artifacts/`: MIR dump (when available). +- `meta/`: environment and tool metadata. + +## `fe tree` + +Prints the ingot dependency tree. + +### Synopsis + +``` +fe tree [path] +``` + +If `path` is omitted, it defaults to `.`. + +### Inputs + +`fe tree` accepts: + +- a directory path (ingot root or workspace root), +- a workspace member name (when run from inside a workspace). + +Unlike `build`/`check`, `fe tree` does not take a `.fe` file target. + +### Output format + +The tree output is a text tree using `├──`/`└──` connectors. + +Annotations: + +- Cycle closures are labeled with ` [cycle]`. +- Local → remote edges are labeled with ` [remote]`. +- Nodes that are part of a cycle are rendered in red via ANSI escape codes. + - This respects `--color` (and `NO_COLOR` in `auto` mode). + +### Workspace roots + +When the target is a workspace root, `fe tree` prints a separate tree per member, each preceded by: + +``` +== == +``` + +### Diagnostics and exit status + +If `fe tree` prints any `Error:` diagnostics (including ingot initialization diagnostics like dependency cycles), it exits `1`. + +Even when it exits `1`, it still prints the dependency tree for the target (best-effort). + +## `fe fmt` + +Formats Fe source code. + +### Synopsis + +``` +fe fmt [path] [--check] +``` + +### Inputs + +- If `path` is a file: formats that single file. +- If `path` is a directory: formats all `.fe` files under that directory (recursive). +- If `path` is omitted: finds the current project root (via `fe.toml`) and formats all `.fe` files under `/src`. + +### `--check` + +- Does not write changes. +- Prints a unified diff for each file that would change. +- Exits `1` if any files are unformatted (or if IO errors occur). + +## `fe test` + +Runs Fe tests via the test harness (revm-based execution). + +### Synopsis + +``` +fe test [--filter ] [--jobs ] [--grouped] [--show-logs] [--optimize ] [--trace-evm] [--trace-evm-keep ] [--trace-evm-stack-n ] [--debug-dir ] [--report [--report-out ]] [--report-dir [--report-failed-only]] [--call-trace] [path]... +``` + +### Inputs + +- Zero or more paths (files or directories). +- Supports glob patterns (e.g. `crates/fe/tests/fixtures/fe_test/*.fe`). +- When omitted, defaults to the current project root (like `cargo test`). + +### Discovery and filtering + +- Tests are functions marked with a `#[test]` attribute. +- `--filter ` is a substring match against the test’s name. + +### Execution + +- `--jobs ` controls how many suites run in parallel (`0` = auto). +- By default, parallel execution uses per-test jobs after suite discovery. +- `--grouped` keeps suite-by-suite execution (each worker runs whole suites). + +### Debugging + +- `--trace-evm`, `--trace-evm-keep`, `--trace-evm-stack-n` enable EVM opcode tracing. +- `--debug-dir ` writes debug outputs (traces) into a directory. +- `--call-trace` prints a normalized call trace for each test. + +### Output + +- Per-test output is `PASS [s] ` / `FAIL [s] ` (colored). +- In multi-input runs, output is tabular: ` `, with suite names colored magenta. +- Progress/status labels include `COMPILING`, `READY` (blue), `PASS` (green), `FAIL` (red), and `ERROR` (red). +- `--show-logs` prints EVM logs (when available). +- A summary is printed if at least one test ran. +- If a suite has no tests, it prints `Warning: No tests found in ` and continues (exit code is still `0` if there are no failures elsewhere). + +### Reports: `--report` and `--report-dir` + +- `--report` writes a single `.tar.gz` report (default output: `fe-test-report.tar.gz`). +- `--report-dir ` writes one `.tar.gz` report per input suite into `` (useful with globs). +- `--report-failed-only` only writes per-suite reports for failing suites (requires `--report-dir`). + +Optimization flags: + +- Optimization is controlled by `--optimize ` / `-O `. +- Supported levels are `0`, `s`, `1`, and `2`. + +## `fe new` + +Creates a new ingot or workspace layout. + +### Synopsis + +``` +fe new [--workspace] [--name ] [--version ] +``` + +### Behavior + +- `fe new ` creates an ingot: + - `/fe.toml` (ingot config) + - `/src/lib.fe` (conventional root module; missing `src/lib.fe` is treated as an empty root module) +- `fe new --workspace ` creates a workspace root with `/fe.toml`. + +Safety checks: + +- Refuses to overwrite an existing `fe.toml` or `src/lib.fe`. +- Errors if the target path exists and is a file. + +Workspace suggestion: + +- After creating an ingot, if an enclosing workspace is detected, `fe new` may print a suggestion to add the ingot path to the workspace’s `members` (or `members.main` for grouped configs). +- If workspace member discovery fails, it prints a warning: + +``` +Warning: failed to check workspace members:
+``` + +## `fe completion` + +Generates shell completion scripts for `fe`. + +### Synopsis + +``` +fe completion +``` + +This writes the completion script to **stdout**. Supported shells are determined by `clap_complete` (commonly: `bash`, `zsh`, `fish`, `powershell`, `elvish`). + +## `fe lsif` + +Generates an LSIF index for code navigation. + +### Synopsis + +``` +fe lsif [-o, --output ] [path] +``` + +- If `path` is omitted, it defaults to `.`. +- If `--output` is omitted, the index is written to **stdout**. + +## `fe scip` + +Generates a SCIP index for code navigation. + +### Synopsis + +``` +fe scip [-o, --output ] [path] +``` + +- If `path` is omitted, it defaults to `.`. +- `--output` defaults to `index.scip`. diff --git a/Cargo.lock b/Cargo.lock index 77249859e1..0512371a03 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,3585 +1,8545 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "addr2line" -version = "0.21.0" +name = "act-locally" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "ef9a921eb67a664d9e4d4ec3cc00caac360326f12625edc77ec3f5ce60fa7254" dependencies = [ - "gimli", + "futures", + "smol", + "tracing", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] -name = "alloy-primitives" -version = "0.7.2" +name = "alloy-eip2124" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525448f6afc1b70dd0f9d0a8145631bf2f5e434678ab23ab18409ca264cae6b3" +checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ + "alloy-primitives", "alloy-rlp", - "bytes", - "cfg-if 1.0.0", - "const-hex", - "derive_more", - "hex-literal", - "itoa", - "ruint", - "tiny-keccak", + "crc", + "serde", + "thiserror 2.0.18", ] [[package]] -name = "alloy-rlp" -version = "0.3.4" +name = "alloy-eip2930" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ - "bytes", + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", ] [[package]] -name = "arrayvec" -version = "0.7.2" +name = "alloy-eip7702" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "k256", + "serde", + "thiserror 2.0.18", +] [[package]] -name = "atty" -version = "0.2.14" +name = "alloy-eip7928" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +checksum = "d3231de68d5d6e75332b7489cfcc7f4dfabeba94d990a10e4b923af0e6623540" dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", ] [[package]] -name = "aurora-engine-modexp" -version = "1.1.0" +name = "alloy-eips" +version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aef7712851e524f35fbbb74fa6599c5cd8692056a1c36f9ca0d2001b670e7e5" +checksum = "def1626eea28d48c6cc0a6f16f34d4af0001906e4f889df6c660b39c86fd044d" dependencies = [ - "hex", - "num", + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-eip7928", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "borsh", + "c-kzg", + "derive_more 2.0.1", + "either", + "serde", + "serde_with", + "sha2", + "thiserror 2.0.18", ] [[package]] -name = "auto_impl" -version = "1.2.0" +name = "alloy-primitives" +version = "1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "66b1483f8c2562bf35f0270b697d5b5fe8170464e935bd855a4c5eaf6f89b354" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash 0.2.0", + "hashbrown 0.16.1", + "indexmap 2.13.0", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.5", + "rapidhash", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3", ] [[package]] -name = "autocfg" -version = "1.1.0" +name = "alloy-rlp" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "e93e50f64a77ad9c5470bf2ad0ca02f228da70c792a8f06634801e202579f35e" +dependencies = [ + "alloy-rlp-derive", + "arrayvec 0.7.6", + "bytes", +] [[package]] -name = "backtrace" -version = "0.3.69" +name = "alloy-rlp-derive" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "ce8849c74c9ca0f5a03da1c865e3eb6f768df816e67dd3721a398a8a7e398011" dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "base16ct" -version = "0.2.0" +name = "alloy-serde" +version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "9e6d631f8b975229361d8af7b2c749af31c73b3cf1352f90e144ddb06227105e" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] [[package]] -name = "base64" -version = "0.10.1" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "byteorder", + "libc", ] [[package]] -name = "base64" -version = "0.21.5" +name = "anes" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] -name = "beef" -version = "0.5.2" +name = "annotate-snippets" +version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" +checksum = "16e4850548ff4a25a77ce3bda7241874e17fb702ea551f0cc62a2dbe052f1272" +dependencies = [ + "anstyle", + "unicode-width 0.2.2", +] [[package]] -name = "bitflags" -version = "1.3.2" +name = "anstream" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] [[package]] -name = "bitflags" -version = "2.5.0" +name = "anstyle" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] -name = "bitvec" -version = "1.0.1" +name = "anstyle-parse" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ - "funty", - "radium", - "tap", - "wyz", + "utf8parse", ] [[package]] -name = "block-buffer" -version = "0.10.3" +name = "anstyle-query" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "generic-array", + "windows-sys 0.61.2", ] [[package]] -name = "bumpalo" -version = "3.12.0" +name = "anstyle-wincon" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] [[package]] -name = "byte-slice-cast" -version = "1.2.2" +name = "anyhow" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] -name = "byteorder" -version = "1.4.3" +name = "arbitrary" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" [[package]] -name = "bytes" -version = "1.4.0" +name = "arc-swap" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +dependencies = [ + "rustversion", +] [[package]] -name = "camino" -version = "1.1.3" +name = "archery" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6031a462f977dd38968b6f23378356512feeace69cef817e1a4475108093cec3" +checksum = "33ca55ee147b1926dbea904f50fe4902494e97bc742205abbbf10c709e43815f" +dependencies = [ + "triomphe", +] [[package]] -name = "cast" -version = "0.3.0" +name = "ark-bls12-381" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] [[package]] -name = "cc" -version = "1.0.96" +name = "ark-bn254" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065a29261d53ba54260972629f9ca6bffa69bac13cd1fed61420f7fa68b9f8bd" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" dependencies = [ - "jobserver", - "libc", - "once_cell", + "ark-ec", + "ark-ff 0.5.0", + "ark-r1cs-std", + "ark-std 0.5.0", ] [[package]] -name = "cfg-if" -version = "0.1.10" +name = "ark-ec" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] [[package]] -name = "cfg-if" -version = "1.0.0" +name = "ark-ff" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] [[package]] -name = "clap" -version = "2.34.0" +name = "ark-ff" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "bitflags 1.3.2", - "textwrap 0.11.0", - "unicode-width", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", ] [[package]] -name = "clap" -version = "3.2.23" +name = "ark-ff" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_derive", - "clap_lex", - "indexmap 1.9.2", - "once_cell", - "strsim", - "termcolor", - "textwrap 0.16.0", + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec 0.7.6", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", ] [[package]] -name = "clap_derive" -version = "3.2.18" +name = "ark-ff-asm" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" dependencies = [ - "heck 0.4.1", - "proc-macro-error", - "proc-macro2", "quote", "syn 1.0.109", ] [[package]] -name = "clap_lex" -version = "0.2.4" +name = "ark-ff-asm" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" dependencies = [ - "os_str_bytes", + "quote", + "syn 1.0.109", ] [[package]] -name = "cloudabi" -version = "0.1.0" +name = "ark-ff-asm" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ - "bitflags 1.3.2", + "quote", + "syn 2.0.116", ] [[package]] -name = "cmake" -version = "0.1.49" +name = "ark-ff-macros" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ - "cc", + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", ] [[package]] -name = "codespan-reporting" -version = "0.11.1" +name = "ark-ff-macros" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "termcolor", - "unicode-width", + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "colored" -version = "2.0.0" +name = "ark-ff-macros" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "atty", - "lazy_static", - "winapi", + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "console_error_panic_hook" -version = "0.1.7" +name = "ark-poly" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" dependencies = [ - "cfg-if 1.0.0", - "wasm-bindgen", + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", ] [[package]] -name = "const-hex" -version = "1.11.3" +name = "ark-r1cs-std" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba00838774b4ab0233e355d26710fbfc8327a05c017f6dc4873f876d1f79f78" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "hex", - "proptest", - "serde", + "ark-ec", + "ark-ff 0.5.0", + "ark-relations", + "ark-std 0.5.0", + "educe", + "num-bigint", + "num-integer", + "num-traits", + "tracing", ] [[package]] -name = "const-oid" -version = "0.9.2" +name = "ark-relations" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff 0.5.0", + "ark-std 0.5.0", + "tracing", + "tracing-subscriber 0.2.25", +] [[package]] -name = "convert_case" -version = "0.4.0" +name = "ark-serialize" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] [[package]] -name = "core-foundation" -version = "0.9.3" +name = "ark-serialize" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "core-foundation-sys", - "libc", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", ] [[package]] -name = "core-foundation-sys" -version = "0.8.4" +name = "ark-serialize" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive", + "ark-std 0.5.0", + "arrayvec 0.7.6", + "digest 0.10.7", + "num-bigint", +] [[package]] -name = "cpufeatures" -version = "0.2.5" +name = "ark-serialize-derive" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ - "libc", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "criterion" -version = "0.3.6" +name = "ark-std" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ - "atty", - "cast", - "clap 2.34.0", - "criterion-plot", - "csv", - "itertools", - "lazy_static", "num-traits", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_cbor", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", + "rand 0.8.6", ] [[package]] -name = "criterion-plot" -version = "0.4.5" +name = "ark-std" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ - "cast", - "itertools", + "num-traits", + "rand 0.8.6", ] [[package]] -name = "crossbeam-channel" -version = "0.5.7" +name = "ark-std" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils", + "num-traits", + "rand 0.8.6", ] [[package]] -name = "crossbeam-deque" -version = "0.8.3" +name = "arrayref" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch", - "crossbeam-utils", -] +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] -name = "crossbeam-epoch" -version = "0.9.14" +name = "arrayvec" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" -dependencies = [ - "autocfg", - "cfg-if 1.0.0", - "crossbeam-utils", - "memoffset", - "scopeguard", -] +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] -name = "crossbeam-utils" -version = "0.8.15" +name = "arrayvec" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" -dependencies = [ - "cfg-if 1.0.0", -] +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "crunchy" -version = "0.2.2" +name = "ascii_tree" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "ca6c635b3aa665c649ad1415f1573c85957dfa47690ec27aebe7ec17efe3c643" [[package]] -name = "crypto-bigint" -version = "0.5.5" +name = "async-channel" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", ] [[package]] -name = "crypto-common" -version = "0.1.6" +name = "async-channel" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ - "generic-array", - "typenum", + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", ] [[package]] -name = "csv" -version = "1.2.0" +name = "async-compat" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af91f40b7355f82b0a891f50e70399475945bb0b0da4f1700ce60761c9d3e359" +checksum = "a1ba85bc55464dcbf728b56d97e119d673f4cf9062be330a9a26f3acf504a590" dependencies = [ - "csv-core", - "itoa", - "ryu", - "serde", + "futures-core", + "futures-io", + "once_cell", + "pin-project-lite", + "tokio", ] [[package]] -name = "csv-core" -version = "0.1.10" +name = "async-executor" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ - "memchr", + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", ] [[package]] -name = "ctor" -version = "0.1.26" +name = "async-fs" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" dependencies = [ - "quote", - "syn 1.0.109", + "async-lock", + "blocking", + "futures-lite", ] [[package]] -name = "der" -version = "0.7.9" +name = "async-global-executor" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "const-oid", - "zeroize", + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", ] [[package]] -name = "derive_more" -version = "0.99.17" +name = "async-io" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.0", - "syn 1.0.109", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", ] [[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - -[[package]] -name = "difference" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" - -[[package]] -name = "digest" -version = "0.10.7" +name = "async-lock" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", + "event-listener 5.4.1", + "event-listener-strategy", + "pin-project-lite", ] [[package]] -name = "dir-test" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "035f15b4ae5cc91ca448fe9668799e3d9b09fd7381a7004e232769ff0efabb79" +name = "async-lsp" +version = "0.2.3" +source = "git+https://github.com/fe-lang/async-lsp?branch=main#ce9c0f26ebf417754247451f5293a1bc182ca6a2" dependencies = [ - "dir-test-macros", + "futures", + "lsp-types", + "pin-project-lite", + "rustix", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tower-layer", + "tower-service", + "tracing", + "waitpid-any", ] [[package]] -name = "dir-test-macros" -version = "0.1.1" +name = "async-net" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15699f408d3f58a1259b624d3c127721a442555136933d33cf387b81f5c9c89c" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" dependencies = [ - "glob", - "proc-macro2", - "quote", - "syn 1.0.109", + "async-io", + "blocking", + "futures-lite", ] [[package]] -name = "dirs" -version = "5.0.1" +name = "async-process" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel 2.5.0", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener 5.4.1", + "futures-lite", + "rustix", ] [[package]] -name = "dirs-sys" -version = "0.4.1" +name = "async-signal" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys", + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", ] [[package]] -name = "dot2" -version = "0.1.0" +name = "async-std" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f046ad836ddb46a42ae6219f11208b61ef9f1b96f105a88da4ae0dd5f1b89e6" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] [[package]] -name = "dyn-clone" -version = "1.0.17" +name = "async-task" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] -name = "ecdsa" -version = "0.16.9" +name = "async-trait" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[package]] -name = "elliptic-curve" -version = "0.13.8" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest", - "ff", - "generic-array", - "group", - "rand_core", - "sec1", - "subtle", - "zeroize", -] +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] -name = "encoding_rs" -version = "0.8.33" +name = "aurora-engine-modexp" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" dependencies = [ - "cfg-if 1.0.0", + "hex", + "num", ] [[package]] -name = "enumn" -version = "0.1.6" +name = "auto_impl" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88bcb3a067a6555d577aba299e75eff9942da276e6506fc6274327daa026132" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.116", ] [[package]] -name = "equivalent" -version = "1.0.1" +name = "autocfg" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] -name = "errno" -version = "0.3.5" +name = "aws-lc-rs" +version = "1.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "0ec6fb3fe69024a75fa7e1bfb48aa6cf59706a101658ea01bfd33b2b248a038f" dependencies = [ - "libc", - "windows-sys", + "aws-lc-sys", + "zeroize", ] [[package]] -name = "ethabi" -version = "18.0.0" +name = "aws-lc-sys" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +checksum = "f50037ee5e1e41e7b8f9d161680a725bd1626cb6f8c7e901f91f942850852fe7" dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror", - "uint", + "cc", + "cmake", + "dunce", + "fs_extra", ] [[package]] -name = "ethbloom" -version = "0.13.0" +name = "axum" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", + "axum-core", + "base64", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite 0.28.0", + "tower", + "tower-layer", + "tower-service", + "tracing", ] [[package]] -name = "ethereum" -version = "0.14.0" +name = "axum-core" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a89fb87a9e103f71b903b80b670200b54cc67a07578f070681f1fffb7396fb7" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", - "ethereum-types", - "hash-db", - "hash256-std-hasher", - "rlp", - "sha3", - "triehash", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", ] [[package]] -name = "ethereum-types" -version = "0.14.1" +name = "az" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", +checksum = "be5eb007b7cacc6c660343e96f650fedf4b5a77512399eb952ca6642cf8d13f7" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + +[[package]] +name = "beef" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" + +[[package]] +name = "bimap" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + +[[package]] +name = "binary-merge" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597bb81c80a54b6a4381b23faba8d7774b144c94cbd1d6fe3f1329bd776554ab" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitcoin-io" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce" +dependencies = [ + "arrayref", + "arrayvec 0.7.6", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.3.0", +] + +[[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 = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel 2.5.0", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "blst" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "borsh" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "boxcar" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e" + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bstr" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +dependencies = [ + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" +dependencies = [ + "allocator-api2", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +dependencies = [ + "serde", +] + +[[package]] +name = "c-kzg" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cc" +version = "1.2.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "4.5.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5caf74d17c3aec5495110c34cc3f78644bfa89af6c8993ed4de2790e49b6499" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "370daa45065b80218950227371916a1633217ae42b2715b2287b606dcd618e24" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_complete" +version = "4.5.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c757a3b7e39161a4e56f9365141ada2a6c915a8622c408ab6bb4b5d047371031" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_derive" +version = "4.5.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "clap_lex" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" + +[[package]] +name = "clru" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197fd99cb113a8d5d9b6376f3aa817f32c1078f2343b714fff7d2ca44fdf67d5" +dependencies = [ + "hashbrown 0.16.1", +] + +[[package]] +name = "cmake" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" +dependencies = [ + "cc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width 0.1.14", +] + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "colored" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +dependencies = [ + "lazy_static", + "windows-sys 0.59.0", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-hex" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "proptest", + "serde_core", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "countme" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + +[[package]] +name = "cranelift-assembler-x64" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "cranelift-assembler-x64-meta", +] + +[[package]] +name = "cranelift-assembler-x64-meta" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "cranelift-srcgen", +] + +[[package]] +name = "cranelift-bforest" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "cranelift-entity 0.135.2", + "wasmtime-internal-core 48.0.2", +] + +[[package]] +name = "cranelift-bitset" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "wasmtime-internal-core 48.0.2", +] + +[[package]] +name = "cranelift-bitset" +version = "0.136.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76b63a4b0cfea80610150fffda11b1a9c3dc5a835403d9f381bf7d1a2874b4d7" +dependencies = [ + "wasmtime-internal-core 49.0.1", +] + +[[package]] +name = "cranelift-codegen" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "bumpalo", + "cranelift-assembler-x64", + "cranelift-bforest", + "cranelift-bitset 0.135.2", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-control", + "cranelift-entity 0.135.2", + "cranelift-isle", + "gimli", + "hashbrown 0.17.1", + "libm", + "log", + "regalloc2", + "rustc-hash 2.1.1", + "serde", + "smallvec 1.15.1", + "target-lexicon", + "wasmtime-internal-core 48.0.2", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "cranelift-assembler-x64-meta", + "cranelift-codegen-shared", + "cranelift-srcgen", + "heck", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" + +[[package]] +name = "cranelift-control" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "arbitrary", +] + +[[package]] +name = "cranelift-entity" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "cranelift-bitset 0.135.2", + "wasmtime-internal-core 48.0.2", +] + +[[package]] +name = "cranelift-entity" +version = "0.136.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e73c65538d460b1062cb9a97428ee6bb4b616f5cb17be3b3ac0a3e4f1f789166" +dependencies = [ + "cranelift-bitset 0.136.1", + "wasmtime-internal-core 49.0.1", +] + +[[package]] +name = "cranelift-frontend" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "cranelift-codegen", + "hashbrown 0.17.1", + "log", + "smallvec 1.15.1", + "target-lexicon", +] + +[[package]] +name = "cranelift-isle" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" + +[[package]] +name = "cranelift-module" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-control", +] + +[[package]] +name = "cranelift-native" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "cranelift-codegen", + "libc", + "target-lexicon", +] + +[[package]] +name = "cranelift-object" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-control", + "cranelift-module", + "gimli", + "log", + "object", + "target-lexicon", +] + +[[package]] +name = "cranelift-srcgen" +version = "0.135.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "criterion" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "is-terminal", + "itertools 0.10.5", + "num-traits", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools 0.10.5", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +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-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[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 = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.116", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", + "rayon", +] + +[[package]] +name = "data-encoding" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc3dc5ad92c2e2d1c193bbbbdf2ea477cb81331de4f3103f267ca18368b988c4" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-where" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dir-test" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62c013fe825864f3e4593f36426c1fa7a74f5603f13ca8d1af7a990c1cd94a79" +dependencies = [ + "dir-test-macros", +] + +[[package]] +name = "dir-test-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d42f54d7b4a6bc2400fe5b338e35d1a335787585375322f49c5d5fe7b243da7e" +dependencies = [ + "glob", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "dogged" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2638df109789fe360f0d9998c5438dd19a36678aaf845e46f285b688b1a1657a" + +[[package]] +name = "dot2" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "855423f2158bcc73798b3b9a666ec4204597a72370dc91dbdb8e7f9519de8cc3" + +[[package]] +name = "dot2" +version = "1.0.0" +source = "git+https://github.com/sanpii/dot2.rs.git#5c4ffa7182d3e6c14b91b94bb9efaad1e218022b" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "ena" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" +dependencies = [ + "dogged", + "log", +] + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror 1.0.69", + "uint 0.9.5", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types 0.12.2", + "scale-info", + "uint 0.9.5", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec 0.7.6", + "bytes", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array", + "k256", + "num_enum", + "open-fastrlp", + "rand 0.8.6", + "rlp", + "serde", + "serde_json", + "strum", + "tempfile", + "thiserror 1.0.69", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.1", + "pin-project-lite", +] + +[[package]] +name = "faster-hex" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7223ae2d2f179b803433d9c830478527e92b8117eab39460edae7f1614d9fb73" +dependencies = [ + "heapless", + "serde", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec 0.7.6", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec 0.7.6", + "auto_impl", + "bytes", +] + +[[package]] +name = "fe" +version = "26.4.0" +dependencies = [ + "axum", + "blake3", + "camino", + "clap", + "clap_complete", + "colored", + "cranelift-entity 0.136.1", + "crossbeam-channel", + "dir-test", + "ethers-core", + "fe-codegen", + "fe-common", + "fe-contract-harness", + "fe-debug-export", + "fe-driver", + "fe-fmt", + "fe-hir", + "fe-language-server", + "fe-mir", + "fe-resolver", + "fe-semantic-indexing", + "fe-solc-runner", + "fe-test-utils", + "fe-trace-facts", + "fe-web", + "gix", + "glob", + "hex", + "libc", + "mimalloc", + "num-bigint", + "petgraph", + "protobuf", + "rayon", + "rustc-hash 2.1.1", + "salsa", + "scip", + "serde", + "serde_json", + "sha2", + "similar", + "smol_str 0.1.24", + "tempfile", + "tiny-keccak", + "tokio", + "toml 0.8.23", + "tracing", + "url", + "walkdir", +] + +[[package]] +name = "fe-bench" +version = "26.4.0" +dependencies = [ + "camino", + "criterion", + "fe-common", + "fe-driver", + "fe-hir", + "fe-parser", + "fe-semantic-indexing", + "tempfile", + "tracing", + "url", + "walkdir", +] + +[[package]] +name = "fe-codegen" +version = "26.4.0" +dependencies = [ + "blake3", + "dir-test", + "fe-common", + "fe-contract-harness", + "fe-driver", + "fe-hir", + "fe-mir", + "fe-test-utils", + "fe-trace-facts", + "hex", + "num-bigint", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "smallvec 1.15.1", + "smallvec 2.0.0-alpha.12", + "sonatina-codegen", + "sonatina-ir", + "sonatina-triple", + "sonatina-verifier", + "tracing", + "url", +] + +[[package]] +name = "fe-common" +version = "26.4.0" +dependencies = [ + "camino", + "fe-parser", + "ordermap", + "paste", + "petgraph", + "radix_immutable", + "rust-embed", + "rustc-hash 2.1.1", + "salsa", + "serde", + "serde-semver", + "serde_json", + "smol_str 0.1.24", + "toml 0.8.23", + "tracing", + "typed-path", + "url", +] + +[[package]] +name = "fe-contract-harness" +version = "26.4.0" +dependencies = [ + "ethers-core", + "fe-codegen", + "fe-common", + "fe-driver", + "hex", + "revm", + "serde_json", + "thiserror 1.0.69", + "tracing", + "url", +] + +[[package]] +name = "fe-dataflow" +version = "26.4.0" +dependencies = [ + "cranelift-entity 0.136.1", +] + +[[package]] +name = "fe-debug-export" +version = "26.4.0" +dependencies = [ + "blake3", + "fe-common", + "fe-trace-facts", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "fe-driver" +version = "26.4.0" +dependencies = [ + "camino", + "codespan-reporting", + "dir-test", + "fe-common", + "fe-hir", + "fe-resolver", + "fe-test-utils", + "glob", + "petgraph", + "salsa", + "smol_str 0.1.24", + "tempfile", + "tracing", + "url", +] + +[[package]] +name = "fe-fmt" +version = "26.4.0" +dependencies = [ + "dir-test", + "fe-parser", + "fe-test-utils", + "pretty", +] + +[[package]] +name = "fe-hir" +version = "26.4.0" +dependencies = [ + "ascii_tree", + "bitflags 2.11.0", + "blake3", + "camino", + "codespan-reporting", + "cranelift-entity 0.136.1", + "derive_more 1.0.0", + "dir-test", + "dot2 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either", + "ena", + "fe-common", + "fe-dataflow", + "fe-driver", + "fe-parser", + "fe-test-utils", + "fe-trace-facts", + "indexmap 2.13.0", + "itertools 0.14.0", + "matchcov", + "num-bigint", + "num-traits", + "paste", + "ruint", + "rustc-hash 2.1.1", + "salsa", + "smallvec 1.15.1", + "smallvec 2.0.0-alpha.12", + "tablesolve", + "thin-vec", + "tiny-keccak", + "tracing", + "url", +] + +[[package]] +name = "fe-language-server" +version = "26.4.0" +dependencies = [ + "act-locally", + "anyhow", + "async-compat", + "async-lsp", + "async-std", + "axum", + "camino", + "clap", + "codespan-reporting", + "criterion", + "dir-test", + "fe-codegen", + "fe-common", + "fe-driver", + "fe-fmt", + "fe-hir", + "fe-mir", + "fe-parser", + "fe-resolver", + "fe-semantic-indexing", + "fe-test-utils", + "fe-web", + "futures", + "futures-batch", + "rustc-hash 2.1.1", + "salsa", + "serde", + "serde_json", + "smol_str 0.1.24", + "tempfile", + "tokio", + "tokio-tungstenite 0.26.2", + "tokio-util", + "tower", + "tracing", + "tracing-subscriber 0.3.22", + "url", +] + +[[package]] +name = "fe-mir" +version = "26.4.0" +dependencies = [ + "blake3", + "cranelift-entity 0.136.1", + "fe-common", + "fe-dataflow", + "fe-driver", + "fe-hir", + "fe-trace-facts", + "num-bigint", + "num-traits", + "rustc-hash 2.1.1", + "salsa", + "url", +] + +[[package]] +name = "fe-parser" +version = "26.4.0" +dependencies = [ + "derive_more 1.0.0", + "dir-test", + "fe-test-utils", + "lazy_static", + "logos", + "num_enum", + "rowan", + "smallvec 2.0.0-alpha.12", + "tracing", + "tracing-subscriber 0.3.22", + "tree-sitter", + "tree-sitter-fe", + "unwrap-infallible", + "wasm-bindgen", + "wasm-bindgen-test", +] + +[[package]] +name = "fe-resolver" +version = "26.4.0" +dependencies = [ + "camino", + "dir-test", + "fe-common", + "fe-test-utils", + "gix", + "glob", + "indexmap 2.13.0", + "libc", + "petgraph", + "sha2", + "smol_str 0.1.24", + "tempfile", + "toml 0.8.23", + "tracing", + "url", + "windows-sys 0.61.2", +] + +[[package]] +name = "fe-semantic-indexing" +version = "26.4.0" +dependencies = [ + "camino", + "dir-test", + "fe-common", + "fe-driver", + "fe-hir", + "fe-test-utils", + "fe-web", + "rustc-hash 2.1.1", + "salsa", + "scip", + "serde", + "serde_json", + "tempfile", + "url", +] + +[[package]] +name = "fe-solc-runner" +version = "26.4.0" +dependencies = [ + "fe-contract-harness", + "indexmap 2.13.0", + "serde_json", +] + +[[package]] +name = "fe-test-utils" +version = "26.4.0" +dependencies = [ + "fe-common", + "insta", + "regex", + "tracing", + "tracing-subscriber 0.3.22", + "tracing-tree", + "url", +] + +[[package]] +name = "fe-trace-facts" +version = "26.4.0" +dependencies = [ + "blake3", + "fe-common", + "fe-trace-facts-macros", + "serde", + "serde_json", + "trybuild", +] + +[[package]] +name = "fe-trace-facts-macros" +version = "26.4.0" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "fe-uitest" +version = "26.4.0" +dependencies = [ + "dir-test", + "fe-common", + "fe-driver", + "fe-fmt", + "fe-hir", + "fe-test-utils", + "url", + "wasm-bindgen-test", +] + +[[package]] +name = "fe-web" +version = "26.4.0" +dependencies = [ + "insta", + "js-sys", + "protobuf", + "pulldown-cmark", + "schemars 0.8.22", + "scip", + "serde", + "serde_json", + "tree-sitter-fe", + "wasm-bindgen", + "wasm-bindgen-test", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "filetime" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" +dependencies = [ + "cfg-if", + "libc", + "libredox", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.6", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-batch" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f444c45a1cb86f2a7e301469fd50a82084a60dadc25d94529a8312276ecb71a" +dependencies = [ + "futures", + "futures-timer", + "pin-utils", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", + "wasip3", +] + +[[package]] +name = "gimli" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7f043f89559805f8c7cacc432749b2fa0d0a0a9ee46ce47164ed5ba7f126c" +dependencies = [ + "fnv", + "hashbrown 0.16.1", + "indexmap 2.13.0", + "stable_deref_trait", +] + +[[package]] +name = "gix" +version = "0.83.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce52001b946a6249d5d0d3011df0a042ac3f8a4d013460db6476577b0b9c567" +dependencies = [ + "gix-actor", + "gix-archive", + "gix-attributes", + "gix-blame", + "gix-command", + "gix-commitgraph", + "gix-config", + "gix-credentials", + "gix-date", + "gix-diff", + "gix-dir", + "gix-discover", + "gix-error", + "gix-features", + "gix-filter", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-hashtable", + "gix-ignore", + "gix-index", + "gix-lock", + "gix-merge", + "gix-negotiate", + "gix-object", + "gix-odb", + "gix-pack", + "gix-path", + "gix-pathspec", + "gix-prompt", + "gix-protocol", + "gix-ref", + "gix-refspec", + "gix-revision", + "gix-revwalk", + "gix-sec", + "gix-shallow", + "gix-status", + "gix-submodule", + "gix-tempfile", + "gix-trace", + "gix-transport", + "gix-traverse", + "gix-url", + "gix-utils", + "gix-validate", + "gix-worktree", + "gix-worktree-state", + "gix-worktree-stream", + "nonempty", + "smallvec 1.15.1", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-actor" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "272916673b83714734b15d4ef3c8b5f1ccddb15fea8ff548430b97c1ab7b7ed8" +dependencies = [ + "bstr", + "gix-date", + "gix-error", +] + +[[package]] +name = "gix-archive" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a20ec244b733338d4cb60e5e05eac700dab7fcc689647b1d1daa9396b119342" +dependencies = [ + "bstr", + "gix-date", + "gix-error", + "gix-object", + "gix-worktree-stream", +] + +[[package]] +name = "gix-attributes" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe17c5a1c0b6f2ef1476aa1d3222ea50cdff67608016613a58bfc3e078046000" +dependencies = [ + "bstr", + "gix-glob", + "gix-path", + "gix-quote", + "gix-trace", + "kstring", + "smallvec 1.15.1", + "thiserror 2.0.18", + "unicode-bom", +] + +[[package]] +name = "gix-bitmap" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ecbfc77ec6852294e341ecc305a490b59f2813e6ca42d79efda5099dcab1894" +dependencies = [ + "gix-error", +] + +[[package]] +name = "gix-blame" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dab9a942ab54a9661ded7397c3bf927274e7afa94494db0d75cfcbde02ca0a" +dependencies = [ + "gix-commitgraph", + "gix-date", + "gix-diff", + "gix-error", + "gix-hash", + "gix-object", + "gix-revwalk", + "gix-trace", + "gix-traverse", + "gix-worktree", + "smallvec 1.15.1", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-chunk" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edf288be9b60fe7231de03771faa292be1493d84786f68727e33ad1f91764320" +dependencies = [ + "gix-error", +] + +[[package]] +name = "gix-command" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86335306511abe43d75c866d4b1f3d90932fe202edcd43e1314036333e7384d8" +dependencies = [ + "bstr", + "gix-path", + "gix-quote", + "gix-trace", + "shell-words", +] + +[[package]] +name = "gix-commitgraph" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe3b5aa0f24e19028c261d229aeeedafcaaa52ebd71021cc15184620fc9d32eb" +dependencies = [ + "bstr", + "gix-chunk", + "gix-error", + "gix-hash", + "memmap2", + "nonempty", +] + +[[package]] +name = "gix-config" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c01848aebd21c67f6ba41f1de8efd46ae96df21f001954a3c9e1517e514d410" +dependencies = [ + "bstr", + "gix-config-value", + "gix-features", + "gix-glob", + "gix-path", + "gix-ref", + "gix-sec", + "smallvec 1.15.1", + "thiserror 2.0.18", + "unicode-bom", +] + +[[package]] +name = "gix-config-value" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b39ed39ee4c10a3b157f9fb94bac8098d9f8e56201f0cf7dee6c187416c4b2" +dependencies = [ + "bitflags 2.11.0", + "bstr", + "gix-path", + "libc", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-credentials" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65ca11598b70811d7b16ff90945a6e57dfe521e85b744e51636965fe39cc8f60" +dependencies = [ + "bstr", + "gix-command", + "gix-config-value", + "gix-date", + "gix-path", + "gix-prompt", + "gix-sec", + "gix-trace", + "gix-url", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-date" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94cdae4eb4b0f4136e3d9b3aa2d2cd03cfb5bb9b636b31263aea2df86d41543" +dependencies = [ + "bstr", + "gix-error", + "itoa", + "jiff", + "smallvec 1.15.1", +] + +[[package]] +name = "gix-diff" +version = "0.63.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc08e0fa1a91ff5f24affeab052f198056645e1de004910bde7b82b50ea5982a" +dependencies = [ + "bstr", + "gix-command", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-imara-diff", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-trace", + "gix-traverse", + "gix-worktree", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-dir" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a0fc06e9e1e430cbf0a313666976d90f822f461a6525320427aa9b8af5236c" +dependencies = [ + "bstr", + "gix-discover", + "gix-fs", + "gix-ignore", + "gix-index", + "gix-object", + "gix-path", + "gix-pathspec", + "gix-trace", + "gix-utils", + "gix-worktree", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-discover" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17852e6a501e688a1702b24ebe5b3761d4719455bc869fd29f38b0b859bcad34" +dependencies = [ + "bstr", + "dunce", + "gix-fs", + "gix-path", + "gix-ref", + "gix-sec", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-error" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e207b971746ab724fccdfced2e4e19e854744611904a0195d3aa8fda8a110613" +dependencies = [ + "bstr", +] + +[[package]] +name = "gix-features" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af375693ad5333d0a2c66b4c5b2cbe9ccc38e34f8e8bf24e4ae42c12307fdc4f" +dependencies = [ + "bytes", + "crc32fast", + "gix-path", + "gix-trace", + "gix-utils", + "libc", + "once_cell", + "prodash", + "thiserror 2.0.18", + "walkdir", + "zlib-rs", +] + +[[package]] +name = "gix-filter" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac917dbe9653c9b615d248db91907a365bd779750c9e1b457a9d9fdeece3a08" +dependencies = [ + "bstr", + "encoding_rs", + "gix-attributes", + "gix-command", + "gix-hash", + "gix-object", + "gix-packetline", + "gix-path", + "gix-quote", + "gix-trace", + "gix-utils", + "smallvec 1.15.1", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-fs" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e1967daac9848757c47c2aef0c57bcadc1a897347f559778249bf286a536c86" +dependencies = [ + "bstr", + "fastrand", + "gix-features", + "gix-path", + "gix-utils", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-glob" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bf29249a069bf2507f5964f80997f37b134d320ea348d66527726b9be2c38c" +dependencies = [ + "bitflags 2.11.0", + "bstr", + "gix-features", + "gix-path", +] + +[[package]] +name = "gix-hash" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf70d1e252337eed16360f8b8ebb71865ece58eab7954b39ce38b420de703d2" +dependencies = [ + "faster-hex", + "gix-features", + "sha1-checked", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-hashtable" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d33b455e07b3c16d3b2eeebc7b38d2dafcbf8a653de1138ef55d4c2a1fd0b08b" +dependencies = [ + "gix-hash", + "hashbrown 0.16.1", + "parking_lot", +] + +[[package]] +name = "gix-ignore" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb13fbbeeafee943e52b61fcc88dfddf6a452fcaf0c4d0cdc8f218fa25bbec5" +dependencies = [ + "bstr", + "gix-glob", + "gix-path", + "gix-trace", + "unicode-bom", +] + +[[package]] +name = "gix-imara-diff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39eb0623e15e4cb83c02ce6a959e48fadd1ae3b715b36b5acc01816e01388c82" +dependencies = [ + "bstr", + "hashbrown 0.16.1", +] + +[[package]] +name = "gix-index" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54c3ef97ad08121e4327a6226bd63fed6b9e3c6b976d48bddd4356d9d41191db" +dependencies = [ + "bitflags 2.11.0", + "bstr", + "filetime", + "fnv", + "gix-bitmap", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-traverse", + "gix-utils", + "gix-validate", + "hashbrown 0.16.1", + "itoa", + "libc", + "memmap2", + "rustix", + "smallvec 1.15.1", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-lock" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3bc074e5723027b482dcd9ab99d95804a53742f6de812d0172fbba4a186c1" +dependencies = [ + "gix-tempfile", + "gix-utils", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-merge" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74bbcdcc52b70a32f0a151b024dff9d0fcf56ee48f00d9503e735af9d99ea881" +dependencies = [ + "bstr", + "gix-command", + "gix-diff", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-imara-diff", + "gix-index", + "gix-object", + "gix-path", + "gix-quote", + "gix-revision", + "gix-revwalk", + "gix-tempfile", + "gix-trace", + "gix-worktree", + "nonempty", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-negotiate" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "103d42bfade1b8a96ca5005933127bdad461ce588d92422b2c2daa3ff20d780c" +dependencies = [ + "bitflags 2.11.0", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-object", + "gix-revwalk", +] + +[[package]] +name = "gix-object" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a38075a95d7cc5df8afd38e72c617026c1456952207a4120a7f55a3fbf93b4d7" +dependencies = [ + "bstr", + "gix-actor", + "gix-date", + "gix-features", + "gix-hash", + "gix-hashtable", + "gix-utils", + "gix-validate", + "itoa", + "smallvec 1.15.1", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-odb" +version = "0.80.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeeda12a9663120418735ecdc1250d06eeab0be75700e47b3402a981331716ba" +dependencies = [ + "arc-swap", + "gix-features", + "gix-fs", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-pack", + "gix-path", + "gix-quote", + "memmap2", + "parking_lot", + "tempfile", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-pack" +version = "0.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf02e6f5c8f07a069c9ea5245f40d9b14856ada4086091dc99941b49002b4fa" +dependencies = [ + "clru", + "gix-chunk", + "gix-error", + "gix-features", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-path", + "gix-tempfile", + "memmap2", + "parking_lot", + "smallvec 1.15.1", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-packetline" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "362246df440ee691699f0664cbf7006a6ece477db6734222be95e4198e5656e6" +dependencies = [ + "bstr", + "faster-hex", + "gix-trace", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-path" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671a6059e8a4c1b7f406e24716499cefa3926e060876fb1959ef225efeee346e" +dependencies = [ + "bstr", + "gix-trace", + "gix-validate", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-pathspec" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a84a4f083dd70fb49f4377e13afa6d90df2daaa1c705c49d6ff1331fc7e8855" +dependencies = [ + "bitflags 2.11.0", + "bstr", + "gix-attributes", + "gix-config-value", + "gix-glob", + "gix-path", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-prompt" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e041a626c64cb69e4117fcdf80da8d0e454fba3b1f420412792d191f52251aee" +dependencies = [ + "gix-command", + "gix-config-value", + "parking_lot", + "rustix", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-protocol" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4bee82db63ec635996b96efae71cf467c155fa3f34a556184373224a26c4fd" +dependencies = [ + "bstr", + "gix-credentials", + "gix-date", + "gix-features", + "gix-hash", + "gix-lock", + "gix-negotiate", + "gix-object", + "gix-ref", + "gix-refspec", + "gix-revwalk", + "gix-shallow", + "gix-trace", + "gix-transport", + "gix-utils", + "maybe-async", + "nonempty", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-quote" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e97b73791a64bc0fa7dd2c5b3e551136115f97750b876ed1c952c7a7dbaf8be" +dependencies = [ + "bstr", + "gix-error", + "gix-utils", +] + +[[package]] +name = "gix-ref" +version = "0.63.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ba9cc15f558b274c99349b83130f5ec83459660828fde9718bbbb43a726167" +dependencies = [ + "gix-actor", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-utils", + "gix-validate", + "memmap2", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-refspec" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61755b27d57edc8940a1b1593c8c61548ca8e4c02da1ed8d5bfeda9eb2a6b761" +dependencies = [ + "bstr", + "gix-error", + "gix-glob", + "gix-hash", + "gix-revision", + "gix-validate", + "smallvec 1.15.1", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-revision" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fb5288fac706d3ea3e4e2ba9ec38b78743b8c02f422e18cb342299cfd6ab7e8" +dependencies = [ + "bitflags 2.11.0", + "bstr", + "gix-commitgraph", + "gix-date", + "gix-error", + "gix-hash", + "gix-object", + "gix-revwalk", + "gix-trace", + "nonempty", +] + +[[package]] +name = "gix-revwalk" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "313813706b073a12ff7f9b2896bf3e6504cdac7cfbc97b1920114724705069f0" +dependencies = [ + "gix-commitgraph", + "gix-date", + "gix-error", + "gix-hash", + "gix-hashtable", + "gix-object", + "smallvec 1.15.1", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-sec" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5a3a2d3e504a238136751e646a6c028252286a0ea64ea9974bf0498633407c6" +dependencies = [ + "bitflags 2.11.0", + "gix-path", + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "gix-shallow" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29187305521bfacf4aefd284ab28dbfa9fb74abd39a5e63dd313b1baa5808c27" +dependencies = [ + "bstr", + "gix-hash", + "gix-lock", + "nonempty", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-status" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68c6d2a8c521ffa205fe7e268c82e6d1378ba37cd826ca10ab6129fdc29a4b65" +dependencies = [ + "bstr", + "filetime", + "gix-diff", + "gix-dir", + "gix-features", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-index", + "gix-object", + "gix-path", + "gix-pathspec", + "gix-worktree", + "portable-atomic", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-submodule" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd5fc8692890bd71a596e540fd4c364f8460eaa82c4eaaedebde6e1e3eb4d91" +dependencies = [ + "bstr", + "gix-config", + "gix-path", + "gix-pathspec", + "gix-refspec", + "gix-url", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-tempfile" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "691ea1e31435c7e7d4d04705ec9d1c0d9482c46b2acf512bc723939d8f0af7fb" +dependencies = [ + "dashmap", + "gix-fs", + "libc", + "parking_lot", + "tempfile", +] + +[[package]] +name = "gix-trace" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f23569e55f2ffaf958617353b9734a7d52a7c19c439eeaa5e3efc217fd2270e" + +[[package]] +name = "gix-transport" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffd6a5c676b92d4ead5f5a2b2935024415dec69edc997b6090ca9cac010a3018" +dependencies = [ + "base64", + "bstr", + "gix-command", + "gix-credentials", + "gix-features", + "gix-packetline", + "gix-quote", + "gix-sec", + "gix-url", + "reqwest", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-traverse" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a14b7052c0786676c03e71fcfde7d7f0f8e8316e642b5cec6bb3998719b2ce5c" +dependencies = [ + "bitflags 2.11.0", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "smallvec 1.15.1", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-url" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35842d099e813f6f6bba529e88d4670572149c3df79b7a412952259887721ece" +dependencies = [ + "bstr", + "gix-path", + "percent-encoding", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-utils" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e477b4f07a6e8da4ba791c53c858102959703c60d70f199932010d5b94adb2c" +dependencies = [ + "bstr", + "fastrand", + "unicode-normalization", +] + +[[package]] +name = "gix-validate" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e26ac2602b43eadfdca0560b81d3341944162a3c9f64ccdeef8fc501ad80dad5" +dependencies = [ + "bstr", +] + +[[package]] +name = "gix-worktree" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69955eb5e2910832f88d041964b809eee01dadd579237e0b55efec58fd406fd" +dependencies = [ + "bstr", + "gix-attributes", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-ignore", + "gix-index", + "gix-object", + "gix-path", + "gix-validate", +] + +[[package]] +name = "gix-worktree-state" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a96dccbcf9e8fe0291c55f06e08da93ebb2e691c1311276f541eefcc6d70800" +dependencies = [ + "bstr", + "gix-features", + "gix-filter", + "gix-fs", + "gix-index", + "gix-object", + "gix-path", + "gix-worktree", + "io-close", + "thiserror 2.0.18", +] + +[[package]] +name = "gix-worktree-stream" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8444b8ed4662e1a0c97f3eceda29630001a1bbb2632201e50312623e594213" +dependencies = [ + "gix-attributes", + "gix-error", + "gix-features", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-object", + "gix-path", + "gix-traverse", + "parking_lot", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gmp-mpfr-sys" +version = "1.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60f8970a75c006bb2f8ae79c6768a116dd215fa8346a87aed99bf9d82ca43394" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[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" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", + "serde", + "serde_core", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "foldhash 0.2.0", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-conservative" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" +dependencies = [ + "arrayvec 0.7.6", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec 1.15.1", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec 1.15.1", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec 1.15.1", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[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.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "inplace-vec-builder" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf64c2edc8226891a71f127587a2861b132d2b942310843814d5001d99a1d307" +dependencies = [ + "smallvec 1.15.1", +] + +[[package]] +name = "insta" +version = "1.46.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e82db8c87c7f1ccecb34ce0c24399b8a73081427f3c7c50a5d597925356115e4" +dependencies = [ + "console", + "once_cell", + "regex", + "serde", + "similar", + "tempfile", +] + +[[package]] +name = "io-close" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cadcf447f06744f8ce713d2d6239bb5bde2c357a452397a9ed90c625da390bc" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "iri-string" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is-terminal" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +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 = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jiff" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +dependencies = [ + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-sys 0.61.2", +] + +[[package]] +name = "jiff-static" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.116", +] + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", +] + +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures 0.2.17", +] + +[[package]] +name = "keccak-asm" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b646a74e746cd25045aa0fd42f4f7f78aa6d119380182c7e63a5593c4ab8df6f" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "kstring" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "libmimalloc-sys" +version = "0.1.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a45a52f43e1c16f667ccfe4dd8c85b7f7c204fd5e3bf46c5b0db9a5c3c0b8e9" +dependencies = [ + "cc", +] + +[[package]] +name = "libredox" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +dependencies = [ + "bitflags 2.11.0", + "libc", + "plain", + "redox_syscall 0.7.4", +] + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +dependencies = [ + "value-bag", +] + +[[package]] +name = "logos" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff472f899b4ec2d99161c51f60ff7075eeb3097069a36050d8037a6325eb8154" +dependencies = [ + "logos-derive", +] + +[[package]] +name = "logos-codegen" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "192a3a2b90b0c05b27a0b2c43eecdb7c415e29243acc3f89cc8247a5b693045c" +dependencies = [ + "beef", + "fnv", + "lazy_static", + "proc-macro2", + "quote", + "regex-syntax", + "rustc_version 0.4.1", + "syn 2.0.116", +] + +[[package]] +name = "logos-derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "605d9697bcd5ef3a42d38efc51541aa3d6a4a25f7ab6d1ed0da5ac632a26b470" +dependencies = [ + "logos-codegen", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "lsp-types" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e34d33a8e9b006cd3fc4fe69a921affa097bae4bb65f76271f4644f9a334365" +dependencies = [ + "bitflags 1.3.2", + "serde", + "serde_json", + "serde_repr", + "url", +] + +[[package]] +name = "matchcov" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed153c5420e881c370bc693a77faea65de45f01672dc9c5b6df033f1c1060ec" + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "maybe-async" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memmap2" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +dependencies = [ + "libc", +] + +[[package]] +name = "mimalloc" +version = "0.1.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d4139bb28d14ad1facf21d5eb8825051b326e172d216b39f6d31df53cc97862" +dependencies = [ + "libmimalloc-sys", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minicov" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4869b6a491569605d66d3952bcdf03df789e5b536e5f0cf7758a7f08a55ae24d" +dependencies = [ + "cc", + "walkdir", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "nonempty" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9737e026353e5cd0736f98eddae28665118eb6f6600902a7f50db585621fecb6" + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[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", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "object" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63944c133d03f44e75866bbd160b95af0ec3f6a13d936d69d31c81078cbc5baf" +dependencies = [ + "crc32fast", + "hashbrown 0.16.1", + "indexmap 2.13.0", + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "oorandom" +version = "11.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec 0.7.6", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "ordermap" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b100f7dd605611822d30e182214d3c02fdefce2d801d23993f6b6ba6ca1392af" +dependencies = [ + "indexmap 2.13.0", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec 0.7.6", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec 1.15.1", + "windows-link", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pest" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "pest_meta" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +dependencies = [ + "pest", + "sha2", +] + +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap 2.13.0", + "serde", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros", + "phf_shared", + "serde", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.116", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "pretty" +version = "0.12.5" +source = "git+https://github.com/sbillig/pretty.rs?branch=max-width-group#33cbcf85447a2237eead7175352a52dc26923a1e" +dependencies = [ + "arrayvec 0.5.2", + "typed-arena", + "unicode-width 0.2.2", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.116", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721a1da530b5a2633218dc9f75713394c983c352be88d2d7c9ee85e2c4c21794" +dependencies = [ + "fixed-hash", + "uint 0.10.0", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit 0.23.10+spec-1.0.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prodash" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "962200e2d7d551451297d9fdce85138374019ada198e30ea9ede38034e27604c" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "proptest" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566cb3fdacef14c0737f9546df7cfeadbfbc9fef10991038bf5015d0c80532" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.11.0", + "num-traits", + "rand 0.9.5", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "protobuf" +version = "3.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror 1.0.69", +] + +[[package]] +name = "protobuf-support" +version = "3.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e36c2f31e0a47f9280fb347ef5e461ffcd2c52dd520d8e216b52f93b0b0d7d6" +dependencies = [ + "thiserror 1.0.69", +] + +[[package]] +name = "pulldown-cmark" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14" +dependencies = [ + "bitflags 2.11.0", + "memchr", + "pulldown-cmark-escape", + "unicase", +] + +[[package]] +name = "pulldown-cmark-escape" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae" + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "aws-lc-rs", + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.5", + "ring", + "rustc-hash 2.1.1", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "radix_immutable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dafbb83194e5cbdc904a1cb110deb10368327536b8129ca0f361f21dbd7a5703" +dependencies = [ + "once_cell", +] + +[[package]] +name = "rand" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", + "serde", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.5", +] + +[[package]] +name = "rapidhash" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "111325c42c4bafae99e777cd77b40dea9a2b30c69e9d8c74b6eccd7fba4337de" +dependencies = [ + "rustversion", +] + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", ] [[package]] -name = "evm" -version = "0.37.0" +name = "rayon-core" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4448c65b71e8e2b9718232d84d09045eeaaccb2320494e6bd6dbf7e58fec8ff" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ - "auto_impl", - "ethereum", - "evm-core", - "evm-gasometer", - "evm-runtime", - "log", - "primitive-types", - "rlp", - "sha3", + "crossbeam-deque", + "crossbeam-utils", ] [[package]] -name = "evm-core" -version = "0.37.0" +name = "redox_syscall" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c51bec0eb68a891c2575c758eaaa1d61373fc51f7caaf216b1fb5c3fea3b5d" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "primitive-types", + "bitflags 2.11.0", ] [[package]] -name = "evm-gasometer" -version = "0.37.0" +name = "redox_syscall" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8b93c59c54fc26522d842f0e0d3f8e8be331c776df18ff3e540b53c2f64d509" +checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" dependencies = [ - "evm-core", - "evm-runtime", - "primitive-types", + "bitflags 2.11.0", ] [[package]] -name = "evm-runtime" -version = "0.37.0" +name = "ref-cast" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c79b9459ce64f1a28688397c4013764ce53cd57bb84efc16b5187fa9b05b13ad" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ - "auto_impl", - "evm-core", - "primitive-types", - "sha3", + "ref-cast-impl", ] [[package]] -name = "fastrand" -version = "2.0.1" +name = "ref-cast-impl" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] [[package]] -name = "fe" -version = "0.26.0" +name = "regalloc2" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "757712e8e61590d6d4f5d563483755538b5aa13467837a3b41cd9832509a7f85" dependencies = [ - "clap 3.2.23", - "colored", - "fe-common", - "fe-driver", - "fe-parser", - "fe-test-runner", - "fs_extra", - "include_dir", - "indexmap 1.9.2", - "reqwest", - "serde", + "allocator-api2", + "bumpalo", + "hashbrown 0.17.1", + "log", + "rustc-hash 2.1.1", + "smallvec 1.15.1", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" + +[[package]] +name = "reqwest" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "mime", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", "url", - "walkdir", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", ] [[package]] -name = "fe-abi" -version = "0.26.0" +name = "revm" +version = "33.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c85ed0028f043f87b3c88d4a4cb6f0a76440085523b6a8afe5ff003cf418054" dependencies = [ - "fe-common", - "serde", - "serde_test", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database", + "revm-database-interface", + "revm-handler", + "revm-inspector", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", ] [[package]] -name = "fe-analyzer" -version = "0.26.0" +name = "revm-bytecode" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2c6b5e6e8dd1e28a4a60e5f46615d4ef0809111c9e63208e55b5c7058200fb0" dependencies = [ - "criterion", - "fe-common", - "fe-compiler-tests", - "fe-library", - "fe-parser", - "fe-test-files", - "hex", - "if_chain", - "indexmap 1.9.2", - "insta", - "num-bigint", - "num-traits", - "parking_lot_core", - "petgraph", - "pretty_assertions", - "rstest", - "salsa", - "semver 1.0.16", - "smallvec", - "smol_str", - "strum", - "wasm-bindgen-test", + "bitvec", + "phf", + "revm-primitives", + "serde", ] [[package]] -name = "fe-codegen" -version = "0.26.0" +name = "revm-context" +version = "12.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f038f0c9c723393ac897a5df9140b21cfa98f5753a2cb7d0f28fa430c4118abf" dependencies = [ - "fe-abi", - "fe-analyzer", - "fe-common", - "fe-mir", - "fxhash", - "indexmap 1.9.2", - "num-bigint", - "salsa", - "smol_str", - "yultsur", + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode", + "revm-context-interface", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", ] [[package]] -name = "fe-common" -version = "0.26.0" +name = "revm-context-interface" +version = "13.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "431c9a14e4ef1be41ae503708fd02d974f80ef1f2b6b23b5e402e8d854d1b225" dependencies = [ - "camino", - "codespan-reporting", - "difference", - "dirs", - "fe-library", - "git2", - "hex", - "indexmap 1.9.2", - "num-bigint", - "num-traits", - "once_cell", - "path-clean", - "ron", - "salsa", + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface", + "revm-primitives", + "revm-state", "serde", - "smol_str", - "tiny-keccak", - "toml 0.7.6", - "walkdir", ] [[package]] -name = "fe-compiler-test-utils" -version = "0.26.0" +name = "revm-database" +version = "9.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980d8d6bba78c5dd35b83abbb6585b0b902eb25ea4448ed7bfba6283b0337191" dependencies = [ - "ethabi", - "evm", - "evm-runtime", - "fe-analyzer", - "fe-common", - "fe-driver", - "fe-test-files", - "fe-yulc", - "getrandom", - "hex", - "indexmap 1.9.2", - "insta", - "primitive-types", - "serde_json", - "solc", - "yultsur", + "alloy-eips", + "revm-bytecode", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", ] [[package]] -name = "fe-compiler-tests" -version = "0.26.0" +name = "revm-database-interface" +version = "8.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cce03e3780287b07abe58faf4a7f5d8be7e81321f93ccf3343c8f7755602bae" dependencies = [ - "dir-test", - "fe-common", - "fe-driver", - "fe-test-runner", + "auto_impl", + "either", + "revm-primitives", + "revm-state", + "serde", ] [[package]] -name = "fe-compiler-tests-legacy" -version = "0.26.0" +name = "revm-handler" +version = "14.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d44f8f6dbeec3fecf9fe55f78ef0a758bdd92ea46cd4f1ca6e2a946b32c367f3" dependencies = [ - "dir-test", - "ethabi", - "evm", - "evm-runtime", - "fe-analyzer", - "fe-common", - "fe-compiler-test-utils", - "fe-driver", - "fe-parser", - "fe-test-files", - "fe-yulc", - "hex", - "insta", - "pretty_assertions", - "primitive-types", - "proptest", - "rand", - "rstest", - "wasm-bindgen-test", - "yultsur", + "auto_impl", + "derive-where", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", + "serde", ] [[package]] -name = "fe-driver" -version = "0.26.0" +name = "revm-inspector" +version = "14.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5617e49216ce1ca6c8826bcead0386bc84f49359ef67cde6d189961735659f93" dependencies = [ - "fe-abi", - "fe-analyzer", - "fe-codegen", - "fe-common", - "fe-mir", - "fe-parser", - "fe-test-runner", - "fe-yulc", - "indexmap 1.9.2", + "auto_impl", + "either", + "revm-context", + "revm-database-interface", + "revm-handler", + "revm-interpreter", + "revm-primitives", + "revm-state", + "serde", "serde_json", - "smol_str", - "toml 0.5.11", - "vfs", ] [[package]] -name = "fe-library" -version = "0.26.0" +name = "revm-interpreter" +version = "31.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26ec36405f7477b9dccdc6caa3be19adf5662a7a0dffa6270cdb13a090c077e5" dependencies = [ - "include_dir", - "indexmap 1.9.2", - "smol_str", + "revm-bytecode", + "revm-context-interface", + "revm-primitives", + "revm-state", + "serde", ] [[package]] -name = "fe-mir" -version = "0.26.0" +name = "revm-precompile" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a62958af953cc4043e93b5be9b8497df84cc3bd612b865c49a7a7dfa26a84e2" dependencies = [ - "dot2", - "fe-analyzer", - "fe-common", - "fe-library", - "fe-parser", - "fe-test-files", - "fxhash", - "id-arena", - "indexmap 1.9.2", - "num-bigint", - "num-integer", - "num-traits", - "salsa", - "smol_str", + "ark-bls12-381", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "arrayref", + "aurora-engine-modexp", + "c-kzg", + "cfg-if", + "k256", + "p256", + "revm-primitives", + "ripemd", + "rug", + "secp256k1", + "sha2", ] [[package]] -name = "fe-parser" -version = "0.26.0" +name = "revm-primitives" +version = "21.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29e161db429d465c09ba9cbff0df49e31049fe6b549e28eb0b7bd642fcbd4412" dependencies = [ - "criterion", - "fe-common", - "fe-test-files", - "if_chain", - "indenter", - "insta", - "logos", - "pretty_assertions", - "semver 1.0.16", + "alloy-primitives", + "num_enum", + "once_cell", "serde", - "smol_str", - "unescape", - "vec1", - "wasm-bindgen", - "wasm-bindgen-test", ] [[package]] -name = "fe-test-files" -version = "0.26.0" +name = "revm-state" +version = "8.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8be953b7e374dbdea0773cf360debed8df394ea8d82a8b240a6b5da37592fc" dependencies = [ - "fe-library", - "include_dir", - "indexmap 1.9.2", + "bitflags 2.11.0", + "revm-bytecode", + "revm-primitives", + "serde", ] [[package]] -name = "fe-test-runner" -version = "0.26.0" +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "bytes", - "colored", - "ethabi", - "getrandom", - "hex", - "indexmap 1.9.2", - "revm", + "hmac", + "subtle", ] [[package]] -name = "fe-yulc" -version = "0.26.0" +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ - "indexmap 1.9.2", - "serde_json", - "solc", + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", ] [[package]] -name = "ff" -version = "0.13.0" +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" dependencies = [ - "rand_core", - "subtle", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "fixed-hash" -version = "0.8.0" +name = "rowan" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +checksum = "417a3a9f582e349834051b8a10c8d71ca88da4211e4093528e36b9845f6b5f21" dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", + "countme", + "hashbrown 0.14.5", + "rustc-hash 1.1.0", + "text-size", ] [[package]] -name = "fixedbitset" -version = "0.4.2" +name = "rpds" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "e025feb26210bc196b908e72deb063b1b4000754304341cbc168a1e72c857ebc" +dependencies = [ + "archery", + "smallvec 1.15.1", +] [[package]] -name = "fnv" -version = "1.0.7" +name = "rug" +version = "1.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "de190ec858987c79cad4da30e19e546139b3339331282832af004d0ea7829639" +dependencies = [ + "az", + "gmp-mpfr-sys", + "libc", + "libm", +] [[package]] -name = "foreign-types" -version = "0.3.2" +name = "ruint" +version = "1.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" dependencies = [ - "foreign-types-shared", + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "ark-ff 0.5.0", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types 0.12.2", + "proptest", + "rand 0.8.6", + "rand 0.9.5", + "rlp", + "ruint-macro", + "serde_core", + "valuable", + "zeroize", ] [[package]] -name = "foreign-types-shared" -version = "0.1.1" +name = "ruint-macro" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] -name = "form_urlencoded" -version = "1.2.1" +name = "rust-embed" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27" dependencies = [ - "percent-encoding", + "rust-embed-impl", + "rust-embed-utils", + "walkdir", ] [[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - -[[package]] -name = "funty" -version = "2.0.0" +name = "rust-embed-impl" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" +dependencies = [ + "proc-macro2", + "quote", + "rust-embed-utils", + "syn 2.0.116", + "walkdir", +] [[package]] -name = "futures-channel" -version = "0.3.29" +name = "rust-embed-utils" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" dependencies = [ - "futures-core", + "sha2", + "walkdir", ] [[package]] -name = "futures-core" -version = "0.3.29" +name = "rustc-hash" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] -name = "futures-io" -version = "0.3.29" +name = "rustc-hash" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] -name = "futures-sink" -version = "0.3.29" +name = "rustc-hex" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] -name = "futures-task" -version = "0.3.29" +name = "rustc_version" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] [[package]] -name = "futures-util" -version = "0.3.29" +name = "rustc_version" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "futures-core", - "futures-io", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", + "semver 1.0.27", ] [[package]] -name = "fxhash" -version = "0.2.1" +name = "rustix" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "byteorder", + "bitflags 2.11.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", ] [[package]] -name = "generic-array" -version = "0.14.6" +name = "rustls" +version = "0.23.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21" dependencies = [ - "typenum", - "version_check", + "aws-lc-rs", + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", "zeroize", ] [[package]] -name = "getrandom" -version = "0.2.8" +name = "rustls-native-certs" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", ] [[package]] -name = "gimli" -version = "0.28.0" +name = "rustls-pki-types" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] [[package]] -name = "git2" -version = "0.18.3" +name = "rustls-platform-verifier" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" +checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" dependencies = [ - "bitflags 2.5.0", - "libc", - "libgit2-sys", + "core-foundation", + "core-foundation-sys", + "jni", "log", - "openssl-probe", - "openssl-sys", - "url", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", ] [[package]] -name = "glob" -version = "0.3.1" +name = "rustls-platform-verifier-android" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] -name = "group" -version = "0.13.0" +name = "rustls-webpki" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ - "ff", - "rand_core", - "subtle", + "aws-lc-rs", + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] -name = "h2" -version = "0.3.21" +name = "rustversion" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 1.9.2", - "slab", - "tokio", - "tokio-util", - "tracing", -] +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] -name = "half" -version = "1.8.2" +name = "rusty-fork" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] [[package]] -name = "hash-db" -version = "0.15.2" +name = "ryu" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] -name = "hash256-std-hasher" -version = "0.15.2" +name = "salsa" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +checksum = "1be22155f8d9732518b2db2bf379fe6f0b2375e76b08b7c8fe6c1b887d548c24" dependencies = [ - "crunchy", + "boxcar", + "crossbeam-queue", + "dashmap", + "hashbrown 0.15.5", + "hashlink", + "indexmap 2.13.0", + "parking_lot", + "portable-atomic", + "rayon", + "rustc-hash 2.1.1", + "salsa-macro-rules", + "salsa-macros", + "smallvec 1.15.1", + "thin-vec", + "tracing", ] [[package]] -name = "hashbrown" -version = "0.12.3" +name = "salsa-macro-rules" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "f55a7ef0a84e336f7c5f0332d81727f5629fe042d2aa556c75307afebc9f78a5" [[package]] -name = "hashbrown" -version = "0.14.0" +name = "salsa-macros" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "8d0e88a9c0c0d231a63f83dcd1a2c5e5d11044fac4b65bc9ad3b68ab48b0a0ab" dependencies = [ - "ahash", - "allocator-api2", + "heck", + "proc-macro2", + "quote", + "syn 2.0.116", + "synstructure", ] [[package]] -name = "heck" -version = "0.3.3" +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "unicode-segmentation", + "winapi-util", ] [[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.1.19" +name = "scale-info" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ - "libc", + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", ] [[package]] -name = "hermit-abi" -version = "0.2.6" +name = "scale-info-derive" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ - "libc", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-literal" -version = "0.4.1" +name = "schannel" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" +dependencies = [ + "windows-sys 0.61.2", +] [[package]] -name = "hmac" -version = "0.12.1" +name = "schemars" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ - "digest", + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", ] [[package]] -name = "http" -version = "0.2.9" +name = "schemars" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" dependencies = [ - "bytes", - "fnv", - "itoa", + "dyn-clone", + "ref-cast", + "serde", + "serde_json", ] [[package]] -name = "http-body" -version = "0.4.5" +name = "schemars" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" dependencies = [ - "bytes", - "http", - "pin-project-lite", + "dyn-clone", + "ref-cast", + "serde", + "serde_json", ] [[package]] -name = "httparse" -version = "1.8.0" +name = "schemars_derive" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.116", +] [[package]] -name = "httpdate" -version = "1.0.3" +name = "scip" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +checksum = "2f0cc97469a1eef9e457bd6e935c8727d2e18c59489f06cd98207a6439a6498c" +dependencies = [ + "protobuf", +] [[package]] -name = "hyper" -version = "0.14.27" +name = "scopeguard" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.4.10", - "tokio", - "tower-service", - "tracing", - "want", -] +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "hyper-tls" -version = "0.5.0" +name = "sec1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", ] [[package]] -name = "id-arena" -version = "2.2.1" +name = "secp256k1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" +checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" +dependencies = [ + "bitcoin_hashes", + "rand 0.9.5", + "secp256k1-sys", +] [[package]] -name = "idna" -version = "0.5.0" +name = "secp256k1-sys" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "cc", ] [[package]] -name = "if_chain" -version = "1.0.2" +name = "security-framework" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags 2.11.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] [[package]] -name = "impl-codec" -version = "0.6.0" +name = "security-framework-sys" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ - "parity-scale-codec", + "core-foundation-sys", + "libc", ] [[package]] -name = "impl-rlp" -version = "0.3.0" +name = "semver" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ - "rlp", + "semver-parser", ] [[package]] -name = "impl-serde" -version = "0.4.0" +name = "semver" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" +name = "semver-parser" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "pest", ] [[package]] -name = "include_dir" -version = "0.7.3" +name = "serde" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ - "include_dir_macros", + "serde_core", + "serde_derive", ] [[package]] -name = "include_dir_macros" -version = "0.7.3" +name = "serde-semver" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +checksum = "9418264b4789ea78183e45ed1785323a0a9d28c24b612c2f360ce86d3c87c301" dependencies = [ "proc-macro2", "quote", + "semver 1.0.27", + "serde", + "serde-semver-derive", + "syn 1.0.109", ] [[package]] -name = "indenter" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" - -[[package]] -name = "indexmap" -version = "1.9.2" +name = "serde-semver-derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bbb59c4005cc1e817ddad0dbc3b9af809cf49c989d0da46f735edf9629c0db19" dependencies = [ - "autocfg", - "hashbrown 0.12.3", + "proc-macro2", + "quote", + "semver 1.0.27", + "syn 1.0.109", ] [[package]] -name = "indexmap" -version = "2.0.0" +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ - "equivalent", - "hashbrown 0.14.0", + "serde_derive", ] [[package]] -name = "insta" -version = "1.28.0" +name = "serde_derive" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea5b3894afe466b4bcf0388630fc15e11938a6074af0cd637c825ba2ec8a099" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ - "lazy_static", - "linked-hash-map", - "similar", - "yaml-rust", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "instant" -version = "0.1.12" +name = "serde_derive_internals" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ - "cfg-if 1.0.0", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "ipnet" -version = "2.9.0" +name = "serde_json" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "indexmap 2.13.0", + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] [[package]] -name = "itertools" -version = "0.10.5" +name = "serde_path_to_error" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ - "either", + "itoa", + "serde", + "serde_core", ] [[package]] -name = "itoa" -version = "1.0.6" +name = "serde_repr" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] [[package]] -name = "jobserver" -version = "0.1.31" +name = "serde_spanned" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ - "libc", + "serde", ] [[package]] -name = "js-sys" -version = "0.3.61" +name = "serde_spanned" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ - "wasm-bindgen", + "serde_core", ] [[package]] -name = "k256" -version = "0.13.3" +name = "serde_urlencoded" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ - "cfg-if 1.0.0", - "ecdsa", - "elliptic-curve", - "sha2", + "form_urlencoded", + "itoa", + "ryu", + "serde", ] [[package]] -name = "keccak" -version = "0.1.3" +name = "serde_with" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" dependencies = [ - "cpufeatures", + "base64", + "bs58", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", ] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "serde_with_macros" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" dependencies = [ - "spin", + "darling", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "libc" -version = "0.2.153" +name = "sha1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.10.7", +] [[package]] -name = "libgit2-sys" -version = "0.16.2+1.7.2" +name = "sha1-checked" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8" +checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423" dependencies = [ - "cc", - "libc", - "libssh2-sys", - "libz-sys", - "openssl-sys", - "pkg-config", + "digest 0.10.7", + "sha1", ] [[package]] -name = "libm" -version = "0.2.6" +name = "sha2" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.10.7", +] [[package]] -name = "libredox" -version = "0.0.1" +name = "sha3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "bitflags 2.5.0", - "libc", - "redox_syscall 0.4.1", + "digest 0.10.7", + "keccak", ] [[package]] -name = "libssh2-sys" -version = "0.3.0" +name = "sha3-asm" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" +checksum = "b31139435f327c93c6038ed350ae4588e2c70a13d50599509fee6349967ba35a" dependencies = [ "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", + "cfg-if", ] [[package]] -name = "libz-sys" -version = "1.1.15" +name = "sharded-slab" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", + "lazy_static", ] [[package]] -name = "linked-hash-map" -version = "0.5.6" +name = "shell-words" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" [[package]] -name = "linux-raw-sys" -version = "0.4.10" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] -name = "lock_api" -version = "0.4.9" +name = "signal-hook-registry" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ - "autocfg", - "scopeguard", + "errno", + "libc", ] [[package]] -name = "log" -version = "0.4.17" +name = "signature" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "cfg-if 1.0.0", + "digest 0.10.7", + "rand_core 0.6.4", ] [[package]] -name = "logos" -version = "0.12.1" +name = "similar" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf8b031682c67a8e3d5446840f9573eb7fe26efe7ec8d195c9ac4c0647c502f1" -dependencies = [ - "logos-derive", -] +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] -name = "logos-derive" -version = "0.12.1" +name = "siphasher" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d849148dbaf9661a6151d1ca82b13bb4c4c128146a88d05253b38d4e2f496c" -dependencies = [ - "beef", - "fnv", - "proc-macro2", - "quote", - "regex-syntax 0.6.28", - "syn 1.0.109", -] +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] -name = "memchr" -version = "2.7.1" +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] -name = "memoffset" -version = "0.8.0" +name = "smallvec" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] -name = "mime" -version = "0.3.17" +name = "smallvec" +version = "2.0.0-alpha.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +checksum = "ef784004ca8777809dcdad6ac37629f0a97caee4c685fcea805278d81dd8b857" [[package]] -name = "miniz_oxide" -version = "0.7.1" +name = "smol" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" dependencies = [ - "adler", + "async-channel 2.5.0", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-net", + "async-process", + "blocking", + "futures-lite", ] [[package]] -name = "mio" -version = "0.8.9" +name = "smol_str" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "fad6c857cbab2627dcf01ec85a623ca4e7dcb5691cbaa3d7fb7653671f0d09c9" dependencies = [ - "libc", - "wasi", - "windows-sys", + "serde", ] [[package]] -name = "native-tls" -version = "0.2.11" +name = "smol_str" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "0f7a918bd2a9951d18ee6e48f076843e8e73a9a5d22cf05bcd4b7a81bdd04e17" dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", + "borsh", + "serde_core", ] [[package]] -name = "num" -version = "0.4.0" +name = "socket2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", + "libc", + "windows-sys 0.60.2", ] [[package]] -name = "num-bigint" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +name = "sonatina-codegen" +version = "0.0.3-alpha" +source = "git+https://github.com/fe-lang/sonatina?rev=601010bc9364276e598143ebb5749f8273832df6#601010bc9364276e598143ebb5749f8273832df6" dependencies = [ - "autocfg", - "num-integer", - "num-traits", + "bit-set", + "cranelift-codegen", + "cranelift-entity 0.136.1", + "cranelift-frontend", + "cranelift-module", + "cranelift-native", + "cranelift-object", + "dashmap", + "indexmap 2.13.0", + "rayon", + "rpds", + "rustc-hash 2.1.1", + "smallvec 1.15.1", + "sonatina-ir", + "sonatina-macros", + "sonatina-triple", + "sonatina-verifier", + "tracing", + "vec-collections", ] [[package]] -name = "num-complex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +name = "sonatina-ir" +version = "0.0.3-alpha" +source = "git+https://github.com/fe-lang/sonatina?rev=601010bc9364276e598143ebb5749f8273832df6#601010bc9364276e598143ebb5749f8273832df6" dependencies = [ - "num-traits", + "bit-set", + "bitflags 2.11.0", + "cranelift-entity 0.136.1", + "crossbeam-utils", + "dashmap", + "dot2 1.0.0 (git+https://github.com/sanpii/dot2.rs.git)", + "dyn-clone", + "indexmap 2.13.0", + "parking_lot", + "primitive-types 0.14.0", + "rayon", + "rustc-hash 2.1.1", + "smallvec 1.15.1", + "smol_str 0.3.5", + "sonatina-macros", + "sonatina-triple", + "vec-collections", ] [[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +name = "sonatina-macros" +version = "0.0.3-alpha" +source = "git+https://github.com/fe-lang/sonatina?rev=601010bc9364276e598143ebb5749f8273832df6#601010bc9364276e598143ebb5749f8273832df6" dependencies = [ - "autocfg", - "num-traits", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "num-iter" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +name = "sonatina-parser" +version = "0.0.3-alpha" +source = "git+https://github.com/fe-lang/sonatina?rev=601010bc9364276e598143ebb5749f8273832df6#601010bc9364276e598143ebb5749f8273832df6" dependencies = [ - "autocfg", - "num-integer", - "num-traits", + "annotate-snippets", + "bimap", + "cranelift-entity 0.136.1", + "derive_more 2.0.1", + "either", + "hex", + "pest", + "pest_derive", + "rustc-hash 2.1.1", + "smallvec 1.15.1", + "smol_str 0.3.5", + "sonatina-ir", + "sonatina-triple", + "tracing", +] + +[[package]] +name = "sonatina-triple" +version = "0.0.3-alpha" +source = "git+https://github.com/fe-lang/sonatina?rev=601010bc9364276e598143ebb5749f8273832df6#601010bc9364276e598143ebb5749f8273832df6" +dependencies = [ + "thiserror 2.0.18", ] [[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +name = "sonatina-verifier" +version = "0.0.3-alpha" +source = "git+https://github.com/fe-lang/sonatina?rev=601010bc9364276e598143ebb5749f8273832df6#601010bc9364276e598143ebb5749f8273832df6" dependencies = [ - "autocfg", - "num-bigint", - "num-integer", - "num-traits", + "cranelift-entity 0.136.1", + "rayon", + "rpds", + "rustc-hash 2.1.1", + "smallvec 1.15.1", + "sonatina-ir", + "sonatina-macros", + "sonatina-parser", + "sonatina-triple", + "tracing", ] [[package]] -name = "num-traits" -version = "0.2.18" +name = "sorted-iter" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" -dependencies = [ - "autocfg", - "libm", -] +checksum = "bceb57dc07c92cdae60f5b27b3fa92ecaaa42fe36c55e22dbfb0b44893e0b1f7" [[package]] -name = "num_cpus" -version = "1.15.0" +name = "spki" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ - "hermit-abi 0.2.6", - "libc", + "base64ct", + "der", ] [[package]] -name = "object" -version = "0.32.1" +name = "stable_deref_trait" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" -dependencies = [ - "memchr", -] +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] -name = "once_cell" -version = "1.19.0" +name = "static_assertions" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "oorandom" -version = "11.1.3" +name = "streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" + +[[package]] +name = "strsim" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] -name = "openssl" -version = "0.10.57" +name = "strum" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "bitflags 2.5.0", - "cfg-if 1.0.0", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", + "strum_macros", ] [[package]] -name = "openssl-macros" -version = "0.1.0" +name = "strum_macros" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ + "heck", "proc-macro2", "quote", - "syn 1.0.109", + "rustversion", + "syn 2.0.116", ] [[package]] -name = "openssl-probe" -version = "0.1.5" +name = "subtle" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] -name = "openssl-sys" -version = "0.9.93" +name = "syn" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "os_str_bytes" -version = "6.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" - -[[package]] -name = "output_vt100" -version = "0.1.3" +name = "syn" +version = "2.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" +checksum = "3df424c70518695237746f84cede799c9c58fcb37450d7b23716568cc8bc69cb" dependencies = [ - "winapi", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "parity-scale-codec" -version = "3.4.0" +name = "sync_wrapper" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637935964ff85a605d114591d4d2c13c5d1ba2806dae97cea6bf180238a749ac" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", + "futures-core", ] [[package]] -name = "parity-scale-codec-derive" -version = "3.1.4" +name = "synstructure" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.116", ] [[package]] -name = "parking_lot" -version = "0.11.1" +name = "tablesolve" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49838cdd952e69beb44e8ecf05aa29c5e80a7d4a15f12252daecb24998bce43c" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target-lexicon" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" + +[[package]] +name = "target-triple" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +checksum = "c3a6bfce3d99adfa72d24750a61f782f3036a81e7f86d8841ee1326deaebd171" + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ - "instant", - "lock_api", - "parking_lot_core", + "fastrand", + "getrandom 0.4.1", + "once_cell", + "rustix", + "windows-sys 0.61.2", ] [[package]] -name = "parking_lot_core" -version = "0.8.0" +name = "termcolor" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "instant", - "libc", - "redox_syscall 0.1.57", - "smallvec", - "winapi", + "winapi-util", ] [[package]] -name = "path-clean" -version = "1.0.1" +name = "text-size" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" +checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "thin-vec" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "259cdf8ed4e4aca6f1e9d011e10bd53f524a2d0637d7b28450f6c64ac298c4c6" [[package]] -name = "petgraph" -version = "0.6.3" +name = "thiserror" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "fixedbitset", - "indexmap 1.9.2", + "thiserror-impl 1.0.69", ] [[package]] -name = "pin-project-lite" -version = "0.2.13" +name = "thiserror" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] [[package]] -name = "pin-utils" -version = "0.1.0" +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] [[package]] -name = "pkg-config" -version = "0.3.27" +name = "thiserror-impl" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] [[package]] -name = "plotters" -version = "0.3.4" +name = "thread_local" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", + "cfg-if", ] [[package]] -name = "plotters-backend" -version = "0.3.4" +name = "threadpool" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] [[package]] -name = "plotters-svg" -version = "0.3.3" +name = "time" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ - "plotters-backend", + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", ] [[package]] -name = "ppv-lite86" -version = "0.2.17" +name = "time-core" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] -name = "pretty_assertions" -version = "1.3.0" +name = "time-macros" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ - "ctor", - "diff", - "output_vt100", - "yansi", + "num-conv", + "time-core", ] [[package]] -name = "primitive-types" -version = "0.12.1" +name = "tiny-keccak" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "uint", + "crunchy", ] [[package]] -name = "proc-macro-crate" -version = "1.3.1" +name = "tinystr" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ - "once_cell", - "toml_edit", + "displaydoc", + "zerovec", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "tinytemplate" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", + "serde", + "serde_json", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "tinyvec" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "tinyvec_macros", ] [[package]] -name = "proc-macro2" -version = "1.0.78" +name = "tinyvec_macros" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" -dependencies = [ - "unicode-ident", -] +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] -name = "proptest" -version = "1.4.0" +name = "tokio" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ - "bitflags 2.5.0", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax 0.8.3", - "unarray", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", ] [[package]] -name = "quote" -version = "1.0.35" +name = "tokio-macros" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "radium" -version = "0.7.0" +name = "tokio-rustls" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] [[package]] -name = "rand" -version = "0.8.5" +name = "tokio-tungstenite" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ - "libc", - "rand_chacha", - "rand_core", + "futures-util", + "log", + "tokio", + "tungstenite 0.26.2", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "tokio-tungstenite" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ - "ppv-lite86", - "rand_core", + "futures-util", + "log", + "tokio", + "tungstenite 0.28.0", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "tokio-util" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ - "getrandom", + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", ] [[package]] -name = "rand_xorshift" -version = "0.3.0" +name = "toml" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ - "rand_core", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] -name = "rayon" -version = "1.7.0" +name = "toml" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "399b1124a3c9e16766831c6bba21e50192572cdd98706ea114f9502509686ffc" dependencies = [ - "either", - "rayon-core", + "indexmap 2.13.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow", ] [[package]] -name = "rayon-core" -version = "1.11.0" +name = "toml_datetime" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", ] [[package]] -name = "redox_syscall" -version = "0.1.57" +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] [[package]] -name = "redox_syscall" -version = "0.4.1" +name = "toml_edit" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "bitflags 1.3.2", + "indexmap 2.13.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", + "toml_write", + "winnow", ] [[package]] -name = "redox_users" -version = "0.4.4" +name = "toml_edit" +version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ - "getrandom", - "libredox", - "thiserror", + "indexmap 2.13.0", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "winnow", ] [[package]] -name = "regex" -version = "1.7.1" +name = "toml_parser" +version = "1.0.9+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.6.28", + "winnow", ] [[package]] -name = "regex-syntax" -version = "0.6.28" +name = "toml_write" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] -name = "regex-syntax" -version = "0.8.3" +name = "toml_writer" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" [[package]] -name = "reqwest" -version = "0.11.22" +name = "tower" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ - "base64 0.21.5", - "bytes", - "encoding_rs", "futures-core", "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "system-configuration", + "sync_wrapper", "tokio", - "tokio-native-tls", + "tower-layer", "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", + "tracing", ] [[package]] -name = "revm" -version = "8.0.0" +name = "tower-http" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a454c1c650b2b2e23f0c461af09e6c31e1d15e1cbebe905a701c46b8a50afc" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ - "auto_impl", - "cfg-if 1.0.0", - "dyn-clone", - "revm-interpreter", - "revm-precompile", + "bitflags 2.11.0", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", ] [[package]] -name = "revm-interpreter" -version = "4.0.0" +name = "tower-layer" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d322f2730cd300e99d271a1704a2dfb8973d832428f5aa282aaa40e2473b5eec" -dependencies = [ - "revm-primitives", -] +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] -name = "revm-precompile" -version = "6.0.0" +name = "tower-service" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "931f692f3f4fc72ec39d5d270f8e9d208c4a6008de7590ee96cf948e3b6d3f8d" -dependencies = [ - "aurora-engine-modexp", - "k256", - "once_cell", - "revm-primitives", - "ripemd", - "sha2", - "substrate-bn", -] +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] -name = "revm-primitives" -version = "3.1.1" +name = "tracing" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbbc9640790cebcb731289afb7a7d96d16ad94afeb64b5d0b66443bd151e79d6" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ - "alloy-primitives", - "auto_impl", - "bitflags 2.5.0", - "bitvec", - "cfg-if 1.0.0", - "dyn-clone", - "enumn", - "hashbrown 0.14.0", - "hex", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", ] [[package]] -name = "rfc6979" -version = "0.4.0" +name = "tracing-attributes" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ - "hmac", - "subtle", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "ripemd" -version = "0.1.3" +name = "tracing-core" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ - "digest", + "once_cell", + "valuable", ] [[package]] -name = "rlp" -version = "0.5.2" +name = "tracing-log" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "bytes", - "rlp-derive", - "rustc-hex", + "log", + "once_cell", + "tracing-core", ] [[package]] -name = "rlp-derive" -version = "0.1.0" +name = "tracing-subscriber" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "tracing-core", ] [[package]] -name = "ron" -version = "0.5.1" +name = "tracing-subscriber" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ece421e0c4129b90e4a35b6f625e472e96c552136f5093a2f4fa2bbb75a62d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ - "base64 0.10.1", - "bitflags 1.3.2", - "serde", + "matchers", + "once_cell", + "regex-automata", + "sharded-slab", + "thread_local", + "tracing", + "tracing-core", ] [[package]] -name = "rstest" -version = "0.6.4" +name = "tracing-tree" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec448bc157977efdc0a71369cf923915b0c4806b1b2449c3fb011071d6f7c38" +checksum = "ac87aa03b6a4d5a7e4810d1a80c19601dbe0f8a837e9177f23af721c7ba7beec" dependencies = [ - "cfg-if 0.1.10", - "proc-macro2", - "quote", - "rustc_version 0.2.3", - "syn 1.0.109", + "nu-ansi-term", + "tracing-core", + "tracing-log", + "tracing-subscriber 0.3.22", ] [[package]] -name = "ruint" -version = "1.12.1" +name = "tree-sitter" +version = "0.24.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f308135fef9fc398342da5472ce7c484529df23743fb7c734e0f3d472971e62" +checksum = "a5387dffa7ffc7d2dae12b50c6f7aab8ff79d6210147c6613561fc3d474c6f75" dependencies = [ - "alloy-rlp", - "proptest", - "rand", - "ruint-macro", - "serde", - "valuable", - "zeroize", + "cc", + "regex", + "regex-syntax", + "streaming-iterator", + "tree-sitter-language", ] [[package]] -name = "ruint-macro" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f86854cf50259291520509879a5c294c3c9a4c334e9ff65071c51e42ef1e2343" +name = "tree-sitter-fe" +version = "26.4.0" +dependencies = [ + "cc", + "tree-sitter", + "tree-sitter-language", +] [[package]] -name = "rustc-demangle" -version = "0.1.23" +name = "tree-sitter-language" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782" [[package]] -name = "rustc-hash" -version = "1.1.0" +name = "triomphe" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "b40688ea6389c8171614b25491f71d4a27946e0c7ce2da1c6de27e25abf1a0ae" [[package]] -name = "rustc-hex" -version = "2.1.0" +name = "try-lock" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] -name = "rustc_version" -version = "0.2.3" +name = "trybuild" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +checksum = "06649c6f63d86604ba0c8950d5a1829fc9a17afd70fc6629f481d75b6a624c78" dependencies = [ - "semver 0.9.0", + "glob", + "serde", + "serde_derive", + "serde_json", + "target-triple", + "termcolor", + "toml 1.0.6+spec-1.1.0", ] [[package]] -name = "rustc_version" -version = "0.4.0" +name = "tungstenite" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" dependencies = [ - "semver 1.0.16", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.9.5", + "sha1", + "thiserror 2.0.18", + "utf-8", ] [[package]] -name = "rustix" -version = "0.38.21" +name = "tungstenite" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" dependencies = [ - "bitflags 2.5.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.9.5", + "sha1", + "thiserror 2.0.18", + "utf-8", ] [[package]] -name = "rustversion" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" - -[[package]] -name = "ryu" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" - -[[package]] -name = "salsa" -version = "0.16.1" +name = "typed-arena" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b84d9f96071f3f3be0dc818eae3327625d8ebc95b58da37d6850724f31d3403" -dependencies = [ - "crossbeam-utils", - "indexmap 1.9.2", - "lock_api", - "log", - "oorandom", - "parking_lot", - "rustc-hash", - "salsa-macros", - "smallvec", -] +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] -name = "salsa-macros" -version = "0.16.0" +name = "typed-path" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3904a4ba0a9d0211816177fd34b04c7095443f8cdacd11175064fe541c8fe2" -dependencies = [ - "heck 0.3.3", - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" [[package]] -name = "same-file" -version = "1.0.6" +name = "typenum" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] -name = "scale-info" -version = "2.3.1" +name = "ucd-trie" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "001cf62ece89779fd16105b5f515ad0e5cedcd5440d3dd806bb067978e7c3608" -dependencies = [ - "cfg-if 1.0.0", - "derive_more", - "parity-scale-codec", - "scale-info-derive", -] +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] -name = "scale-info-derive" -version = "2.3.1" +name = "uint" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "303959cf613a6f6efd19ed4b4ad5bf79966a13352716299ad532cfb115f4205c" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", + "byteorder", + "crunchy", + "hex", + "static_assertions", ] [[package]] -name = "schannel" -version = "0.1.22" +name = "uint" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" dependencies = [ - "windows-sys", + "byteorder", + "crunchy", + "hex", + "static_assertions", ] [[package]] -name = "scoped-tls" -version = "1.0.1" +name = "unarray" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] -name = "scopeguard" -version = "1.1.0" +name = "unicase" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] -name = "sec1" -version = "0.7.1" +name = "unicode-bom" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" -dependencies = [ - "base16ct", - "der", - "generic-array", - "subtle", - "zeroize", -] +checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] -name = "security-framework" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] -name = "security-framework-sys" -version = "2.9.1" +name = "unicode-normalization" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ - "core-foundation-sys", - "libc", + "tinyvec", ] [[package]] -name = "semver" -version = "0.9.0" +name = "unicode-width" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] -name = "semver" -version = "1.0.16" +name = "unicode-width" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] -name = "semver-parser" -version = "0.7.0" +name = "unicode-xid" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] -name = "serde" -version = "1.0.196" +name = "untrusted" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" -dependencies = [ - "serde_derive", -] +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] -name = "serde_cbor" -version = "0.11.2" +name = "unwrap-infallible" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "151ac09978d3c2862c4e39b557f4eceee2cc72150bc4cb4f16abf061b6e381fb" + +[[package]] +name = "url" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ - "half", + "form_urlencoded", + "idna", + "percent-encoding", "serde", + "serde_derive", ] [[package]] -name = "serde_derive" -version = "1.0.196" +name = "utf-8" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", -] +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] -name = "serde_json" -version = "1.0.93" +name = "utf8_iter" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" -dependencies = [ - "itoa", - "ryu", - "serde", -] +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] -name = "serde_spanned" -version = "0.6.3" +name = "utf8parse" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" -dependencies = [ - "serde", -] +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] -name = "serde_test" -version = "1.0.152" +name = "valuable" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3611210d2d67e3513204742004d6ac6f589e521861dabb0f649b070eea8bed9e" -dependencies = [ - "serde", -] +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] -name = "serde_urlencoded" -version = "0.7.1" +name = "value-bag" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] +checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" [[package]] -name = "sha2" -version = "0.10.6" +name = "vec-collections" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "3c9965c8f2ffed1dbcd16cafe18a009642f540fa22661c6cfd6309ddb02e4982" dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest", + "binary-merge", + "inplace-vec-builder", + "lazy_static", + "num-traits", + "smallvec 1.15.1", + "sorted-iter", ] [[package]] -name = "sha3" -version = "0.10.6" +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ - "digest", - "keccak", + "libc", ] [[package]] -name = "signature" -version = "2.2.0" +name = "waitpid-any" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "18aa3ce681e189f125c4c1e1388c03285e2fd434ef52c7203084012ac29c5e4a" dependencies = [ - "digest", - "rand_core", + "rustix", + "windows-sys 0.59.0", ] [[package]] -name = "similar" -version = "2.2.1" +name = "walkdir" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] [[package]] -name = "slab" -version = "0.4.9" +name = "want" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "autocfg", + "try-lock", ] [[package]] -name = "smallvec" -version = "1.10.0" +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "smol_str" -version = "0.1.24" +name = "wasip2" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad6c857cbab2627dcf01ec85a623ca4e7dcb5691cbaa3d7fb7653671f0d09c9" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "serde", + "wit-bindgen", ] [[package]] -name = "socket2" -version = "0.4.10" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "libc", - "winapi", + "wit-bindgen", ] [[package]] -name = "socket2" -version = "0.5.5" +name = "wasm-bindgen" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" dependencies = [ - "libc", - "windows-sys", + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] -name = "solc" -version = "0.1.0" -source = "git+https://github.com/fe-lang/solc-rust?rev=bde551e#bde551ef2ec13e7f88c93e42f76216d803b39bec" +name = "wasm-bindgen-futures" +version = "0.4.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" dependencies = [ - "cmake", - "lazy_static", + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", ] [[package]] -name = "spin" -version = "0.5.2" +name = "wasm-bindgen-macro" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] [[package]] -name = "static_assertions" -version = "1.1.0" +name = "wasm-bindgen-macro-support" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.116", + "wasm-bindgen-shared", +] [[package]] -name = "strsim" -version = "0.10.0" +name = "wasm-bindgen-shared" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +dependencies = [ + "unicode-ident", +] [[package]] -name = "strum" -version = "0.23.0" +name = "wasm-bindgen-test" +version = "0.3.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb" +checksum = "45649196a53b0b7a15101d845d44d2dda7374fc1b5b5e2bbf58b7577ff4b346d" dependencies = [ - "strum_macros", + "async-trait", + "cast", + "js-sys", + "libm", + "minicov", + "nu-ansi-term", + "num-traits", + "oorandom", + "serde", + "serde_json", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-bindgen-test-macro", + "wasm-bindgen-test-shared", ] [[package]] -name = "strum_macros" -version = "0.23.1" +name = "wasm-bindgen-test-macro" +version = "0.3.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38" +checksum = "f579cdd0123ac74b94e1a4a72bd963cf30ebac343f2df347da0b8df24cdebed2" dependencies = [ - "heck 0.3.3", "proc-macro2", "quote", - "rustversion", - "syn 1.0.109", + "syn 2.0.116", ] [[package]] -name = "substrate-bn" -version = "0.6.0" +name = "wasm-bindgen-test-shared" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" -dependencies = [ - "byteorder", - "crunchy", - "lazy_static", - "rand", - "rustc-hex", -] +checksum = "a8145dd1593bf0fb137dbfa85b8be79ec560a447298955877804640e40c2d6ea" [[package]] -name = "subtle" -version = "2.4.1" +name = "wasm-encoder" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] [[package]] -name = "syn" -version = "1.0.109" +name = "wasm-metadata" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "anyhow", + "indexmap 2.13.0", + "wasm-encoder", + "wasmparser", ] [[package]] -name = "syn" -version = "2.0.48" +name = "wasmparser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap 2.13.0", + "semver 1.0.27", ] [[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +name = "wasmtime-internal-core" +version = "48.0.2" +source = "git+https://github.com/fe-lang/wasmtime?rev=29e29784e9b6363675513398a606bcc5bdad41fe#29e29784e9b6363675513398a606bcc5bdad41fe" dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", + "hashbrown 0.17.1", + "libm", ] [[package]] -name = "system-configuration-sys" -version = "0.5.0" +name = "wasmtime-internal-core" +version = "49.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "64b67114739063bb72bb8ed2b4994b8b22809d354432db68553ad529850f9536" dependencies = [ - "core-foundation-sys", - "libc", + "hashbrown 0.17.1", + "libm", ] [[package]] -name = "tap" -version = "1.0.1" +name = "web-sys" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +dependencies = [ + "js-sys", + "wasm-bindgen", +] [[package]] -name = "tempfile" -version = "3.8.1" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ - "cfg-if 1.0.0", - "fastrand", - "redox_syscall 0.4.1", - "rustix", - "windows-sys", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "termcolor" -version = "1.2.0" +name = "webpki-root-certs" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" dependencies = [ - "winapi-util", + "rustls-pki-types", ] [[package]] -name = "textwrap" -version = "0.11.0" +name = "winapi" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ - "unicode-width", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] -name = "textwrap" -version = "0.16.0" +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] -name = "thiserror" -version = "1.0.56" +name = "winapi-util" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "thiserror-impl", + "windows-sys 0.61.2", ] [[package]] -name = "thiserror-impl" -version = "1.0.56" +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", -] +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "tiny-keccak" -version = "2.0.2" +name = "windows-core" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "crunchy", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "tinytemplate" -version = "1.2.1" +name = "windows-implement" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ - "serde", - "serde_json", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "windows-interface" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ - "tinyvec_macros", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] -name = "tokio" -version = "1.33.0" +name = "windows-result" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "num_cpus", - "pin-project-lite", - "socket2 0.5.5", - "windows-sys", + "windows-link", ] [[package]] -name = "tokio-native-tls" -version = "0.3.1" +name = "windows-strings" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "native-tls", - "tokio", + "windows-link", ] [[package]] -name = "tokio-util" -version = "0.7.10" +name = "windows-sys" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", + "windows-targets 0.42.2", ] [[package]] -name = "toml" -version = "0.5.11" +name = "windows-sys" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "serde", + "windows-targets 0.52.6", ] [[package]] -name = "toml" -version = "0.7.6" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", + "windows-targets 0.52.6", ] [[package]] -name = "toml_datetime" -version = "0.6.3" +name = "windows-sys" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "serde", + "windows-targets 0.53.5", ] [[package]] -name = "toml_edit" -version = "0.19.14" +name = "windows-sys" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "indexmap 2.0.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", + "windows-link", ] [[package]] -name = "tower-service" -version = "0.3.2" +name = "windows-targets" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] [[package]] -name = "tracing" -version = "0.1.40" +name = "windows-targets" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "pin-project-lite", - "tracing-core", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "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 = "tracing-core" -version = "0.1.32" +name = "windows-targets" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "once_cell", + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] -name = "triehash" -version = "0.8.4" +name = "windows_aarch64_gnullvm" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1631b201eb031b563d2e85ca18ec8092508e262a3196ce9bd10a67ec87b9f5c" -dependencies = [ - "hash-db", - "rlp", -] +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] -name = "try-lock" -version = "0.2.4" +name = "windows_aarch64_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] -name = "typenum" -version = "1.16.0" +name = "windows_aarch64_gnullvm" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] -name = "uint" -version = "0.9.5" +name = "windows_aarch64_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] -name = "unarray" -version = "0.1.4" +name = "windows_aarch64_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] -name = "unescape" -version = "0.1.0" +name = "windows_aarch64_msvc" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb97dac3243214f8d8507998906ca3e2e0b900bf9bf4870477f125b82e68f6e" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] -name = "unicode-bidi" -version = "0.3.13" +name = "windows_i686_gnu" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] -name = "unicode-ident" -version = "1.0.7" +name = "windows_i686_gnu" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775c11906edafc97bc378816b94585fbd9a054eabaf86fdd0ced94af449efab7" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] -name = "unicode-normalization" -version = "0.1.22" +name = "windows_i686_gnu" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] -name = "unicode-segmentation" -version = "1.10.1" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] -name = "unicode-width" -version = "0.1.10" +name = "windows_i686_gnullvm" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] -name = "url" -version = "2.5.0" +name = "windows_i686_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] -name = "valuable" -version = "0.1.0" +name = "windows_i686_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] -name = "vcpkg" -version = "0.2.15" +name = "windows_i686_msvc" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] -name = "vec1" -version = "1.10.1" +name = "windows_x86_64_gnu" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bda7c41ca331fe9a1c278a9e7ee055f4be7f5eb1c2b72f079b4ff8b5fce9d5c" -dependencies = [ - "serde", -] +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] -name = "version_check" -version = "0.9.4" +name = "windows_x86_64_gnu" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] -name = "vfs" -version = "0.5.2" +name = "windows_x86_64_gnu" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fe15bc81afdceeaedd710d237f9043e895fd619db42cb503d9bfbb27a9f3a1" -dependencies = [ - "thiserror", -] +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] -name = "walkdir" -version = "2.3.2" +name = "windows_x86_64_gnullvm" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" -dependencies = [ - "same-file", - "winapi", - "winapi-util", -] +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] -name = "want" -version = "0.3.1" +name = "windows_x86_64_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "windows_x86_64_gnullvm" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] -name = "wasm-bindgen" -version = "0.2.84" +name = "windows_x86_64_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" -dependencies = [ - "cfg-if 1.0.0", - "wasm-bindgen-macro", -] +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] -name = "wasm-bindgen-backend" -version = "0.2.84" +name = "windows_x86_64_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 1.0.109", - "wasm-bindgen-shared", -] +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "wasm-bindgen-futures" -version = "0.4.34" +name = "windows_x86_64_msvc" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "wasm-bindgen", - "web-sys", -] +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] -name = "wasm-bindgen-macro" -version = "0.2.84" +name = "winnow" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ - "quote", - "wasm-bindgen-macro-support", + "memchr", ] [[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.84" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "wasm-bindgen-backend", - "wasm-bindgen-shared", + "wit-bindgen-rust-macro", ] [[package]] -name = "wasm-bindgen-shared" -version = "0.2.84" +name = "wit-bindgen-core" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] [[package]] -name = "wasm-bindgen-test" -version = "0.3.34" +name = "wit-bindgen-rust" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db36fc0f9fb209e88fb3642590ae0205bb5a56216dabd963ba15879fe53a30b" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ - "console_error_panic_hook", - "js-sys", - "scoped-tls", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-bindgen-test-macro", + "anyhow", + "heck", + "indexmap 2.13.0", + "prettyplease", + "syn 2.0.116", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", ] [[package]] -name = "wasm-bindgen-test-macro" -version = "0.3.34" +name = "wit-bindgen-rust-macro" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0734759ae6b3b1717d661fe4f016efcfb9828f5edb4520c18eaee05af3b43be9" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" dependencies = [ + "anyhow", + "prettyplease", "proc-macro2", "quote", + "syn 2.0.116", + "wit-bindgen-core", + "wit-bindgen-rust", ] [[package]] -name = "web-sys" -version = "0.3.61" +name = "wit-component" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ - "js-sys", - "wasm-bindgen", + "anyhow", + "bitflags 2.11.0", + "indexmap 2.13.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", ] [[package]] -name = "winapi" -version = "0.3.9" +name = "wit-parser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "anyhow", + "id-arena", + "indexmap 2.13.0", + "log", + "semver 1.0.27", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "writeable" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] -name = "winapi-util" -version = "0.1.5" +name = "wyz" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" dependencies = [ - "winapi", + "tap", ] [[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" +name = "yoke" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "windows-targets", + "stable_deref_trait", + "yoke-derive", + "zerofrom", ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "yoke-derive" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "proc-macro2", + "quote", + "syn 2.0.116", + "synstructure", ] [[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_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" +name = "zerocopy" +version = "0.8.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +dependencies = [ + "zerocopy-derive", +] [[package]] -name = "windows_i686_msvc" -version = "0.48.5" +name = "zerocopy-derive" +version = "0.8.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", +] [[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" +name = "zerofrom" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] [[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.116", + "synstructure", +] [[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" +name = "zeroize" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] [[package]] -name = "winnow" -version = "0.5.36" +name = "zeroize_derive" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "818ce546a11a9986bc24f93d0cdf38a8a1a400f1473ea8c82e59f6e0ffab9249" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ - "memchr", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "winreg" -version = "0.50.0" +name = "zerotrie" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ - "cfg-if 1.0.0", - "windows-sys", + "displaydoc", + "yoke", + "zerofrom", ] [[package]] -name = "wyz" -version = "0.5.1" +name = "zerovec" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ - "tap", + "yoke", + "zerofrom", + "zerovec-derive", ] [[package]] -name = "yaml-rust" -version = "0.4.5" +name = "zerovec-derive" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ - "linked-hash-map", + "proc-macro2", + "quote", + "syn 2.0.116", ] [[package]] -name = "yansi" -version = "0.5.1" +name = "zlib-rs" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" - -[[package]] -name = "yultsur" -version = "0.1.0" -source = "git+https://github.com/fe-lang/yultsur?rev=ae85470#ae854702e90b2c70e5c19961167f2b6f2aff32d2" -dependencies = [ - "indenter", -] +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" [[package]] -name = "zeroize" -version = "1.7.0" +name = "zmij" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/Cargo.toml b/Cargo.toml index 7f3d0639ca..19d4887748 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,8 +2,110 @@ members = ["crates/*"] resolver = "2" -[profile.dev.package.solc] -opt-level = 3 +[workspace.package] +edition = "2024" + +[workspace.dependencies] +common = { path = "crates/common", package = "fe-common" } +dataflow = { path = "crates/fe-dataflow", package = "fe-dataflow" } +driver = { path = "crates/driver", package = "fe-driver" } +fmt = { path = "crates/fmt", package = "fe-fmt" } +hir = { path = "crates/hir", package = "fe-hir" } +parser = { path = "crates/parser", package = "fe-parser" } +test-utils = { path = "crates/test-utils", package = "fe-test-utils" } +resolver = { path = "crates/resolver", package = "fe-resolver" } +codegen = { path = "crates/codegen", package = "fe-codegen" } +fe-web = { path = "crates/fe-web" } +semantic-indexing = { path = "crates/semantic-indexing", package = "fe-semantic-indexing" } +language-server = { path = "crates/language-server", package = "fe-language-server" } +mir = { path = "crates/mir", package = "fe-mir" } +matchcov = "0.2.0" +trace-facts = { path = "crates/trace-facts", package = "fe-trace-facts" } +debug-export = { path = "crates/debug-export", package = "fe-debug-export" } +trace-facts-macros = { path = "crates/trace-facts-macros", package = "fe-trace-facts-macros" } +cranelift-entity = "0.136.1" +url = "2.5.4" +camino = "1.1.9" +typed-path = "0.12.3" +clap = { version = "4.5.26", features = ["derive"] } +clap_complete = "4.5.65" +codespan-reporting = "0.11" +derive_more = { version = "1.0", default-features = false, features = [ + "from", + "try_into", +] } +dir-test = "0.4" +glob = "0.3.2" +crossbeam-channel = "0.5.15" +gix = { version = "0.83.0", default-features = false } +rustc-hash = "2.1.0" +blake3 = "1" +num-bigint = "0.4" +num-traits = "0.2" +paste = "1.0.15" +salsa = "0.20" +smallvec = { version = "2.0.0-alpha.11" } +smallvec1 = { version = "1", package = "smallvec" } +thin-vec = "0.2.16" +smol_str = { version = "0.1", features = ["serde"] } +serde-semver = "0.2.1" +tracing = "0.1.41" +tracing-subscriber = { version = "0.3.19", default-features = false, features = ["std", "fmt", "env-filter"] } +tracing-tree = "0.4.0" +wasm-bindgen-test = "0.3" +semver = "1.0.26" +petgraph = "0.8" +sonatina-ir = { git = "https://github.com/fe-lang/sonatina", rev = "601010bc9364276e598143ebb5749f8273832df6" } +sonatina-triple = { git = "https://github.com/fe-lang/sonatina", rev = "601010bc9364276e598143ebb5749f8273832df6" } +sonatina-codegen = { git = "https://github.com/fe-lang/sonatina", rev = "601010bc9364276e598143ebb5749f8273832df6" } +sonatina-verifier = { git = "https://github.com/fe-lang/sonatina", rev = "601010bc9364276e598143ebb5749f8273832df6" } [profile.dev] -debug = 1 +# Set to 0 to make the build faster and debugging more difficult. +debug = 0 + +[profile.test] +# Set to 0 to make the build faster and debugging more difficult. +debug = 0 + +[profile.release] +debug = 0 + +# Keep compiler-heavy tests optimized while checking debug invariants. +[profile.test-release] +inherits = "release" +debug-assertions = true + +[profile.dev.package] +revm = { opt-level = 3 } +revm-bytecode = { opt-level = 3 } +revm-context = { opt-level = 3 } +revm-context-interface = { opt-level = 3 } +revm-database = { opt-level = 3 } +revm-database-interface = { opt-level = 3 } +revm-handler = { opt-level = 3 } +revm-inspector = { opt-level = 3 } +revm-interpreter = { opt-level = 3 } +revm-precompile = { opt-level = 3 } +revm-primitives = { opt-level = 3 } +revm-state = { opt-level = 3 } +sonatina-ir = { opt-level = 3 } +sonatina-codegen = { opt-level = 3 } +sonatina-verifier = { opt-level = 3 } + +[profile.test.package] +revm = { opt-level = 3 } +revm-bytecode = { opt-level = 3 } +revm-context = { opt-level = 3 } +revm-context-interface = { opt-level = 3 } +revm-database = { opt-level = 3 } +revm-database-interface = { opt-level = 3 } +revm-handler = { opt-level = 3 } +revm-inspector = { opt-level = 3 } +revm-interpreter = { opt-level = 3 } +revm-precompile = { opt-level = 3 } +revm-primitives = { opt-level = 3 } +revm-state = { opt-level = 3 } +sonatina-ir = { opt-level = 3 } +sonatina-codegen = { opt-level = 3 } +sonatina-verifier = { opt-level = 3 } diff --git a/LICENSE-GPL3 b/LICENSE-GPL3 deleted file mode 100644 index f288702d2f..0000000000 --- a/LICENSE-GPL3 +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/Makefile b/Makefile index f0849e0991..b18a00f195 100644 --- a/Makefile +++ b/Makefile @@ -1,60 +1,3 @@ -.PHONY: build-website -build-website: - echo -e "\033[0;32mBuilding website...\033[0m" - - # Ensure we start from a clean state - rm -rf target/website - - # Copy the entire website directory to target/website - cp -r website/ target/ - - # Fill version marker with current version - sed -i "s/{{FE_VERSION}}/$$(cargo pkgid fe | cut -d# -f2 | cut -d: -f2)/g" target/website/index.html - - # Generate the compiler API docs - cargo doc --no-deps --workspace - - # Move the API docs into the compiler-docs subdirectory within the website - mv target/doc target/website/compiler-docs - - # Generate the Fe guide into the docs subdirectory within the website - mdbook build docs/ - mkdir target/website/docs - mv docs/book/html/* target/website/docs - -.PHONY: serve-website -serve-website: build-website - echo -e "\033[0;32mServing website locally...\033[0m" - cd target/website; python3 -m http.server 8000 - -.PHONY: deploy-website -deploy-website: build-website - echo -e "\033[0;32mDeploying website...\033[0m" - # delete old gh-pages-tmp + gh-pages-dist branch if they exists - -git branch -D gh-pages-tmp gh-pages-dist - - # Recreate it - git checkout -b gh-pages-tmp - - # Add changes to git. - git add -f target/website - - # Commit changes. - git commit -m "Generated website" - - # Only preserve target/website as the root of contents for this branch - git subtree split -P target/website -b gh-pages-dist - - # Push to Github Pages - git push -f upstream gh-pages-dist:gh-pages - - # Go where we came from - git checkout - - - # Delete temporary branches - git branch -D gh-pages-tmp - git branch -D gh-pages-dist - .PHONY: docker-test docker-test: docker run \ @@ -70,8 +13,39 @@ docker-wasm-test: --rm \ --volume "$(shell pwd):/mnt" \ --workdir '/mnt' \ - davesque/rust-wasm \ - wasm-pack test --node -- --workspace + rust:latest \ + /bin/bash -c "rustup target add wasm32-unknown-unknown && cargo test -p fe-common -p fe-parser -p fe-hir --target wasm32-unknown-unknown" + +.PHONY: treesitter-generate +treesitter-generate: + # Generate the tree-sitter parser with the pinned CLI. The generated + # sources (parser.c, grammar.json, node-types.json, src/tree_sitter/) are + # not tracked in git; they're regenerated from grammar.js at build time. + cd crates/tree-sitter-fe && npm ci --ignore-scripts && npm rebuild tree-sitter-cli && npx tree-sitter generate --abi=14 + +.PHONY: test +test: treesitter-generate + # Builds and runs the workspace tests, including the tree-sitter grammar + # test (crates/parser/tests/tree_sitter_parse.rs), which parses every .fe + # fixture against the freshly generated grammar. + cargo nextest run --cargo-profile test-release --workspace --all-features --no-fail-fast \ + --exclude fe-bench + +.PHONY: check-wasm +check-wasm: + @echo "Checking core crates for wasm32-unknown-unknown..." + cargo check -p fe-common -p fe-parser -p fe-hir --target wasm32-unknown-unknown + @echo "✓ Core crates support wasm32-unknown-unknown" + +.PHONY: check-wasi +check-wasi: + @echo "Checking filesystem-dependent crates for wasm32-wasip1..." + cargo check -p fe-driver -p fe-resolver --target wasm32-wasip1 + @echo "✓ Filesystem crates support wasm32-wasip1" + +.PHONY: check-wasm-all +check-wasm-all: check-wasm check-wasi + @echo "✓ All WASM/WASI checks passed" .PHONY: coverage coverage: @@ -79,7 +53,7 @@ coverage: .PHONY: clippy clippy: - cargo clippy --workspace --all-targets --all-features -- -D warnings -A clippy::upper-case-acronyms -A clippy::large-enum-variant + cargo clippy --workspace --all-targets --all-features -- -D warnings -A clippy::upper-case-acronyms -A clippy::large-enum-variant -W clippy::print_stdout -W clippy::print_stderr .PHONY: rustfmt rustfmt: @@ -95,22 +69,69 @@ build-docs: README.md: src/main.rs cargo readme --no-title --no-indent-headings > README.md -notes: - towncrier build --yes --version $(version) +# eisenbote (https://github.com/fe-lang/eisenbote) assembles the release notes +# from newsfragments/, configured in eisenbote.toml. It is built with the Fe +# compiler about to be released, which also checks the native backend on a +# real program. If that build fails, eisenbote's last working executable is +# downloaded instead. +# +# By default the Makefile keeps its own clone of eisenbote in target/eisenbote +# and updates it to eisenbote's latest master. Set EISENBOTE to use another +# checkout as it is (it is cloned if it doesn't exist). +EISENBOTE_REPO = https://github.com/fe-lang/eisenbote +EISENBOTE ?= target/eisenbote +# EISENBOTE_BUILD=0 skips the build and uses the last working executable. +EISENBOTE_BUILD ?= 1 + +.PHONY: eisenbote-checkout +eisenbote-checkout: + @if [ ! -d "$(EISENBOTE)/.git" ]; then \ + git clone --quiet --depth 1 $(EISENBOTE_REPO) "$(EISENBOTE)"; \ + elif [ "$(origin EISENBOTE)" = file ]; then \ + git -C "$(EISENBOTE)" pull --quiet --ff-only; \ + fi + +.PHONY: eisenbote +eisenbote: eisenbote-checkout +ifeq ($(EISENBOTE_BUILD),0) + $(MAKE) -C $(EISENBOTE) download +else + @echo "Building eisenbote with this Fe. To use its last working executable" + @echo "instead, run: make $(or $(MAKECMDGOALS),eisenbote) version=$(version) EISENBOTE_BUILD=0" + cargo build --release -p fe --features cranelift + $(MAKE) -C $(EISENBOTE) -B FE=$(CURDIR)/target/release/fe || { \ + echo "Building eisenbote with this Fe failed; using its last working executable."; \ + $(MAKE) -C $(EISENBOTE) download; } +endif + +# Any eisenbote executable, for checks that don't need a fresh build. +$(EISENBOTE)/out/eisenbote: | eisenbote-checkout + $(MAKE) -C $(EISENBOTE) download + +# Check that newsfragments/ only holds well-named fragments (used by CI). +.PHONY: check-notes +check-notes: $(EISENBOTE)/out/eisenbote + $(EISENBOTE)/bin/eisenbote check + +notes: eisenbote + $(EISENBOTE)/bin/eisenbote build --yes --version $(version) git commit -m "Compile release notes" -release: +.PHONY: release release-test +release: $(EISENBOTE)/out/eisenbote # Ensure release notes where generated before running the release command - ./newsfragments/validate_files.py is-empty - cargo release $(version) --execute --all --skip-tag --skip-push - # Run the tests again because we may have to adjust some based on the update version - cargo test --workspace --features solc-backend - -push-tag: - # Run `make release ` first - ./newsfragments/validate_files.py is-empty + $(EISENBOTE)/bin/eisenbote check --empty + cargo release $(version) --execute --all --no-tag --no-push + $(MAKE) release-test + +# Repeat validation after a version bump without rerunning cargo-release. +release-test: + # Optimize compiler-heavy tests and give deeply nested type queries enough stack. + RUST_MIN_STACK=16777216 cargo test --profile test-release --locked --workspace + +push-tag: $(EISENBOTE)/out/eisenbote + # Run `make release version=` first + $(EISENBOTE)/bin/eisenbote check --empty # Tag the release with the current version number git tag "v$$(cargo pkgid fe | cut -d# -f2 | cut -d: -f2)" - git push --tags upstream master - printf "\033[1m\033[31mConsider to redeploy the website now\n" - + git push --tags upstream diff --git a/README.md b/README.md index a644e86a72..3e9540cfcf 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,67 @@ +# Fe - +Fe is a Rust-like, statically typed language for the Ethereum Virtual Machine +(EVM), with explicit effects, message-passing contracts, and an integrated +toolchain. -Fe is an emerging smart contract language for the Ethereum blockchain. +> **Status:** Fe 26.x is **not production-ready**. See the +> [Fe 26 release announcement](https://blog.fe-lang.org/posts/fe26-a-fresh-start/) +> for context. -[![Build Status](https://github.com/ethereum/fe/workflows/CI/badge.svg)](https://github.com/ethereum/fe/actions) -[![Coverage](https://codecov.io/gh/ethereum/fe/branch/master/graph/badge.svg)](https://codecov.io/gh/ethereum/fe) +- Website: +- Docs: +- Blog: +- Zulip: +## Install -NOTE: **The larger part of the `master` branch will be replaced with the brand-new implementation, which is currently under development in the [fe-v2](https://github.com/ethereum/fe/tree/fe-v2) branch. Please refer to the branch if you kindly contribute to Fe** +Use `feup`: -## Overview - -Fe is a statically typed language for the Ethereum Virtual Machine (EVM). It is inspired by Rust and easy to learn -- especially for new developers entering the Ethereum ecosystem. - -## Features & Goals - -* Bounds and overflow checking -* Decidability by limitation of dynamic program behavior -* More precise gas estimation (as a consequence of decidability) -* Static typing -* Pure function support -* Restrictions on reentrancy -* Static looping -* Module imports -* Standard library -* Usage of [YUL](https://docs.soliditylang.org/en/latest/yul.html) IR to target both EVM and eWASM -* WASM compiler binaries for enhanced portability and in-browser compilation of - Fe contracts -* Implementation in a powerful, systems-oriented language (Rust) with strong safety guarantees to reduce risk of compiler bugs - -Additional information about design goals and background can be found in the [official announcement](https://snakecharmers.ethereum.org/fe-a-new-language-for-the-ethereum-ecosystem/). - -## Language Specification - -We aim to provide a full language specification that should eventually be used to formally verify the correctness of the compiler. A work in progress draft of the specification can be found [here](http://fe-lang.org/docs/spec/index.html). - -## Progress - -Fe development is still in its early stages. We have a basic [Roadmap for 2021](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg) that we want to follow. We generally try to drive the development by working through real world use cases. Our next goal is to provide a working Uniswap implementation in Fe which will help us to advance and form the language. - -Fe had its first alpha release January 2021 and is now following a monthly release cycle. - -## Getting started - -- [Build the compiler](https://github.com/ethereum/fe/blob/master/docs/src/development/build.md) -- [Or download the binary release](https://github.com/ethereum/fe/releases) - -To compile Fe code: +```bash +curl -fsSL https://raw.githubusercontent.com/argotorg/fe/master/feup/feup.sh | bash +``` -1. Run `fe path/to/fe_source.fe` -2. Fe creates a directory `output` in the current working directory that contains the compiled binary and abi. +See for language documentation, examples, and other +installation options. -Run `fe --help` to explore further options. +## CLI -## Examples +The compiler is exposed through the `fe` binary. See [`CLI.md`](./CLI.md) for +the command reference. -The following is a simple contract implemented in Fe. +## Repository Layout -```fe -struct Signed { - pub book_msg: String<100> -} +- `crates/` - compiler crates, CLI, language server, and supporting tools +- `ingots/core/` - `core` ingot, built into every compilation +- `ingots/std/` - Fe standard library +- `feup/` - the `feup` installer script +- `newsfragments/` - release note fragments consumed by eisenbote (see `eisenbote.toml`) -contract GuestBook { - messages: Map> +## Development - pub fn sign(mut self, mut ctx: Context, book_msg: String<100>) { - self.messages[ctx.msg_sender()] = book_msg - ctx.emit(Signed(book_msg: book_msg)) - } +Run the workspace tests: - pub fn get_msg(self, addr: address) -> String<100> { - return self.messages[addr].to_mem() - } -} +```bash +cargo test --workspace ``` -A lot more working examples can be found in our [test fixtures directory](https://github.com/ethereum/fe/tree/master/crates/test-files/fixtures/demos). +For optimized tests with debug assertions enabled, use +`cargo nextest run --cargo-profile test-release --workspace`. CI and `make test` +use this optimized profile too. -The most advanced example that we can provide at this point is an implementation of the [Uniswap-V2 core contracts](https://github.com/ethereum/fe/blob/master/crates/test-files/fixtures/demos/uniswap.fe). +Snapshot tests use [`insta`](https://insta.rs/): -## Community +```bash +cargo insta review +cargo insta accept --workspace +``` -- Twitter: [@official_fe](https://twitter.com/official_fe) -- Chat: [Discord](https://discord.gg/ywpkAXFjZH) +## Contributing +Non-trivial language or architecture changes should start as a discussion on +GitHub or Zulip. For bug fixes and small improvements, a PR against `master` is +fine. ## License -The Fe implementation is split into several crates. Crates that depend on the -solidity compiler (directly or indirectly) are licensed GPL-3.0-or-later. This -includes the `fe` CLI tool, yulc, driver, tests, and test-utils. - -The remaining crates are licensed Apache-2.0. This includes the parser, -analyzer, mir, abi, and common. +Licensed under the [Apache License, Version 2.0](./LICENSE-APACHE). diff --git a/crates/abi/Cargo.toml b/crates/abi/Cargo.toml deleted file mode 100644 index d61f7466f2..0000000000 --- a/crates/abi/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "fe-abi" -version = "0.26.0" -authors = ["The Fe Developers "] -edition = "2021" -license = "Apache-2.0" -repository = "https://github.com/ethereum/fe" - -[dependencies] -fe-common = { path = "../common", version = "^0.26.0"} -serde = { version = "1.0", features = ["derive"] } - -[dev-dependencies] -serde_test = "1.0" diff --git a/crates/abi/src/contract.rs b/crates/abi/src/contract.rs deleted file mode 100644 index efe05089d2..0000000000 --- a/crates/abi/src/contract.rs +++ /dev/null @@ -1,33 +0,0 @@ -use super::{event::AbiEvent, function::AbiFunction}; - -use serde::{ser::SerializeSeq, Serialize, Serializer}; - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct AbiContract { - /// Public functions in the contract. - funcs: Vec, - - /// Events emitted from the contract. - events: Vec, -} - -impl Serialize for AbiContract { - fn serialize(&self, s: S) -> Result { - let mut seq = s.serialize_seq(Some(self.funcs.len() + self.events.len()))?; - for func in &self.funcs { - seq.serialize_element(func)?; - } - - for event in &self.events { - seq.serialize_element(event)?; - } - - seq.end() - } -} - -impl AbiContract { - pub fn new(funcs: Vec, events: Vec) -> Self { - Self { funcs, events } - } -} diff --git a/crates/abi/src/event.rs b/crates/abi/src/event.rs deleted file mode 100644 index b26d5795d1..0000000000 --- a/crates/abi/src/event.rs +++ /dev/null @@ -1,148 +0,0 @@ -use super::types::AbiType; - -use fe_common::utils::keccak; -use serde::Serialize; - -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] -pub struct AbiEvent { - #[serde(rename = "type")] - pub ty: &'static str, - pub name: String, - pub inputs: Vec, - pub anonymous: bool, -} - -impl AbiEvent { - pub fn new(name: String, fields: Vec, anonymous: bool) -> Self { - Self { - ty: "event", - name, - inputs: fields, - anonymous, - } - } - - pub fn signature(&self) -> AbiEventSignature { - AbiEventSignature::new(self) - } -} - -pub struct AbiEventSignature { - sig: String, -} - -impl AbiEventSignature { - pub fn signature(&self) -> &str { - &self.sig - } - - pub fn hash_hex(&self) -> String { - keccak::full(self.sig.as_bytes()) - } - - pub fn hash_raw(&self) -> [u8; 32] { - keccak::full_as_bytes(self.sig.as_bytes()) - } - - fn new(event: &AbiEvent) -> Self { - let sig = format!( - "{}({})", - event.name, - event - .inputs - .iter() - .map(|input| input.ty.selector_type_name()) - .collect::>() - .join(",") - ); - - Self { sig } - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] -pub struct AbiEventField { - pub name: String, - #[serde(flatten)] - pub ty: AbiType, - pub indexed: bool, -} - -impl AbiEventField { - pub fn new(name: String, ty: impl Into, indexed: bool) -> Self { - Self { - name, - ty: ty.into(), - indexed, - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - - use serde_test::{assert_ser_tokens, Token}; - - fn test_event() -> AbiEvent { - let i32_ty = AbiType::Int(32); - let u32_ty = AbiType::UInt(32); - let field1 = AbiEventField::new("x".into(), i32_ty, true); - let field2 = AbiEventField::new("y".into(), u32_ty, false); - - AbiEvent::new("MyEvent".into(), vec![field1, field2], false) - } - - #[test] - fn serialize_event() { - let event = test_event(); - - assert_ser_tokens( - &event, - &[ - Token::Struct { - name: "AbiEvent", - len: 4, - }, - Token::Str("type"), - Token::Str("event"), - Token::String("name"), - Token::String("MyEvent"), - Token::Str("inputs"), - Token::Seq { len: Some(2) }, - Token::Map { len: None }, - Token::String("name"), - Token::String("x"), - Token::String("type"), - Token::String("int32"), - Token::Str("indexed"), - Token::Bool(true), - Token::MapEnd, - Token::Map { len: None }, - Token::String("name"), - Token::String("y"), - Token::String("type"), - Token::String("uint32"), - Token::Str("indexed"), - Token::Bool(false), - Token::MapEnd, - Token::SeqEnd, - Token::Str("anonymous"), - Token::Bool(false), - Token::StructEnd, - ], - ) - } - - #[test] - fn event_signature() { - let event = test_event(); - - let sig = event.signature(); - debug_assert_eq!(sig.signature(), "MyEvent(int32,uint32)"); - debug_assert_eq!( - sig.hash_hex(), - "ec835d5150565cb216f72ba07d715e875b0738b1ac3f412e103839e5157b7ee6" - ); - } -} diff --git a/crates/abi/src/function.rs b/crates/abi/src/function.rs deleted file mode 100644 index d5d2e545be..0000000000 --- a/crates/abi/src/function.rs +++ /dev/null @@ -1,307 +0,0 @@ -use fe_common::utils::keccak; - -use serde::Serialize; - -use super::types::AbiType; - -/// The mutability of a public function. -#[derive(Serialize, Debug, PartialEq, Eq, Clone)] -#[serde(rename_all = "lowercase")] -pub enum StateMutability { - Pure, - View, - Nonpayable, - Payable, -} - -pub enum SelfParam { - None, - Imm, - Mut, -} -pub enum CtxParam { - None, - Imm, - Mut, -} - -impl StateMutability { - pub fn from_self_and_ctx_params(self_: SelfParam, ctx: CtxParam) -> Self { - // Check ABI conformity - // See https://github.com/ethereum/fe/issues/558 - // - // no self | self | mut self | - // ...................................... - // no ctx : pure | view | payable | - // ctx : view | view | payable | - // mut ctx : payable | payable | payable | - - match (self_, ctx) { - (SelfParam::None, CtxParam::None) => StateMutability::Pure, - (SelfParam::None, CtxParam::Imm) => StateMutability::View, - (SelfParam::None, CtxParam::Mut) => StateMutability::Payable, - (SelfParam::Imm, CtxParam::None) => StateMutability::View, - (SelfParam::Imm, CtxParam::Imm) => StateMutability::View, - (SelfParam::Imm, CtxParam::Mut) => StateMutability::Payable, - (SelfParam::Mut, _) => StateMutability::Payable, - } - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] -pub struct AbiFunction { - #[serde(rename = "type")] - func_type: AbiFunctionType, - name: String, - inputs: Vec, - outputs: Vec, - #[serde(rename = "stateMutability")] - state_mutability: StateMutability, -} - -impl AbiFunction { - pub fn new( - func_type: AbiFunctionType, - name: String, - args: Vec<(String, AbiType)>, - ret_ty: Option, - state_mutability: StateMutability, - ) -> Self { - let inputs = args - .into_iter() - .map(|(arg_name, arg_ty)| AbiFunctionParamInner::new(arg_name, arg_ty)) - .collect(); - let outputs = ret_ty.map_or_else(Vec::new, |ret_ty| { - vec![AbiFunctionParamInner::new("".into(), ret_ty)] - }); - - Self { - func_type, - name, - inputs, - outputs, - state_mutability, - } - } - - pub fn selector(&self) -> AbiFunctionSelector { - AbiFunctionSelector::new(self) - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)] -#[serde(rename_all = "lowercase")] -pub enum AbiFunctionType { - Function, - Constructor, - Receive, - Payable, - Fallback, -} - -pub struct AbiFunctionSelector { - selector_sig: String, -} - -impl AbiFunctionSelector { - fn new(func_sig: &AbiFunction) -> Self { - let selector_sig = format!( - "{}({})", - func_sig.name, - func_sig - .inputs - .iter() - .map(|param| param.ty.selector_type_name()) - .collect::>() - .join(",") - ); - - Self { selector_sig } - } - - pub fn selector_signature(&self) -> &str { - &self.selector_sig - } - - pub fn selector_raw(&self) -> [u8; 4] { - keccak::full_as_bytes(self.selector_sig.as_bytes())[..4] - .try_into() - .unwrap() - } - - /// Returns first 4 bytes of signature hash in hex. - pub fn hex(&self) -> String { - keccak::partial(self.selector_sig.as_bytes(), 4) - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] -struct AbiFunctionParamInner { - name: String, - #[serde(flatten)] - ty: AbiType, -} - -impl AbiFunctionParamInner { - fn new(name: String, ty: AbiType) -> Self { - Self { name, ty } - } -} - -#[cfg(test)] -mod tests { - use crate::types::AbiTupleField; - - use super::*; - use serde_test::{assert_ser_tokens, Token}; - - fn simple_tuple() -> AbiType { - let u16_ty = AbiType::UInt(16); - let bool_ty = AbiType::Bool; - let field1 = AbiTupleField::new("field1".into(), u16_ty); - let field2 = AbiTupleField::new("field2".into(), bool_ty); - - AbiType::Tuple(vec![field1, field2]) - } - - fn test_func(state_mutability: StateMutability) -> AbiFunction { - let i32_ty = AbiType::Int(32); - let tuple_ty = simple_tuple(); - let u64_ty = AbiType::UInt(64); - - AbiFunction::new( - AbiFunctionType::Function, - "test_func".into(), - vec![("arg1".into(), i32_ty), ("arg2".into(), tuple_ty)], - Some(u64_ty), - state_mutability, - ) - } - - #[test] - fn serialize_func() { - let func = test_func(StateMutability::Payable); - - assert_ser_tokens( - &func, - &[ - Token::Struct { - name: "AbiFunction", - len: 5, - }, - Token::Str("type"), - Token::UnitVariant { - name: "AbiFunctionType", - variant: "function", - }, - Token::String("name"), - Token::String("test_func"), - Token::Str("inputs"), - Token::Seq { len: Some(2) }, - Token::Map { len: None }, - Token::String("name"), - Token::String("arg1"), - Token::String("type"), - Token::String("int32"), - Token::MapEnd, - Token::Map { len: None }, - Token::String("name"), - Token::String("arg2"), - Token::String("type"), - Token::String("tuple"), - Token::String("components"), - Token::Seq { len: Some(2) }, - Token::Map { len: None }, - Token::String("name"), - Token::String("field1"), - Token::String("type"), - Token::String("uint16"), - Token::MapEnd, - Token::Map { len: None }, - Token::String("name"), - Token::String("field2"), - Token::String("type"), - Token::String("bool"), - Token::MapEnd, - Token::SeqEnd, - Token::MapEnd, - Token::SeqEnd, - Token::Str("outputs"), - Token::Seq { len: Some(1) }, - Token::Map { len: None }, - Token::String("name"), - Token::String(""), - Token::String("type"), - Token::String("uint64"), - Token::MapEnd, - Token::SeqEnd, - Token::Str("stateMutability"), - Token::UnitVariant { - name: "StateMutability", - variant: "payable", - }, - Token::StructEnd, - ], - ) - } - - #[test] - fn test_state_mutability() { - assert_eq!( - StateMutability::from_self_and_ctx_params(SelfParam::None, CtxParam::None), - StateMutability::Pure - ); - assert_eq!( - StateMutability::from_self_and_ctx_params(SelfParam::None, CtxParam::Imm), - StateMutability::View - ); - assert_eq!( - StateMutability::from_self_and_ctx_params(SelfParam::None, CtxParam::Mut), - StateMutability::Payable - ); - - assert_eq!( - StateMutability::from_self_and_ctx_params(SelfParam::Imm, CtxParam::None), - StateMutability::View - ); - assert_eq!( - StateMutability::from_self_and_ctx_params(SelfParam::Imm, CtxParam::Imm), - StateMutability::View - ); - assert_eq!( - StateMutability::from_self_and_ctx_params(SelfParam::Imm, CtxParam::Mut), - StateMutability::Payable - ); - - assert_eq!( - StateMutability::from_self_and_ctx_params(SelfParam::Mut, CtxParam::None), - StateMutability::Payable - ); - assert_eq!( - StateMutability::from_self_and_ctx_params(SelfParam::Mut, CtxParam::Imm), - StateMutability::Payable - ); - assert_eq!( - StateMutability::from_self_and_ctx_params(SelfParam::Mut, CtxParam::Mut), - StateMutability::Payable - ); - - let pure_func = test_func(StateMutability::Pure); - assert_eq!(pure_func.state_mutability, StateMutability::Pure); - - let impure_func = test_func(StateMutability::Payable); - assert_eq!(impure_func.state_mutability, StateMutability::Payable); - } - - #[test] - fn func_selector() { - let func = test_func(StateMutability::Payable); - let selector = func.selector(); - - debug_assert_eq!( - selector.selector_signature(), - "test_func(int32,(uint16,bool))" - ); - debug_assert_eq!(selector.hex(), "79c3c8b2"); - } -} diff --git a/crates/abi/src/lib.rs b/crates/abi/src/lib.rs deleted file mode 100644 index 7860aec9c2..0000000000 --- a/crates/abi/src/lib.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod contract; -pub mod event; -pub mod function; -pub mod types; diff --git a/crates/abi/src/types.rs b/crates/abi/src/types.rs deleted file mode 100644 index 94bc60444c..0000000000 --- a/crates/abi/src/types.rs +++ /dev/null @@ -1,374 +0,0 @@ -use serde::{ser::SerializeMap, Serialize, Serializer}; - -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum AbiType { - UInt(usize), - Int(usize), - Address, - Bool, - Function, - Array { elem_ty: Box, len: usize }, - Tuple(Vec), - Bytes, - String, -} - -impl AbiType { - pub fn selector_type_name(&self) -> String { - match self { - Self::UInt(bits) => format!("uint{bits}"), - Self::Int(bits) => format!("int{bits}"), - Self::Address => "address".to_string(), - Self::Bool => "bool".to_string(), - Self::Function => "function".to_string(), - Self::Array { elem_ty, len } => { - if elem_ty.as_ref() == &AbiType::UInt(8) { - "bytes".to_string() - } else { - format!("{}[{}]", elem_ty.selector_type_name(), len) - } - } - Self::Tuple(elems) => format!( - "({})", - elems - .iter() - .map(|component| component.ty.selector_type_name()) - .collect::>() - .join(",") - ), - - Self::Bytes => "bytes".to_string(), - Self::String => "string".to_string(), - } - } - - pub fn abi_type_name(&self) -> String { - match self { - Self::Tuple(_) => "tuple".to_string(), - Self::Array { elem_ty, len } => { - if elem_ty.as_ref() == &AbiType::UInt(8) { - "bytes".to_string() - } else { - format!("{}[{}]", elem_ty.abi_type_name(), len) - } - } - _ => self.selector_type_name(), - } - } - - pub fn header_size(&self) -> usize { - match self { - Self::UInt(_) | Self::Int(_) | Self::Address | Self::Bool | Self::Function => 32, - - Self::Array { elem_ty, len } if elem_ty.is_static() => elem_ty.header_size() * len, - Self::Array { .. } => 32, - - Self::Tuple(fields) if self.is_static() => fields - .iter() - .fold(0, |acc, field| field.ty.header_size() + acc), - Self::Tuple(_) => 32, - - Self::Bytes | Self::String => 32, - } - } - - pub fn is_primitive(&self) -> bool { - matches! { - self, - Self::UInt(_) | Self::Int(_) | Self::Address | Self::Bool - } - } - - pub fn is_bytes(&self) -> bool { - matches! { - self, - Self::Bytes, - } - } - - pub fn is_string(&self) -> bool { - matches! { - self, - Self::String - } - } - - pub fn is_static(&self) -> bool { - match self { - Self::UInt(_) | Self::Int(_) | Self::Address | Self::Bool | Self::Function => true, - Self::Array { elem_ty, .. } => elem_ty.is_static(), - Self::Tuple(fields) => fields.iter().all(|field| field.ty.is_static()), - Self::Bytes | Self::String => false, - } - } - - /// Returns bytes size of the encoded type if the type is static. - pub fn size(&self) -> Option { - match self { - Self::UInt(_) | Self::Int(_) | Self::Address | Self::Bool => Some(32), - Self::Function => Some(24), - Self::Array { elem_ty, len } => Some(elem_ty.size()? * len), - Self::Tuple(fields) => { - let mut size = 0; - for field in fields.iter() { - size += field.ty.size()?; - } - Some(size) - } - - Self::Bytes | Self::String => None, - } - } - - fn serialize_component(&self, s: &mut S) -> Result<(), S::Error> { - match self { - Self::Tuple(entry) => s.serialize_entry("components", entry), - Self::Array { elem_ty, .. } => elem_ty.serialize_component(s), - _ => Ok(()), - } - } -} - -impl Serialize for AbiType { - fn serialize(&self, s: S) -> Result { - let mut map = s.serialize_map(None)?; - let type_name = self.abi_type_name(); - - map.serialize_entry("type", &type_name)?; - - self.serialize_component(&mut map)?; - map.end() - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] -pub struct AbiTupleField { - pub name: String, - #[serde(flatten)] - pub ty: AbiType, -} - -impl AbiTupleField { - pub fn new(name: String, ty: impl Into) -> Self { - Self { - name, - ty: ty.into(), - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - - use serde_test::{assert_ser_tokens, Token}; - - #[test] - fn primitive() { - let u32_ty = AbiType::UInt(32); - assert_ser_tokens( - &u32_ty, - &[ - Token::Map { len: None }, - Token::String("type"), - Token::String("uint32"), - Token::MapEnd, - ], - ) - } - - #[test] - fn primitive_array() { - let i32_ty = AbiType::Int(32); - let array_i32 = AbiType::Array { - elem_ty: i32_ty.into(), - len: 10, - }; - - assert_ser_tokens( - &array_i32, - &[ - Token::Map { len: None }, - Token::String("type"), - Token::String("int32[10]"), - Token::MapEnd, - ], - ) - } - - #[test] - fn tuple_array() { - let u16_ty = AbiType::UInt(16); - let bool_ty = AbiType::Bool; - let array_bool = AbiType::Array { - elem_ty: bool_ty.into(), - len: 16, - }; - - let field1 = AbiTupleField::new("field1".into(), u16_ty); - let field2 = AbiTupleField::new("field2".into(), array_bool); - let tuple_ty = AbiType::Tuple(vec![field1, field2]); - - let tuple_array_ty = AbiType::Array { - elem_ty: tuple_ty.into(), - len: 16, - }; - - assert_ser_tokens( - &tuple_array_ty, - &[ - Token::Map { len: None }, - Token::String("type"), - Token::String("tuple[16]"), - Token::String("components"), - Token::Seq { len: Some(2) }, - // Field1. - Token::Map { len: None }, - Token::String("name"), - Token::String("field1"), - Token::String("type"), - Token::String("uint16"), - Token::MapEnd, - // Field2. - Token::Map { len: None }, - Token::String("name"), - Token::String("field2"), - Token::String("type"), - Token::String("bool[16]"), - Token::MapEnd, - Token::SeqEnd, - Token::MapEnd, - ], - ) - } - - #[test] - fn simple_tuple() { - let u16_ty = AbiType::UInt(16); - let bool_ty = AbiType::Bool; - let bool_array_ty = AbiType::Array { - elem_ty: bool_ty.into(), - len: 16, - }; - - let field1 = AbiTupleField::new("field1".into(), u16_ty); - let field2 = AbiTupleField::new("field2".into(), bool_array_ty); - let tuple_ty = AbiType::Tuple(vec![field1, field2]); - - assert_ser_tokens( - &tuple_ty, - &[ - Token::Map { len: None }, - Token::String("type"), - Token::String("tuple"), - Token::String("components"), - Token::Seq { len: Some(2) }, - // Field1. - Token::Map { len: None }, - Token::String("name"), - Token::String("field1"), - Token::String("type"), - Token::String("uint16"), - Token::MapEnd, - // Field2. - Token::Map { len: None }, - Token::String("name"), - Token::String("field2"), - Token::String("type"), - Token::String("bool[16]"), - Token::MapEnd, - Token::SeqEnd, - Token::MapEnd, - ], - ) - } - - #[test] - fn complex_tuple() { - let u16_ty = AbiType::UInt(16); - let bool_ty = AbiType::Bool; - - let inner_field1 = AbiTupleField::new("inner_field1".into(), u16_ty); - let inner_field2 = AbiTupleField::new("inner_field2".into(), bool_ty); - let inner_tuple_ty = AbiType::Tuple(vec![inner_field1, inner_field2]); - - let inner_tuple_array_ty = AbiType::Array { - elem_ty: inner_tuple_ty.clone().into(), - len: 16, - }; - - let outer_field1 = AbiTupleField::new("outer_field1".into(), inner_tuple_array_ty); - let outer_field2 = AbiTupleField::new("outer_field2".into(), inner_tuple_ty); - let outer_tuple_ty = AbiType::Tuple(vec![outer_field1, outer_field2]); - - assert_ser_tokens( - &outer_tuple_ty, - &[ - // Outer tuple start. - Token::Map { len: None }, - Token::String("type"), - Token::String("tuple"), - // Outer tuple components start. - Token::String("components"), - Token::Seq { len: Some(2) }, - // Outer field1 start. - Token::Map { len: None }, - Token::String("name"), - Token::String("outer_field1"), - Token::String("type"), - Token::String("tuple[16]"), - Token::String("components"), - Token::Seq { len: Some(2) }, - // Inner field1 start. - Token::Map { len: None }, - Token::String("name"), - Token::String("inner_field1"), - Token::String("type"), - Token::String("uint16"), - Token::MapEnd, - // Inner field1 end. - // Inner field2 start. - Token::Map { len: None }, - Token::String("name"), - Token::String("inner_field2"), - Token::String("type"), - Token::String("bool"), - Token::MapEnd, - // Inner field2 end. - Token::SeqEnd, - Token::MapEnd, - // Outer field1 end. - // Outer field2 start. - Token::Map { len: None }, - Token::String("name"), - Token::String("outer_field2"), - Token::String("type"), - Token::String("tuple"), - Token::String("components"), - Token::Seq { len: Some(2) }, - // Inner field1 start. - Token::Map { len: None }, - Token::String("name"), - Token::String("inner_field1"), - Token::String("type"), - Token::String("uint16"), - Token::MapEnd, - // Inner field1 end. - // Inner field2 start. - Token::Map { len: None }, - Token::String("name"), - Token::String("inner_field2"), - Token::String("type"), - Token::String("bool"), - Token::MapEnd, - // Inner field2 end. - Token::SeqEnd, - Token::MapEnd, - // Outer field2 end. - Token::SeqEnd, - // Outer tuple components end. - Token::MapEnd, - ], - ) - } -} diff --git a/crates/analyzer/Cargo.toml b/crates/analyzer/Cargo.toml deleted file mode 100644 index 12ab3eea8f..0000000000 --- a/crates/analyzer/Cargo.toml +++ /dev/null @@ -1,39 +0,0 @@ -[package] -name = "fe-analyzer" -version = "0.26.0" -authors = ["The Fe Developers "] -edition = "2021" -license = "Apache-2.0" -repository = "https://github.com/ethereum/fe" - -[dependencies] - -fe-common = {path = "../common", version = "^0.26.0"} -fe-parser = {path = "../parser", version = "^0.26.0"} -fe-library = {path = "../library", version = "^0.26.0"} -hex = "0.4" -num-bigint = "0.4.3" -num-traits = "0.2.14" -strum = { version = "0.23.0", features = ["derive"] } -semver = "1.0.0" -salsa = "0.16.1" -parking_lot_core = { version = "=0.8.0" } # used by salsa; version pinned for wasm compatibility -indexmap = "1.6.2" -if_chain = "1.0.1" -smallvec = { version = "1.6.1", features = ["union"] } -petgraph = "0.6.0" -smol_str = "0.1.21" - -[dev-dependencies] -insta = { default-features = false, version = "1.7.1" } -rstest = "0.6.4" -test-files = {path = "../test-files", package = "fe-test-files" } -tests = {path = "../tests", package = "fe-compiler-tests" } -fe-library = {path = "../library"} -wasm-bindgen-test = "0.3" -pretty_assertions = "1.0.0" -criterion = "0.3.5" - -[[bench]] -name = "bench" -harness = false diff --git a/crates/analyzer/benches/bench.rs b/crates/analyzer/benches/bench.rs deleted file mode 100644 index b9403a89a9..0000000000 --- a/crates/analyzer/benches/bench.rs +++ /dev/null @@ -1,24 +0,0 @@ -use criterion::{criterion_group, criterion_main, BatchSize, Criterion}; -use fe_analyzer::namespace::items::ModuleId; -use fe_analyzer::TestDb; - -fn criterion_benchmark(c: &mut Criterion) { - let path = "demos/uniswap.fe"; - let src = test_files::fixture(path); - - c.bench_function("analyze uniswap", |b| { - b.iter_batched( - || { - let mut db = TestDb::default(); - let module = ModuleId::new_standalone(&mut db, path, src); - let _ = module.ast(&db); // parse before the timer starts - (db, module) - }, - |(db, module_id)| fe_analyzer::analyze_module(&db, module_id), - BatchSize::SmallInput, - ) - }); -} - -criterion_group!(benches, criterion_benchmark); -criterion_main!(benches); diff --git a/crates/analyzer/src/builtins.rs b/crates/analyzer/src/builtins.rs deleted file mode 100644 index 974eb447ab..0000000000 --- a/crates/analyzer/src/builtins.rs +++ /dev/null @@ -1,154 +0,0 @@ -use crate::namespace::types::Base; -use strum::{AsRefStr, EnumIter, EnumString}; - -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, EnumString, AsRefStr)] -#[strum(serialize_all = "snake_case")] -pub enum ValueMethod { - ToMem, - AbiEncode, -} - -#[derive( - Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, EnumString, AsRefStr, EnumIter, -)] -#[strum(serialize_all = "snake_case")] -pub enum GlobalFunction { - Keccak256, -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq, EnumString, AsRefStr)] -#[strum(serialize_all = "snake_case")] -pub enum ContractTypeMethod { - Create, - Create2, -} - -impl ContractTypeMethod { - pub fn arg_count(&self) -> usize { - match self { - ContractTypeMethod::Create => 2, - ContractTypeMethod::Create2 => 3, - } - } -} - -/// The evm functions exposed by yul. -#[allow(non_camel_case_types)] -#[derive( - Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, EnumString, AsRefStr, EnumIter, -)] -pub enum Intrinsic { - __stop, // () -> () - __add, // (x, y) - __sub, // (x, y) - __mul, // (x, y) - __div, // (x, y) - __sdiv, // (x, y) - __mod, // (x, y) - __smod, // (x, y) - __exp, // (x, y) - __not, // (x) - __lt, // (x, y) - __gt, // (x, y) - __slt, // (x, y) - __sgt, // (x, y) - __eq, // (x, y) - __iszero, // (x) - __and, // (x, y) - __or, // (x, y) - __xor, // (x, y) - __byte, // (n, x) - __shl, // (x, y) - __shr, // (x, y) - __sar, // (x, y) - __addmod, // (x, y, m) - __mulmod, // (x, y, m) - __signextend, // (i, x) - __keccak256, // (p, n) - __pc, // () - __pop, // (x) -> () - __mload, // (p) - __mstore, // (p, v) -> () - __mstore8, // (p, v) -> () - __sload, // (p) - __sstore, // (p, v) -> () - __msize, // () - __gas, // () - __address, // () - __balance, // (a) - __selfbalance, // () - __caller, // () - __callvalue, // () - __calldataload, // (p) - __calldatasize, // () - __calldatacopy, // (t, f, s) -> () - __codesize, // () - __codecopy, // (t, f, s) -> () - __extcodesize, // (a) - __extcodecopy, // (a, t, f, s) -> () - __returndatasize, // () - __returndatacopy, // (t, f, s) -> () - __extcodehash, // (a) - __create, // (v, p, n) - __create2, // (v, p, n, s) - __call, // (g, a, v, in, insize, out, outsize) - __callcode, // (g, a, v, in, insize, out, outsize) - __delegatecall, // (g, a, in, insize, out, outsize) - __staticcall, // (g, a, in, insize, out, outsize) - __return, // (p, s) -> () - __revert, // (p, s) -> () - __selfdestruct, // (a) -> () - __invalid, // () -> () - __log0, // (p, s) -> () - __log1, // (p, s, t1) -> () - __log2, // (p, s, t1, t2) -> () - __log3, // (p, s, t1, t2, t3) -> () - __log4, // (p, s, t1, t2, t3, t4) -> () - __chainid, // () - __basefee, // () - __origin, // () - __gasprice, // () - __blockhash, // (b) - __coinbase, // () - __timestamp, // () - __number, // () - __prevrandao, // () - __gaslimit, // () -} - -impl Intrinsic { - pub fn arg_count(&self) -> usize { - use Intrinsic::*; - match self { - __stop | __basefee | __origin | __gasprice | __coinbase | __timestamp | __number - | __prevrandao | __gaslimit | __pc | __msize | __gas | __address | __selfbalance - | __caller | __callvalue | __calldatasize | __codesize | __returndatasize - | __invalid | __chainid => 0, - - __not | __iszero | __pop | __mload | __balance | __sload | __calldataload - | __extcodesize | __extcodehash | __selfdestruct | __blockhash => 1, - - __add | __sub | __mul | __div | __sdiv | __mod | __smod | __exp | __lt | __gt - | __slt | __sgt | __eq | __and | __or | __xor | __byte | __shl | __shr | __sar - | __signextend | __keccak256 | __mstore | __mstore8 | __sstore | __return - | __revert | __log0 => 2, - - __addmod | __mulmod | __calldatacopy | __codecopy | __returndatacopy | __create - | __log1 => 3, - __extcodecopy | __create2 | __log2 => 4, - __log3 => 5, - __delegatecall | __staticcall | __log4 => 6, - __call | __callcode => 7, - } - } - - pub fn return_type(&self) -> Base { - use Intrinsic::*; - match self { - __stop | __pop | __mstore | __mstore8 | __sstore | __calldatacopy | __codecopy - | __extcodecopy | __returndatacopy | __return | __revert | __selfdestruct - | __invalid | __log0 | __log1 | __log2 | __log3 | __log4 => Base::Unit, - _ => Base::u256(), - } - } -} diff --git a/crates/analyzer/src/constants.rs b/crates/analyzer/src/constants.rs deleted file mode 100644 index 25f75d0d3b..0000000000 --- a/crates/analyzer/src/constants.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub const EMITTABLE_TRAIT_NAME: &str = "Emittable"; -pub const EMIT_FN_NAME: &str = "emit"; -pub const INDEXED: &str = "indexed"; -pub const MAX_INDEXED_EVENT_FIELDS: usize = 3; diff --git a/crates/analyzer/src/context.rs b/crates/analyzer/src/context.rs deleted file mode 100644 index 180b741cce..0000000000 --- a/crates/analyzer/src/context.rs +++ /dev/null @@ -1,595 +0,0 @@ -use crate::{ - display::Displayable, - errors::FatalError, - namespace::items::{EnumVariantId, TypeDef}, - pattern_analysis::PatternMatrix, -}; - -use crate::namespace::items::{ - ContractId, DiagnosticSink, FunctionId, FunctionSigId, Item, TraitId, -}; -use crate::namespace::types::{Generic, SelfDecl, Type, TypeId}; -use crate::AnalyzerDb; -use crate::{ - builtins::{ContractTypeMethod, GlobalFunction, Intrinsic, ValueMethod}, - namespace::scopes::BlockScopeType, -}; -use crate::{ - errors::{self, IncompleteItem, TypeError}, - namespace::items::ModuleId, -}; -use fe_common::diagnostics::Diagnostic; -pub use fe_common::diagnostics::Label; -use fe_common::Span; -use fe_parser::ast; -use fe_parser::node::{Node, NodeId}; - -use indexmap::IndexMap; -use num_bigint::BigInt; -use smol_str::SmolStr; -use std::fmt::{self, Debug}; -use std::hash::Hash; -use std::marker::PhantomData; -use std::rc::Rc; -use std::{cell::RefCell, collections::HashMap}; - -#[derive(Debug, PartialEq, Eq, Hash, Clone)] -pub struct Analysis { - pub value: T, - pub diagnostics: Rc<[Diagnostic]>, -} -impl Analysis { - pub fn new(value: T, diagnostics: Rc<[Diagnostic]>) -> Self { - Self { value, diagnostics } - } - pub fn sink_diagnostics(&self, sink: &mut impl DiagnosticSink) { - self.diagnostics.iter().for_each(|diag| sink.push(diag)) - } - pub fn has_diag(&self) -> bool { - !self.diagnostics.is_empty() - } -} - -pub trait AnalyzerContext { - fn resolve_name(&self, name: &str, span: Span) -> Result, IncompleteItem>; - /// Resolves the given path and registers all errors - fn resolve_path(&self, path: &ast::Path, span: Span) -> Result; - /// Resolves the given path only if it is visible. Does not register any errors - fn resolve_visible_path(&self, path: &ast::Path) -> Option; - /// Resolves the given path. Does not register any errors - fn resolve_any_path(&self, path: &ast::Path) -> Option; - - fn add_diagnostic(&self, diag: Diagnostic); - fn db(&self) -> &dyn AnalyzerDb; - - fn error(&self, message: &str, label_span: Span, label: &str) -> DiagnosticVoucher { - self.register_diag(errors::error(message, label_span, label)) - } - - /// Attribute contextual information to an expression node. - /// - /// # Panics - /// - /// Panics if an entry already exists for the node id. - fn add_expression(&self, node: &Node, attributes: ExpressionAttributes); - - /// Update the expression attributes. - /// - /// # Panics - /// - /// Panics if an entry does not already exist for the node id. - fn update_expression(&self, node: &Node, f: &dyn Fn(&mut ExpressionAttributes)); - - /// Returns a type of an expression. - /// - /// # Panics - /// - /// Panics if type analysis is not performed for an `expr`. - fn expr_typ(&self, expr: &Node) -> Type; - - /// Add evaluated constant value in a constant declaration to the context. - fn add_constant(&self, name: &Node, expr: &Node, value: Constant); - - /// Returns constant value from variable name. - fn constant_value_by_name( - &self, - name: &ast::SmolStr, - span: Span, - ) -> Result, IncompleteItem>; - - /// Returns an item enclosing current context. - /// - /// # Example - /// - /// ```fe - /// contract Foo: - /// fn foo(): - /// if ...: - /// ... - /// else: - /// ... - /// ``` - /// If the context is in `then` block, then this function returns - /// `Item::Function(..)`. - fn parent(&self) -> Item; - - /// Returns the module enclosing current context. - fn module(&self) -> ModuleId; - - /// Returns a function id that encloses a context. - /// - /// # Panics - /// - /// Panics if a context is not in a function. Use [`Self::is_in_function`] - /// to determine whether a context is in a function. - fn parent_function(&self) -> FunctionId; - - /// Returns a non-function item that encloses a context. - /// - /// # Example - /// - /// ```fe - /// contract Foo: - /// fn foo(): - /// if ...: - /// ... - /// else: - /// ... - /// ``` - /// If the context is in `then` block, then this function returns - /// `Item::Type(TypeDef::Contract(..))`. - fn root_item(&self) -> Item { - let mut item = self.parent(); - while let Item::Function(func_id) = item { - item = func_id.parent(self.db()); - } - item - } - - /// # Panics - /// - /// Panics if a context is not in a function. Use [`Self::is_in_function`] - /// to determine whether a context is in a function. - fn add_call(&self, node: &Node, call_type: CallType); - fn get_call(&self, node: &Node) -> Option; - - /// Returns `true` if the context is in function scope. - fn is_in_function(&self) -> bool; - - /// Returns `true` if the scope or any of its parents is of the given type. - fn inherits_type(&self, typ: BlockScopeType) -> bool; - - /// Returns the `Context` type, if it is defined. - fn get_context_type(&self) -> Option; - - fn type_error( - &self, - message: &str, - span: Span, - expected: TypeId, - actual: TypeId, - ) -> DiagnosticVoucher { - self.register_diag(errors::type_error( - message, - span, - expected.display(self.db()), - actual.display(self.db()), - )) - } - - fn not_yet_implemented(&self, feature: &str, span: Span) -> DiagnosticVoucher { - self.register_diag(errors::not_yet_implemented(feature, span)) - } - - fn fancy_error( - &self, - message: &str, - labels: Vec