diff --git a/.github/workflows/box_first_guard.yml b/.github/workflows/box_first_guard.yml deleted file mode 100644 index fe683431..00000000 --- a/.github/workflows/box_first_guard.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: Box-First Guard (Advisory) - -on: - pull_request: - push: - -jobs: - advisory-guards: - name: Advisory Box-First Checks - runs-on: ubuntu-latest - continue-on-error: true # informational for now - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install ripgrep - run: sudo apt-get update && sudo apt-get install -y ripgrep - - - name: Disallow direct env reads in jit (except config/runtime) - run: | - set -e - echo "Checking for std::env::var direct reads under src/jit (excluding config.rs and rt.rs)" - # find occurrences outside config.rs and rt.rs - if rg -n "std::env::var\(" src/jit | rg -v 'src/jit/(config|rt)\.rs'; then - echo "[GUARD] Found direct env reads outside jit::config/rt (advisory)." - exit 1 - else - echo "[OK] No direct env reads outside jit::config/rt" - fi - - - name: Report direct env reads (global advisory) - run: | - echo "[ADVISORY] Listing direct std::env::var reads outside config aggregators..." - rg -n "std::env::var\(" src \ - | rg -v 'src/jit/config\.rs|src/config/env\.rs' \ - || true - echo "[NOTE] Above is advisory; prefer using config::env or jit::config for critical flags." - - - name: Prevent reintroducing removed modular builder feature (advisory) - run: | - set -e - if rg -n "mir_modular_builder" Cargo.toml src || true; then - echo "[GUARD] Found 'mir_modular_builder' mention (advisory). This feature was removed." - exit 1 - else - echo "[OK] No 'mir_modular_builder' mentions found" - fi - - - name: Enforce single B1 ABI switch point (advisory) - run: | - set -e - echo "Checking unexpected B1 mentions" - # allow occurrences in known switch points - if rg -n "B1" src | rg -v 'abi_param_for_kind|returns.*types::B1|jit-b1-abi'; then - echo "[GUARD] Found unexpected B1 usage (advisory)." - exit 1 - else - echo "[OK] No unexpected B1 usage" - fi - - - name: Print reminder for stats.jsonl (advisory) - run: | - echo "[NOTE] Consider emitting stats.jsonl with {function, abi_mode, reason} at least once per run." diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index c973afcf..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: nyash-ci - -on: - push: - pull_request: - -jobs: - build-and-smoke: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install LLVM 18 (apt.llvm.org) - run: | - sudo apt-get update - sudo apt-get install -y wget gnupg lsb-release - wget https://apt.llvm.org/llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 18 - - - name: Set LLVM env - run: echo "LLVM_SYS_180_PREFIX=$(llvm-config-18 --prefix)" >> "$GITHUB_ENV" - - - name: Ensure Python3 - run: sudo apt-get install -y python3 - - - name: Set up Rust - uses: dtolnay/rust-toolchain@stable - - - name: Cache Rust build - uses: Swatinem/rust-cache@v2 - with: - cache-targets: true - - - name: Build (LLVM feature) - run: cargo build --release --features llvm - - - name: Curated LLVM smokes - run: ./tools/smokes/curated_llvm.sh - - - name: Curated LLVM Stage-3 smokes - run: ./tools/smokes/curated_llvm_stage3.sh - - - name: Bridge Stage-3 acceptance (JSON v0 pipe) - run: ./tools/ny_stage3_bridge_accept_smoke.sh - - - name: Curated LLVM Stage-3 smokes (PHI-off) - run: ./tools/smokes/curated_llvm_stage3.sh --phi-off - diff --git a/.github/workflows/core13-pure-llvm.yml b/.github/workflows/core13-pure-llvm.yml deleted file mode 100644 index ea388e0d..00000000 --- a/.github/workflows/core13-pure-llvm.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Core-13 Pure CI (LLVM) - -on: - push: - pull_request: - -jobs: - test-core13-pure-llvm: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo - uses: Swatinem/rust-cache@v2 - - - name: Install LLVM 18 (llvm-config-18) - run: | - sudo apt-get update - sudo apt-get install -y curl ca-certificates lsb-release wget gnupg - curl -fsSL https://apt.llvm.org/llvm.sh -o llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 18 - llvm-config-18 --version - - - name: Run tests with Core-13 pure mode + LLVM - env: - NYASH_MIR_CORE13_PURE: "1" - run: | - export LLVM_SYS_180_PREFIX="$(llvm-config-18 --prefix)" - export LLVM_SYS_181_PREFIX="$(llvm-config-18 --prefix)" - cargo test --features llvm --all-targets --no-fail-fast - diff --git a/.github/workflows/core13-pure.yml b/.github/workflows/core13-pure.yml deleted file mode 100644 index 2d72dfe4..00000000 --- a/.github/workflows/core13-pure.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Core-13 Pure CI - -on: - push: - pull_request: - -jobs: - test-core13-pure: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo - uses: Swatinem/rust-cache@v2 - - - name: Build (release) - run: cargo build --release - - - name: Run tests with Core-13 pure mode - env: - NYASH_MIR_CORE13_PURE: "1" - run: cargo test --all-targets --no-fail-fast - diff --git a/.github/workflows/docs-link-check.yml b/.github/workflows/docs-link-check.yml deleted file mode 100644 index f3b235a1..00000000 --- a/.github/workflows/docs-link-check.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: docs-link-check - -on: - push: - paths: - - '**.md' - - '.github/workflows/docs-link-check.yml' - - '.github/mlc_config.json' - pull_request: - paths: - - '**.md' - - '.github/workflows/docs-link-check.yml' - - '.github/mlc_config.json' - -jobs: - markdown-link-check: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Run markdown-link-check on docs and READMEs - uses: gaurav-nelson/github-action-markdown-link-check@v1 - with: - use-quiet-mode: 'yes' - use-verbose-mode: 'no' - config-file: '.github/mlc_config.json' - folder-path: | - docs - file-path: | - README.md - README.ja.md - CLAUDE.md - diff --git a/.github/workflows/llvm-aot-smoke.yml b/.github/workflows/llvm-aot-smoke.yml deleted file mode 100644 index 78ad195c..00000000 --- a/.github/workflows/llvm-aot-smoke.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: LLVM AOT Smoke - -on: - push: - paths: - - 'src/**' - - 'crates/**' - - 'apps/**' - - 'tools/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.github/workflows/llvm-aot-smoke.yml' - pull_request: - paths: - - 'src/**' - - 'crates/**' - - 'apps/**' - - 'tools/**' - - 'Cargo.toml' - - 'Cargo.lock' - -jobs: - llvm-aot: - runs-on: ubuntu-latest - env: - CARGO_TERM_COLOR: always - NYASH_CLI_VERBOSE: '1' - NYASH_DISABLE_PLUGINS: '1' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Install LLVM 18 (llvm-config-18) - run: | - sudo apt-get update - sudo apt-get install -y curl ca-certificates lsb-release wget gnupg - curl -fsSL https://apt.llvm.org/llvm.sh -o llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 18 - llvm-config-18 --version - - - name: Run LLVM AOT smokes - run: bash tools/llvm_smoke.sh - diff --git a/.github/workflows/llvm-ny-llvmc-exe.yml b/.github/workflows/llvm-ny-llvmc-exe.yml deleted file mode 100644 index fee953e0..00000000 --- a/.github/workflows/llvm-ny-llvmc-exe.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: llvm-ny-llvmc-exe - -on: - push: - branches: [ main, master, "**" ] - pull_request: - branches: [ "**" ] - -jobs: - ny-llvmc-exe: - runs-on: ubuntu-latest - timeout-minutes: 25 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo - uses: Swatinem/rust-cache@v2 - - - name: Install LLVM 18 and Python deps - run: | - sudo apt-get update - sudo apt-get install -y curl ca-certificates lsb-release wget gnupg python3-pip - curl -fsSL https://apt.llvm.org/llvm.sh -o llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 18 - llvm-config-18 --version - python3 -m pip install --upgrade pip - python3 -m pip install llvmlite jsonschema - - - name: Build nyash and ny-llvmc (release) - run: | - cargo build --release -j 2 - cargo build --release -p nyash-llvm-compiler -j 2 - cargo build --release -p nyrt -j 2 - - - name: EXE build+run (ternary_basic -> exit 10) - run: | - mkdir -p tmp - ./target/release/nyash --emit-mir-json tmp/tb.json --backend mir apps/tests/ternary_basic.nyash - ./target/release/ny-llvmc --in tmp/tb.json --emit exe --nyrt target/release --out tmp/tb - set +e; ./tmp/tb >/dev/null 2>&1; CODE=$?; set -e - echo "exit=$CODE"; test "$CODE" -eq 10 - - - name: EXE build+run (ternary_nested -> exit 50) - run: | - ./target/release/nyash --emit-mir-json tmp/tn.json --backend mir apps/tests/ternary_nested.nyash - ./target/release/ny-llvmc --in tmp/tn.json --emit exe --nyrt target/release --out tmp/tn - set +e; ./tmp/tn >/dev/null 2>&1; CODE=$?; set -e - echo "exit=$CODE"; test "$CODE" -eq 50 - - - name: EXE build+run (peek_expr_block -> exit 1) - run: | - ./target/release/nyash --emit-mir-json tmp/pb.json --backend mir apps/tests/peek_expr_block.nyash - ./target/release/ny-llvmc --in tmp/pb.json --emit exe --nyrt target/release --out tmp/pb - set +e; ./tmp/pb >/dev/null 2>&1; CODE=$?; set -e - echo "exit=$CODE"; test "$CODE" -eq 1 - diff --git a/.github/workflows/llvm-ny-llvmc-obj.yml b/.github/workflows/llvm-ny-llvmc-obj.yml deleted file mode 100644 index 57a11d9f..00000000 --- a/.github/workflows/llvm-ny-llvmc-obj.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: llvm-ny-llvmc-obj - -on: - push: - branches: [ main, master, "**" ] - pull_request: - branches: [ "**" ] - -jobs: - ny-llvmc-obj: - runs-on: ubuntu-latest - timeout-minutes: 25 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo - uses: Swatinem/rust-cache@v2 - - - name: Install LLVM 18 and Python deps - run: | - sudo apt-get update - sudo apt-get install -y curl ca-certificates lsb-release wget gnupg python3-pip - curl -fsSL https://apt.llvm.org/llvm.sh -o llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 18 - llvm-config-18 --version - python3 -m pip install --upgrade pip - python3 -m pip install llvmlite - - - name: Build nyash (release) - run: cargo build --release -j 2 - - - name: Generate object via ny-llvmc (crate path) - env: - NYASH_LLVM_COMPILER: crate - NYASH_LLVM_ONLY_OBJ: "1" - run: | - bash tools/build_llvm.sh apps/tests/hello_simple_llvm.nyash -o app - ls -la target/aot_objects - test -f target/aot_objects/hello_simple_llvm.o - - - name: Print object file type - run: | - file target/aot_objects/hello_simple_llvm.o || true - diff --git a/.github/workflows/llvm-vinvoke-smoke.yml b/.github/workflows/llvm-vinvoke-smoke.yml deleted file mode 100644 index a2755b7f..00000000 --- a/.github/workflows/llvm-vinvoke-smoke.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: LLVM VInvoke Smoke - -on: - push: - paths: - - 'src/**' - - 'crates/**' - - 'apps/**' - - 'tools/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.github/workflows/llvm-vinvoke-smoke.yml' - pull_request: - paths: - - 'src/**' - - 'crates/**' - - 'apps/**' - - 'tools/**' - - 'Cargo.toml' - - 'Cargo.lock' - -jobs: - llvm-vinvoke: - runs-on: ubuntu-latest - env: - CARGO_TERM_COLOR: always - NYASH_CLI_VERBOSE: '1' - # Plugins enabled (do not set NYASH_DISABLE_PLUGINS) - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Install LLVM 18 (llvm-config-18) - run: | - sudo apt-get update - sudo apt-get install -y curl ca-certificates lsb-release wget gnupg build-essential libzstd-dev - curl -fsSL https://apt.llvm.org/llvm.sh -o llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 18 - llvm-config-18 --version - - - name: Run LLVM VInvoke + Array smoke tests - run: | - NYASH_LLVM_VINVOKE_RET_SMOKE=1 NYASH_LLVM_ARRAY_RET_SMOKE=1 ./tools/llvm_smoke.sh release diff --git a/.github/workflows/mir-golden-ci.yml b/.github/workflows/mir-golden-ci.yml deleted file mode 100644 index f673bd63..00000000 --- a/.github/workflows/mir-golden-ci.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: MIR Golden CI - -on: - push: - pull_request: - -jobs: - build-and-compare: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo - uses: Swatinem/rust-cache@v2 - - - name: Build (release) - run: cargo build --release - - - name: Make tools executable - run: chmod +x tools/*.sh - - - name: Compare MIR against golden snapshots - run: bash tools/ci_check_golden.sh - diff --git a/.github/workflows/nekocode-pr-analysis.yml b/.github/workflows/nekocode-pr-analysis.yml deleted file mode 100644 index 358955b9..00000000 --- a/.github/workflows/nekocode-pr-analysis.yml +++ /dev/null @@ -1,115 +0,0 @@ -name: NekoCode PR Impact Analysis - -on: - pull_request: - types: [opened, synchronize, reopened] - branches: [main, dev] - -jobs: - nekocode-analysis: - runs-on: ubuntu-latest - name: Code Impact Analysis - - permissions: - contents: read - pull-requests: write - - steps: - - name: Checkout PR - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Download NekoCode - run: | - mkdir -p bin - curl -L https://github.com/moe-charm/nekocode-rust/raw/main/releases/nekocode-rust -o bin/nekocode-rust - chmod +x bin/nekocode-rust - - - name: Analyze Current PR - id: analyze-pr - run: | - echo "🔍 Analyzing PR changes..." - - # 🎯 修正1: パスを. (ルート)に変更 - ./bin/nekocode-rust analyze . --stats-only > pr_analysis.txt 2>&1 - - # 🎯 修正2: エラー処理を改善 - if [ $? -ne 0 ]; then - echo "❌ NekoCode analysis failed!" - cat pr_analysis.txt - exit 1 - fi - - echo "📊 Analysis Results:" - cat pr_analysis.txt - - # 🎯 修正3: より確実な値抽出 - FILES_COUNT=$(grep -E "found [0-9]+ files" pr_analysis.txt | grep -oE "[0-9]+" || echo "0") - ANALYSIS_TIME=$(grep -E "Total.*took: [0-9.]+s" pr_analysis.txt | grep -oE "[0-9.]+s" || echo "N/A") - LANGUAGES=$(grep -A 10 "言語別:" pr_analysis.txt | grep -E "• \w+:" | wc -l || echo "1") - - echo "files_analyzed=$FILES_COUNT" >> $GITHUB_OUTPUT - echo "analysis_time=$ANALYSIS_TIME" >> $GITHUB_OUTPUT - echo "languages_detected=$LANGUAGES" >> $GITHUB_OUTPUT - - - name: Generate Impact Report - run: | - PR_FILES=${{ steps.analyze-pr.outputs.files_analyzed }} - ANALYSIS_TIME=${{ steps.analyze-pr.outputs.analysis_time }} - LANGUAGES_COUNT=${{ steps.analyze-pr.outputs.languages_detected }} - - cat > impact_report.md << EOF - ## 🦀 NekoCode 分析レポート - - ### 📊 コードの影響の概要 - - | メトリック | 価値 | - |-----------|------| -| **分析対象** | $(basename "$GITHUB_WORKSPACE") ディレクトリ全体 | - | **分析されたファイル** | ${PR_FILES} ファイル | - | **分析時間** | ${ANALYSIS_TIME} | - | **検出された言語** | ${LANGUAGES_COUNT}言語 | - - ### ✅ 分析ステータス - - - **コード品質**: NekoCode分析が正常完了 - - **パフォーマンス**: 分析時間 ${ANALYSIS_TIME} - - **互換性**: 検出されたファイルがエラーなしで処理完了 - - --- - *🚀 [NekoCode](https://github.com/moe-charm/nekocode-rust)による分析* - EOF - - - name: Comment PR - uses: actions/github-script@v7 - with: - script: | - const fs = require('fs'); - const report = fs.readFileSync('impact_report.md', 'utf8'); - - const comments = await github.rest.issues.listComments({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - }); - - const nekocodeComment = comments.data.find(comment => - comment.body.includes('🦀 NekoCode 分析レポート') - ); - - if (nekocodeComment) { - await github.rest.issues.updateComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: nekocodeComment.id, - body: report - }); - } else { - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: report - }); - } \ No newline at end of file diff --git a/.github/workflows/plugin-v2-smoke.yml b/.github/workflows/plugin-v2-smoke.yml deleted file mode 100644 index ce1c2654..00000000 --- a/.github/workflows/plugin-v2-smoke.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: plugin-v2-smoke - -on: - push: - branches: [ main, master, "**" ] - pull_request: - branches: [ "**" ] - -jobs: - linux-smoke: - runs-on: ubuntu-latest - timeout-minutes: 15 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo - uses: Swatinem/rust-cache@v2 - - - name: Run plugin v2 smoke - run: | - bash tools/plugin_v2_smoke.sh - diff --git a/.github/workflows/plugins-e2e.yml b/.github/workflows/plugins-e2e.yml deleted file mode 100644 index 1164e7ee..00000000 --- a/.github/workflows/plugins-e2e.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Plugins E2E (Linux) - -on: - push: - branches: [ main, dev ] - pull_request: - branches: [ main, dev ] - -jobs: - plugins-e2e: - runs-on: ubuntu-latest - timeout-minutes: 15 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - - name: Cache cargo - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - - name: Build (release) - run: cargo build --release -j2 - - - name: Run E2E with plugins (Linux) - env: - RUST_BACKTRACE: 1 - NYASH_NET_LOG: "0" - run: | - cargo test --features plugins -q -- --nocapture - diff --git a/.github/workflows/pyvm-llvmlite-parity.yml b/.github/workflows/pyvm-llvmlite-parity.yml deleted file mode 100644 index ebafdedf..00000000 --- a/.github/workflows/pyvm-llvmlite-parity.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: PyVM ↔ llvmlite Parity (Optional) - -on: - workflow_dispatch: - schedule: - - cron: '0 6 * * *' - -jobs: - parity: - runs-on: ubuntu-latest - env: - CARGO_TERM_COLOR: always - NYASH_DISABLE_PLUGINS: '1' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Install LLVM 18 (llvm-config-18) - run: | - sudo apt-get update - sudo apt-get install -y curl ca-certificates lsb-release wget gnupg - curl -fsSL https://apt.llvm.org/llvm.sh -o llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 18 - llvm-config-18 --version - - - name: Build nyash (release) - run: cargo build --release -j 2 - - - name: Parity esc_dirname_smoke (PyVM vs llvmlite) - run: tools/parity.sh --lhs pyvm --rhs llvmlite apps/tests/esc_dirname_smoke.nyash --timeout 20 - - - name: Parity string_ops_basic (PyVM vs llvmlite) - run: tools/parity.sh --lhs pyvm --rhs llvmlite apps/tests/string_ops_basic.nyash --timeout 20 - - - name: Parity ternary_nested (PyVM vs llvmlite) - run: tools/parity.sh --lhs pyvm --rhs llvmlite apps/tests/ternary_nested.nyash --timeout 20 - - - name: Parity peek_return_value (PyVM vs llvmlite) - run: tools/parity.sh --lhs pyvm --rhs llvmlite apps/tests/peek_return_value.nyash --timeout 20 - diff --git a/.github/workflows/pyvm-smoke.yml b/.github/workflows/pyvm-smoke.yml deleted file mode 100644 index ecd95493..00000000 --- a/.github/workflows/pyvm-smoke.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: PyVM + Using Smoke - -on: - push: - paths: - - 'src/**' - - 'apps/**' - - 'tools/**' - - 'docs/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.github/workflows/pyvm-smoke.yml' - pull_request: - paths: - - 'src/**' - - 'apps/**' - - 'tools/**' - - 'docs/**' - -jobs: - pyvm-smokes: - runs-on: ubuntu-latest - env: - CARGO_TERM_COLOR: always - NYASH_DISABLE_PLUGINS: '1' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Install ripgrep - run: | - sudo apt-get update - sudo apt-get install -y ripgrep - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Build (release) - run: cargo build --release -j 2 - - - name: PyVM Stage-2 smokes - run: bash tools/pyvm_stage2_smoke.sh - - - name: PyVM nested control smokes - run: bash tools/pyvm_stage2_nested_control_smoke.sh - - - name: PyVM call/args smokes - run: bash tools/pyvm_stage2_call_args_smoke.sh - - - name: Bridge Stage-2 (parser MVP) smokes - run: bash tools/ny_stage2_bridge_smoke.sh - - - name: PyVM collections smokes - run: bash tools/pyvm_collections_smoke.sh - - - name: PyVM compare smokes - run: bash tools/pyvm_stage2_compare_smoke.sh - - - name: Bridge Stage-2 short-circuit smoke - run: bash tools/ny_stage2_shortcircuit_smoke.sh - - - name: PyVM Stage-2 dot-chain smoke - run: bash tools/pyvm_stage2_dot_chain_smoke.sh - - - name: PyVM Stage-2 new/method smoke - run: bash tools/ny_stage2_new_method_smoke.sh - - - name: Selfhost using acceptance (no-op) - run: bash tools/ny_selfhost_using_smoke.sh - - - name: Emitter meta.usings gate (fallback allowed) - run: bash tools/selfhost_emitter_usings_gate_smoke.sh diff --git a/.github/workflows/selfhost-bootstrap.yml b/.github/workflows/selfhost-bootstrap.yml deleted file mode 100644 index 59108458..00000000 --- a/.github/workflows/selfhost-bootstrap.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Selfhost Bootstrap Smoke - -on: - push: - paths: - - 'src/**' - - 'apps/**' - - 'tools/**' - - 'docs/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.github/workflows/selfhost-bootstrap.yml' - pull_request: - paths: - - 'src/**' - - 'apps/**' - - 'tools/**' - - 'docs/**' - -jobs: - selfhost-bootstrap: - runs-on: ubuntu-latest - timeout-minutes: 10 - env: - CARGO_TERM_COLOR: always - NYASH_DISABLE_PLUGINS: '1' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Build (release, cranelift-jit) - run: cargo build --release --features cranelift-jit -j 2 - - - name: Run bootstrap selfhost smoke - run: timeout -s KILL 40s bash tools/bootstrap_selfhost_smoke.sh - diff --git a/.github/workflows/selfhost-exe-first.yml b/.github/workflows/selfhost-exe-first.yml deleted file mode 100644 index 756eafb1..00000000 --- a/.github/workflows/selfhost-exe-first.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Selfhost EXE-first (Optional) - -on: - workflow_dispatch: - schedule: - - cron: '0 7 * * *' - -jobs: - selfhost-exe-first: - runs-on: ubuntu-latest - timeout-minutes: 25 - env: - CARGO_TERM_COLOR: always - NYASH_DISABLE_PLUGINS: '1' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Install LLVM 18 (llvm-config-18) - run: | - sudo apt-get update - sudo apt-get install -y curl ca-certificates lsb-release wget gnupg python3-pip - curl -fsSL https://apt.llvm.org/llvm.sh -o llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 18 - llvm-config-18 --version - - - name: Install llvmlite (Python) - run: | - python3 -m pip install --upgrade pip - python3 -m pip install llvmlite jsonschema - - - name: Build nyash (release) - run: cargo build --release -j 2 - - - name: ny-llvmc dummy smoke - run: | - cargo build --release -p nyash-llvm-compiler -j 2 - ./target/release/ny-llvmc --dummy --out /tmp/dummy.o - file /tmp/dummy.o || true - - - name: Run EXE-first smoke (parser EXE + bridge) - run: timeout -s KILL 10m bash tools/exe_first_smoke.sh diff --git a/.github/workflows/selfhost-minimal.yml b/.github/workflows/selfhost-minimal.yml deleted file mode 100644 index 1f62c26d..00000000 --- a/.github/workflows/selfhost-minimal.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Selfhost Minimal Smoke - -on: - push: - branches: [ selfhosting-dev ] - paths: - - 'apps/selfhost-minimal/**' - - 'src/**' - - 'tools/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.github/workflows/selfhost-minimal.yml' - - 'docs/**' - pull_request: - branches: [ selfhosting-dev ] - paths: - - 'apps/selfhost-minimal/**' - - 'src/**' - - 'tools/**' - - 'Cargo.toml' - - 'Cargo.lock' - - 'docs/**' - -jobs: - selfhost-minimal: - runs-on: ubuntu-latest - timeout-minutes: 10 - env: - CARGO_TERM_COLOR: always - NYASH_DISABLE_PLUGINS: '1' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Build (release, cranelift-jit) - run: cargo build --release --features cranelift-jit - - - name: Run selfhost-minimal smoke - run: bash tools/selfhost_vm_smoke.sh - diff --git a/.github/workflows/smoke.yml b/.github/workflows/smoke.yml deleted file mode 100644 index 01147b2d..00000000 --- a/.github/workflows/smoke.yml +++ /dev/null @@ -1,144 +0,0 @@ -name: LLVM Curated Smoke - -on: - push: - paths: - - 'src/**' - - 'examples/**' - - 'tools/**' - - 'Cargo.toml' - - 'Cargo.lock' - - 'docs/**' - - '.github/workflows/smoke.yml' - pull_request: - paths: - - 'src/**' - - 'examples/**' - - 'tools/**' - - 'Cargo.toml' - - 'Cargo.lock' - - 'docs/**' - -jobs: - llvm-curated: - runs-on: ubuntu-latest - env: - CARGO_TERM_COLOR: always - # Disable external plugins to keep CI deterministic - NYASH_DISABLE_PLUGINS: '1' - NYASH_LLVM_USE_HARNESS: '1' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Run curated LLVM smokes (PHI-on) - run: bash tools/smokes/curated_llvm.sh - - - name: Run curated LLVM smokes (PHI-off) - run: bash tools/smokes/curated_llvm.sh --phi-off - - jit-direct-smoke: - if: false # archived: JIT path not maintained in current phase - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - profile: [debug, release] - env: - CARGO_TERM_COLOR: always - # Disable external plugins to keep CI deterministic - NYASH_DISABLE_PLUGINS: '1' - # Ensure lowering runs - NYASH_JIT_THRESHOLD: '1' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Build (${{ matrix.profile }}, cranelift-jit) - run: | - if [ "${{ matrix.profile }}" = "release" ]; then - cargo build --release --features cranelift-jit - else - cargo build --features cranelift-jit - fi - - - name: JIT-direct smoke: mir-branch-ret - run: | - BIN=./target/${{ matrix.profile }}/nyash - timeout 15s "$BIN" --jit-direct apps/tests/mir-branch-ret/main.nyash - - - name: JIT-direct smoke: mir-phi-min - run: | - BIN=./target/${{ matrix.profile }}/nyash - timeout 15s "$BIN" --jit-direct apps/tests/mir-phi-min/main.nyash - - - name: JIT-direct smoke: mir-branch-multi - run: | - BIN=./target/${{ matrix.profile }}/nyash - timeout 15s "$BIN" --jit-direct apps/tests/mir-branch-multi/main.nyash - - smoke-compile-events: - if: false # archived: JIT compile-events not maintained in current phase - runs-on: ubuntu-latest - env: - CARGO_TERM_COLOR: always - NYASH_DISABLE_PLUGINS: '1' - NYASH_JIT_EVENTS_COMPILE: '1' - NYASH_JIT_HOSTCALL: '1' - NYASH_JIT_EVENTS_PATH: events.jsonl - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust (stable) - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo registry and build - uses: actions/cache@v4 - with: - path: | - ~/.cargo/registry - ~/.cargo/git - target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - ${{ runner.os }}-cargo- - - - name: Build - run: cargo build --release -j2 --features cranelift-jit - - - name: Run HH example (compile events) - run: ./target/release/nyash --backend vm examples/jit_map_get_param_hh.nyash - - - name: Verify events contain phase:lower - run: | - test -f events.jsonl - grep -q '"phase":"lower"' events.jsonl diff --git a/.github/workflows/vm-jit-identical.yml b/.github/workflows/vm-jit-identical.yml deleted file mode 100644 index 78811166..00000000 --- a/.github/workflows/vm-jit-identical.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: VM-JIT Identical Execution - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - test: - runs-on: ubuntu-latest - strategy: - matrix: - strict: ["0", "1"] - vt: ["0", "1"] - steps: - - uses: actions/checkout@v4 - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - override: true - - name: Cargo test (subset, with JIT feature) - env: - RUSTFLAGS: "-C debuginfo=0" - NYASH_ABI_STRICT: ${{ matrix.strict }} - NYASH_ABI_VTABLE: ${{ matrix.vt }} - NYASH_JIT_HOST_BRIDGE: "1" - NYASH_EXTERN_ROUTE_SLOTS: "1" - NYASH_VM_PIC_THRESHOLD: "8" - run: | - cargo test --features cranelift-jit \ - src/tests/identical_exec.rs \ - src/tests/identical_exec_collections.rs \ - src/tests/identical_exec_string.rs \ - src/tests/identical_exec_instance.rs \ - src/tests/vtable_array_string.rs \ - src/tests/vtable_strict.rs \ - src/tests/host_reverse_slot.rs \ - -- --nocapture diff --git a/.github/workflows/vm-legacy-build.yml b/.github/workflows/vm-legacy-build.yml deleted file mode 100644 index b1a25e54..00000000 --- a/.github/workflows/vm-legacy-build.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: vm-legacy-build - -on: - workflow_dispatch: - push: - paths: - - 'src/**' - - 'Cargo.toml' - - '.github/workflows/vm-legacy-build.yml' - -jobs: - build-vm-legacy: - runs-on: ubuntu-latest - timeout-minutes: 20 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Rust - uses: dtolnay/rust-toolchain@stable - - - name: Cache Rust build - uses: Swatinem/rust-cache@v2 - with: - cache-targets: true - - - name: Build with vm-legacy + interpreter-legacy (compile check only) - run: cargo build --release --features vm-legacy,interpreter-legacy -