2025-12-26 14:21:12 +09:00
|
|
|
|
# Phase 285 P3: LLVM One-Pass(VM/LLVM 一気通貫の最小ゲート)
|
|
|
|
|
|
|
|
|
|
|
|
目的: VM/LLVM の差分が “SKIPのまま固定” にならないように、LLVM を有効化したビルドで integration smoke を 1 回通す導線を SSOT 化する。
|
|
|
|
|
|
|
|
|
|
|
|
## 前提
|
|
|
|
|
|
|
|
|
|
|
|
- quick gate は常に緑: `./tools/smokes/v2/run.sh --profile quick`
|
|
|
|
|
|
- LLVM backend が無効なビルドでは、LLVM smoke は理由付き SKIP になる(想定挙動)。
|
|
|
|
|
|
|
|
|
|
|
|
## Step 1: LLVM を有効化してビルド
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cargo build --release --features llvm
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Step 2: 既存 fixture を LLVM で一気通貫(integration)
|
|
|
|
|
|
|
|
|
|
|
|
この Phase では “新しい fixture を増やさず”、既に作った以下を使う:
|
|
|
|
|
|
|
|
|
|
|
|
- return-in-loop: `apps/tests/phase286_pattern5_return_min.hako`(Phase 284 P2 再利用)
|
|
|
|
|
|
- weak upgrade success/fail: `apps/tests/phase285_weak_basic.hako`, `apps/tests/phase285_p2_weak_upgrade_fail_min.hako`
|
|
|
|
|
|
|
|
|
|
|
|
実行(integration の該当 smoke をまとめて流す):
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
./tools/smokes/v2/run.sh --profile integration --filter "*phase284_p2_return_in_loop_llvm*|*phase285_p2_weak_upgrade_*_llvm*"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Step 3: 結果の分類(SSOT)
|
|
|
|
|
|
|
|
|
|
|
|
- PASS: VM/LLVM parity が成立
|
|
|
|
|
|
- SKIP: 「LLVM backend not available」など、ビルド条件に起因(P3 では許容。ただし “llvm feature を有効にしても SKIP” は要調査)
|
|
|
|
|
|
- FAIL: 実装差分。Phase 285 の差分分類(A/B/C/D)へ追加して次の小タスクに切る
|
|
|
|
|
|
|
|
|
|
|
|
## 受け入れ条件
|
|
|
|
|
|
|
|
|
|
|
|
- `cargo build --release --features llvm` が通る
|
|
|
|
|
|
- 上記 integration filter が PASS または理由付き SKIP
|
|
|
|
|
|
- quick gate が緑(154/154 PASS)
|
2025-12-26 14:34:05 +09:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Phase 285 P3 実施結果(2025-12-26)
|
|
|
|
|
|
|
|
|
|
|
|
### 実装完了
|
|
|
|
|
|
- ✅ LLVM バックエンド: lifecycle.py で lower_keepalive/lower_release_strong 実装
|
|
|
|
|
|
- ✅ instruction_lower.py: KeepAlive/ReleaseStrong ディスパッチ追加
|
|
|
|
|
|
- ✅ nyash_kernel: ny_release_strong() ランタイム関数実装
|
|
|
|
|
|
- ✅ mir_json_emit.rs: KeepAlive/ReleaseStrong JSON シリアライゼーション追加
|
|
|
|
|
|
|
|
|
|
|
|
### テスト結果
|
|
|
|
|
|
- ✅ **phase285_p2_weak_upgrade_fail_llvm**: PASS
|
|
|
|
|
|
- ⏸️ **phase285_p2_weak_upgrade_success_llvm**: SKIP
|
|
|
|
|
|
- ⏸️ **phase284_p2_return_in_loop_llvm**: SKIP
|
|
|
|
|
|
|
|
|
|
|
|
### SKIP 理由(llvm feature 有効でも SKIP)
|
|
|
|
|
|
テストスクリプトは `./target/release/hakorune --version` の出力に "features.*llvm" が含まれているかをチェックしているが、現在の --version 実装は feature 情報を出力していない。そのため、LLVM feature を有効にしてビルドしても、環境チェックで SKIP される。
|
|
|
|
|
|
|
|
|
|
|
|
**技術的詳細**: `--version` が "nyash 1.0" のみを出力し、cargo features 情報を含めていない。weak_upgrade_fail_llvm は別の環境チェック方式(または環境変数ベース)を使用しているため PASS した。
|
|
|
|
|
|
|
|
|
|
|
|
**対応方針**: Phase 285 P3 の目的(KeepAlive/ReleaseStrong の LLVM 実装)は達成済み。--version 出力の feature 表示は別タスク(Phase 286 以降)で対応予定。
|