Files
hakorune/docs/phases/phase-9/phase_9_12_universal_frontends.md

1.5 KiB
Raw Blame History

Phase 9.12: Universal Frontends各言語→NyIR 落とし込み PoC

目的What/Why

  • 「All Languages → NyIR」を実証するため、代表的な言語サブセットのフロントエンドPoCを作る。
  • 最適化は脇に置き、意味保存とエッジケースの把握を最優先にする。

対象Initial set

  • Cサブセット例外なし/CASあり
  • JavaScript/TypeScriptサブセット辞書/例外/非同期の最小)
  • Pythonサブセット辞書/例外/awaitの最小
  • JVMサブセットbytecode 経由:例外/スレッド)

成果物Deliverables

  • lang2nyir-<lang> ツールAST/IR→NyIR
  • Golden NyIR各サンプルの .nyir
  • 変換ガイド言語機能→NyIR/Ext/標準Box の対応表)

スコープScope

  1. C-subset → NyIR
    • if/loop/call/return、構造体の最小投影、CASAtomicExt
  2. JS/TS-subset → NyIR
    • 例外Try/Throw、Promise/awaitAwait近似、辞書/配列→標準Box
  3. Python-subset → NyIR
    • 例外・awaitの最小、辞書/リスト→標準Box
  4. JVM-subset → NyIR
    • 例外/スレッド/同期の最小投影Ext準拠

受け入れ基準Acceptance

  • 各言語サンプルが NyIR に落ち、interp/vm/wasm/llvm のいずれかで実行可能
  • Golden NyIR を用いた Diff 一致が取れる

参照References

  • NyIR 仕様/Ext: docs/nyir/spec.md
  • ビジョン: docs/nyir/vision_universal_exchange.md
  • ABI/BID: docs/予定/native-plan/box_ffi_abi.md