Files
hakorune/docs/handoff/phase-15-handoff.md

2.8 KiB
Raw Blame History

Phase 15 — Self-Hosting (Cranelift AOT) 引き継ぎメモ

概要2025-09-05

  • 目的: Nyash → MIR → Cranelift AOT → オブジェクト → リンク → EXE の最小パイプライン確立に向けた準備(設計/仕様/スモーク雛形)。
  • 実装は別ブランチ phase-15/self-host-aot-cranelift で着手予定。現状はドキュメントと雛形スクリプトまで整備。

このブランチで完了したこと

  • Cranelift AOT 設計とインタフェース草案のドキュメント追加:
    • docs/backend-cranelift-aot-design.md
    • docs/interfaces/cranelift-aot-box.md
  • LinkerBox 仕様とAOTスモーク仕様擬似出力
    • docs/interfaces/linker-box.md
    • docs/tests/aot_smoke_cranelift.md
  • Phase 15 集約README
    • docs/phase-15/README.md
  • スモーク雛形DRYRUN既定。CLIF_SMOKE_RUN=1で実行
    • tools/aot_smoke_cranelift.shUnix/WSL
    • tools/aot_smoke_cranelift.ps1Windows

次にやること(別ブランチで実装)

  1. ブランチ作成: git switch -c phase-15/self-host-aot-cranelift
  2. CraneliftAotBoxPoC
    • src/backend/cranelift/aot_box.rs を追加
    • compile_stub_ny_main_i64(val, out_obj).o/.obj を出力
    • Cargo feature: cranelift-aot = ["dep:cranelift-object"]
  3. LinkerBoxWindows優先
    • .o/.obj + NyRTlibnyrt.a/nyrt.lib)で EXE を生成
    • 環境変数: NYASH_LINKER/NYASH_LINK_FLAGS/NYASH_LINK_VERBOSE
  4. CLI 統合PoC
    • --backend cranelift-aot--poc-const N
  5. スモーク
    • apps/ny-hello → emit → link → run → Result: 42 を確認
    • 既存スクリプト雛形を “実行” モードで動くよう配線

運用メモCodex 非同期 2本

  • 2本起動: CODEX_MAX_CONCURRENT=2 CODEX_DEDUP=1 ./tools/codex-keep-two.sh codex "<Task A>" "<Task B>"
  • 1本起動: CODEX_ASYNC_DETACH=1 ./tools/codex-async-notify.sh "<task>" codex
  • ログ: ~/.codex-async-work/logs/

スモーク雛形の使い方DRYRUN

  • Unix/WSL: ./tools/aot_smoke_cranelift.sh release
  • Windows: pwsh -File tools/aot_smoke_cranelift.ps1 -Mode release
  • 実行モード: CLIF_SMOKE_RUN=1 を付与AOT実装が入った後に使用

参考リンク

  • docs/phase-15/README.md全体像
  • docs/backend-cranelift-aot-design.mdAOT設計
  • docs/interfaces/cranelift-aot-box.mdCraneliftAotBox API案
  • docs/interfaces/linker-box.mdLinkerBox仕様
  • docs/tests/aot_smoke_cranelift.mdスモーク仕様と擬似出力

補足(メモリ/GC

  • P0/P1定数返し/整数演算では追加のメモリ系Boxは不要。
  • P2以降で配列/文字列の生成・更新をAOTから行う場合、NyRTに最小のC ABIroots/barrier/alloc系を追加予定docsに設計案を後続追記