fix(rust): silence dead_code warnings on BN254/Fiat-Shamir port scaff… #280
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| jobs: | |
| # --------------------------------------------------------------------------- | |
| # Compilers — build, unit test, upload artifacts | |
| # --------------------------------------------------------------------------- | |
| ts-compiler: | |
| name: TypeScript Compiler | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.24' | |
| cache-dependency-path: compilers/go/go.sum | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Build Rust compiler (for cross-compiler tests) | |
| run: cd compilers/rust && cargo build --release | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm run build | |
| - run: pnpm run test | |
| - name: Example tests (TS + Sol + Move) | |
| run: npx vitest run examples/ts/ examples/sol/ examples/move/ | |
| - run: pnpm run typecheck | |
| go-compiler: | |
| name: Go Compiler | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.24' | |
| cache-dependency-path: compilers/go/go.sum | |
| - run: cd compilers/go && go build ./... | |
| - run: cd compilers/go && go build -o runar-go . | |
| - run: cd compilers/go && go test -race -v ./... | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: runar-go | |
| path: compilers/go/runar-go | |
| rust-compiler: | |
| name: Rust Compiler | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - run: cd compilers/rust && cargo build --release | |
| - run: cd compilers/rust && cargo test | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: runar-rust | |
| path: compilers/rust/target/release/runar-compiler-rust | |
| python-compiler: | |
| name: Python Compiler | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - run: pip install pytest | |
| - run: cd compilers/python && python -m pytest tests/ -v | |
| zig-compiler: | |
| name: Zig Compiler | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: mlugg/setup-zig@v2 | |
| with: | |
| version: 0.15.0 | |
| - run: cd compilers/zig && zig build test | |
| - name: Zig conformance tests | |
| run: cd compilers/zig && zig build conformance | |
| - name: Build release binary | |
| run: cd compilers/zig && zig build -Doptimize=ReleaseFast | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: runar-zig | |
| path: compilers/zig/zig-out/bin/runar-zig | |
| ruby-compiler: | |
| name: Ruby Compiler | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.3' | |
| - name: Ruby compiler conformance (IR → hex) | |
| run: | | |
| fail=0 | |
| for test in conformance/tests/*/expected-ir.json; do | |
| dir=$(dirname "$test") | |
| name=$(basename "$dir") | |
| expected=$(tr -d '[:space:]' < "$dir/expected-script.hex" | tr '[:upper:]' '[:lower:]') | |
| actual=$(ruby compilers/ruby/bin/runar-compiler-ruby --ir "$test" --hex --disable-constant-folding 2>&1 | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]') | |
| if [ "$expected" = "$actual" ]; then | |
| echo "PASS $name" | |
| else | |
| echo "FAIL $name" | |
| fail=1 | |
| fi | |
| done | |
| exit $fail | |
| - name: Ruby compiler source conformance (.runar.ts → hex) | |
| run: | | |
| fail=0 | |
| for dir in conformance/tests/*/; do | |
| name=$(basename "$dir") | |
| ts_file="$dir/$name.runar.ts" | |
| [ -f "$ts_file" ] || continue | |
| expected=$(tr -d '[:space:]' < "$dir/expected-script.hex" | tr '[:upper:]' '[:lower:]') | |
| actual=$(ruby compilers/ruby/bin/runar-compiler-ruby --source "$ts_file" --hex --disable-constant-folding 2>&1 | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]') | |
| if [ "$expected" = "$actual" ]; then | |
| echo "PASS $name (.runar.ts)" | |
| else | |
| echo "FAIL $name (.runar.ts)" | |
| fail=1 | |
| fi | |
| done | |
| exit $fail | |
| - name: Ruby compiler source conformance (.runar.rb → hex) | |
| run: | | |
| fail=0 | |
| for dir in conformance/tests/*/; do | |
| name=$(basename "$dir") | |
| rb_file=$(find "$dir" -name "*.runar.rb" | head -1) | |
| [ -n "$rb_file" ] || continue | |
| expected=$(tr -d '[:space:]' < "$dir/expected-script.hex" | tr '[:upper:]' '[:lower:]') | |
| actual=$(ruby compilers/ruby/bin/runar-compiler-ruby --source "$rb_file" --hex --disable-constant-folding 2>&1 | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]') | |
| if [ "$expected" = "$actual" ]; then | |
| echo "PASS $name (.runar.rb)" | |
| else | |
| echo "FAIL $name (.runar.rb)" | |
| fail=1 | |
| fi | |
| done | |
| exit $fail | |
| # --------------------------------------------------------------------------- | |
| # SDKs — package tests + example tests | |
| # --------------------------------------------------------------------------- | |
| go-sdk: | |
| name: Go SDK | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.24' | |
| cache-dependency-path: packages/runar-go/go.sum | |
| - name: SDK tests | |
| run: cd packages/runar-go && go test ./... | |
| - name: Example tests | |
| run: cd examples/go && go test ./... | |
| rust-sdk: | |
| name: Rust SDK | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: SDK tests | |
| run: cd packages/runar-rs && cargo test | |
| - name: Example tests | |
| run: cd examples/rust && cargo test | |
| python-sdk: | |
| name: Python SDK | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - run: pip install pytest | |
| - name: SDK tests | |
| run: cd packages/runar-py && python -m pytest | |
| - name: Example tests | |
| run: cd examples/python && PYTHONPATH=../../packages/runar-py python -m pytest | |
| zig-sdk: | |
| name: Zig SDK | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: mlugg/setup-zig@v2 | |
| with: | |
| version: 0.15.0 | |
| - name: SDK tests | |
| run: cd packages/runar-zig && zig build test | |
| - name: Example tests | |
| run: cd examples/zig && zig build test | |
| ruby-sdk: | |
| name: Ruby SDK | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.3' | |
| bundler-cache: true | |
| working-directory: packages/runar-rb | |
| - name: SDK tests | |
| run: cd packages/runar-rb && bundle exec rspec | |
| - name: Example tests | |
| run: | | |
| cd examples/ruby | |
| bundle install | |
| bundle exec rspec **/*_spec.rb | |
| # --------------------------------------------------------------------------- | |
| # Conformance — cross-compiler + SDK output | |
| # --------------------------------------------------------------------------- | |
| conformance: | |
| name: Conformance Tests | |
| needs: [ts-compiler, go-compiler, rust-compiler, python-compiler, zig-compiler, ruby-compiler] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: runar-go | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: runar-rust | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: runar-zig | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.3' | |
| - run: chmod +x runar-go runar-compiler-rust runar-zig | |
| - name: Run conformance tests | |
| run: | | |
| fail=0 | |
| for test in conformance/tests/*/expected-ir.json; do | |
| dir=$(dirname "$test") | |
| name=$(basename "$dir") | |
| echo -n "=== $name === " | |
| go_hex=$(./runar-go --ir "$test" --hex) | |
| rust_hex=$(./runar-compiler-rust --ir "$test" --hex) | |
| zig_hex=$(./runar-zig compile-ir "$test" --hex 2>/dev/null | head -1 | tr -d '[:space:]') | |
| ruby_hex=$(ruby compilers/ruby/bin/runar-compiler-ruby --ir "$test" --hex --disable-constant-folding 2>/dev/null | tr -d '[:space:]') | |
| python_hex=$(cd compilers/python && python3 -m runar_compiler --ir "../$test" --hex --disable-constant-folding 2>/dev/null | tr -d '[:space:]') | |
| if [ "$go_hex" != "$rust_hex" ]; then | |
| echo "MISMATCH Go vs Rust" | |
| fail=1 | |
| elif [ -n "$zig_hex" ] && [ "$go_hex" != "$zig_hex" ]; then | |
| echo "MISMATCH Go vs Zig" | |
| fail=1 | |
| elif [ -n "$ruby_hex" ] && [ "$go_hex" != "$ruby_hex" ]; then | |
| echo "MISMATCH Go vs Ruby" | |
| fail=1 | |
| elif [ -n "$python_hex" ] && [ "$go_hex" != "$python_hex" ]; then | |
| echo "MISMATCH Go vs Python" | |
| fail=1 | |
| else | |
| echo "OK (${#go_hex} hex chars)" | |
| fi | |
| expected_hex_file="${test%/*}/expected-script.hex" | |
| if [ -f "$expected_hex_file" ]; then | |
| expected_hex=$(tr -d '[:space:]' < "$expected_hex_file") | |
| if [ -n "$expected_hex" ] && [ "$go_hex" != "$expected_hex" ]; then | |
| echo "FAIL: $name — Go output does not match golden file" | |
| echo " Go: $go_hex" | |
| echo " Expected: $expected_hex" | |
| fail=1 | |
| fi | |
| fi | |
| done | |
| exit $fail | |
| - name: Ruby format conformance (source → hex) | |
| run: | | |
| fail=0 | |
| for dir in conformance/tests/*/; do | |
| name=$(basename "$dir") | |
| rb_file="$dir/$name.runar.rb" | |
| [ -f "$rb_file" ] || continue | |
| expected_file="$dir/expected-script.hex" | |
| [ -f "$expected_file" ] || continue | |
| expected=$(tr -d '[:space:]' < "$expected_file" | tr '[:upper:]' '[:lower:]') | |
| go_hex=$(./runar-go --source "$rb_file" --hex --disable-constant-folding 2>/dev/null | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]') | |
| rust_hex=$(./runar-compiler-rust --source "$rb_file" --hex --disable-constant-folding 2>/dev/null | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]') | |
| if [ "$go_hex" != "$rust_hex" ]; then | |
| echo "MISMATCH $name: Go vs Rust differ" | |
| fail=1 | |
| elif [ "$go_hex" != "$expected" ]; then | |
| echo "MISMATCH $name: output differs from golden file" | |
| fail=1 | |
| else | |
| echo "OK $name (.runar.rb)" | |
| fi | |
| done | |
| exit $fail | |
| sdk-conformance: | |
| name: SDK Output Conformance | |
| needs: [ts-compiler, go-sdk, rust-sdk, python-sdk, zig-sdk, ruby-sdk] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.24' | |
| cache-dependency-path: packages/runar-go/go.sum | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.3' | |
| bundler-cache: true | |
| working-directory: packages/runar-rb | |
| - uses: mlugg/setup-zig@v2 | |
| with: | |
| version: 0.15.0 | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm run build | |
| - name: Build Rust SDK tool | |
| run: cd conformance/sdk-output/tools/rs-sdk-tool && cargo build --release | |
| - name: Build Zig SDK tool | |
| run: cd conformance/sdk-output/tools/zig-sdk-tool && zig build -Doptimize=ReleaseFast | |
| - name: Run SDK output conformance (39 contracts x 6 SDKs) | |
| run: cd conformance/sdk-output && npx tsx runner/sdk-runner.ts | |
| # --------------------------------------------------------------------------- | |
| # Integration — regtest node tests | |
| # --------------------------------------------------------------------------- | |
| integration: | |
| name: Integration Tests | |
| needs: | |
| - ts-compiler | |
| - go-compiler | |
| - rust-compiler | |
| - python-compiler | |
| - zig-compiler | |
| - zig-sdk | |
| - ruby-compiler | |
| - ruby-sdk | |
| runs-on: ubuntu-latest | |
| env: | |
| RPC_URL: http://localhost:18332 | |
| RPC_USER: regtest | |
| RPC_PASS: regtest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: pnpm/action-setup@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.24' | |
| cache-dependency-path: compilers/go/go.sum | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - run: pip install pytest bsv-sdk | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.3' | |
| bundler-cache: true | |
| working-directory: integration/ruby | |
| - uses: mlugg/setup-zig@v2 | |
| with: | |
| version: 0.15.0 | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm run build | |
| - name: Pre-create regtest node config with test credentials | |
| run: | | |
| mkdir -p integration/regtest-data/n1 | |
| printf '%s\n' \ | |
| 'port=18333' 'rpcbind=0.0.0.0' 'rpcport=18332' \ | |
| 'rpcuser=regtest' 'rpcpassword=regtest' 'rpcallowip=0.0.0.0/0' \ | |
| 'dnsseed=0' 'listenonion=0' 'listen=1' 'server=1' 'rest=1' 'regtest=1' \ | |
| 'usecashaddr=0' 'txindex=1' 'excessiveblocksize=1000000000' \ | |
| 'maxstackmemoryusageconsensus=100000000' 'maxscriptsizepolicy=0' \ | |
| 'maxscriptnumlengthpolicy=0' 'maxstackmemoryusagepolicy=100000000' \ | |
| 'maxtxsizepolicy=0' 'genesisactivationheight=1' 'minminingtxfee=0.00000001' \ | |
| > integration/regtest-data/n1/bitcoin.conf | |
| - name: Start BSV regtest node | |
| run: cd integration && ./regtest.sh start | |
| - name: Go integration tests | |
| run: cd integration/go && go test -tags integration -v -timeout 600s | |
| - name: TypeScript integration tests | |
| run: cd integration/ts && npx vitest run | |
| - name: Rust integration tests | |
| run: cd integration/rust && cargo test --release -- --ignored | |
| timeout-minutes: 10 | |
| - name: Python integration tests | |
| run: cd integration/python && PYTHONPATH=../../compilers/python:../../packages/runar-py pytest -v | |
| - name: Ruby integration tests | |
| run: cd integration/ruby && bundle exec rspec --format documentation | |
| - name: Zig integration tests | |
| run: cd integration/zig && zig build test | |
| timeout-minutes: 5 | |
| - name: Ruby end-to-end example tests | |
| run: | | |
| cd end2end-example/ruby | |
| bundle install | |
| bundle exec rspec price_bet_spec.rb --format documentation | |
| - name: Stop regtest node | |
| if: always() | |
| run: cd integration && ./regtest.sh stop |