Skip to content

RFC-003:バージョン計画 ​

拒否日: 2026-06-01

⚠️ 拒否理由 ​

本 RFC は RFC 規範に準拠していないため、拒否されました。

問題分析 ​

問題説明
文書タイプエラーRFC は「なぜこのように設計するか」の意思決定文書であり、本文は「今どこにいるか、どこへ行くか」のプロジェクト管理文書である
設計意思決定の欠如技術選定のトレードオフ分析がなく、代替案の比較もなく、設計理由もない
過剰な計画9 バージョン(v0.1〜v1.0)を計画しているが、完了したのは 1.5 個のみで、v0.3 以降はすべて推測である
保守コスト高成功指標表に 50 個の状態があり、保守が困難
バージョン番号の混乱v0.8 をスキップしており、説明がない

正しい文書タイプ ​

本ドキュメントは RFC ではなく、**プロジェクトロードマップ(Roadmap)**として管理すべきである。ロードマップは事実と短期計画を記述し、RFC は設計上の意思決定を記述する。


以下は原文の内容であり、参考のために保存している。

概要 ​

YaoXiang のバージョンリリース計画、v0.1 から v1.0 までのロードマップ。

核心的な目標:

  1. バイトコードコンパイル:REPL と段階的コンパイルをサポート
  2. セルフホスティング (Bootstrap):YaoXiang を使って YaoXiang コンパイラを記述
  3. AOT コンパイル:バイトコードからネイティブマシンコードへコンパイル

一、動機 ​

なぜバージョン計画が必要か? ​

  1. プロジェクト管理:目標を実行可能なマイルストーンに分解する
  2. ユーザーの期待:ユーザーに言語の発展段階を理解させる
  3. リソース配分:各段階の重点を明確にする
  4. リスク管理:問題を迅速に発見し方向を調整する

核心的な設計意思決定 ​

  • バイトコード優先:まずインタプリタ実行を実装し、AOT は後回し
  • 段階的デリバリー:各バージョンに実用可能な機能を持たせる
  • 後方互換性:v1.0 以前は API が変更される可能性があるが、事前通知する
  • セルフホスティング検証:セルフホスティングにより言語の表現力を証明
  • 性能の階層化:まず動作させ、その後最適化する

二、コンポーネント状態 (Phase) ​

Phaseモジュール状態位置最終更新日
P1字句解析器✅ 完了src/frontend/lexer/2025-01-23
P2型検査器✅ 完了src/frontend/typecheck/2025-01-23
P3バイトコード生成器✅ 完了src/middle/codegen/2025-01-25
P4仮想マシン✅ 完了src/middle/2025-01-25
P4.1タスクシステム✅ 完了src/backends/runtime/task.rs2025-01-23
P4.2DAGスケジューラ🔶 設計完了.claude/plan/flow-scheduler-implementation.md2026-01-04
P5標準ライブラリ⚠️ 部分完了src/std/2025-01-23
P6TUI REPL✅ 完了src/backends/dev/repl/2025-01-24
P7ジェネリクスシステム✅ 完了docs/design/rfc/011-generic-type-system.md2025-01-25

核心的な成果:

  • ✅ コンパイラフロントエンドの完全実装(P1-P2)
  • ✅ バイトコード生成と仮想マシン完了(P3-P4)
  • ✅ 基本タスクシステム完了(P4.1)
  • ✅ TUI REPL 開発完了(P6)
  • ✅ ジェネリクスシステム設計完了(P7)

次の優先事項:FlowScheduler スケジューラの実装 → 標準ライブラリの完成(P5)→ v0.1 リリース

三、バージョンロードマップ ​

v0.1:実行可能マイルストーン ✅ ​

状態:基本完了(2025-01-25)

完了済み:

  • ✅ 字句解析、構文解析、型検査が完全
  • ✅ バイトコード生成が利用可能
  • ✅ 仮想マシンが基本プログラムをインタプリタ実行可能
  • ✅ 基本 print 関数
  • ✅ TUI REPL 完了
  • ✅ 基本タスクシステム(Task/Scheduler)
$ yaoxiang run hello.yx
Hello, YaoXiang!

技術的ハイライト:

  • 三層ランタイムアーキテクチャ設計完了
  • タスクシステムの完全実装
  • TUI REPL のモダンなインターフェース
  • 統一型構文 + ジェネリクスシステム設計

未包含:完全な DAG スケジューリング(基本スケジューラは実装済み)

v0.2:FlowScheduler スケジューラ 🚧 ​

目標:完全な依存関係認識スケジューラを実装

  • ✅ 設計ドキュメント完了
  • 🔶 実装進行中
  • [ ] DAG ノードとグラフの実装
  • [ ] ワークスティーリングアルゴリズム
  • [ ] libuv IO スケジューリングエンジン
  • [ ] 遅延評価戦略
  • [ ] spawn 構文サポート

技術的重点:

  • FlowScheduler アーキテクチャの実装
  • 工業レベルの IO スケジューリング(libuv)
  • ゼロコスト抽象化

v0.3:並行プレビュー 📋 ​

目標:基本並行をサポート

  • DAG タスク依存グラフ
  • 基本スケジューラ
  • spawn 並行

v0.4:ジェネリクスシステム 📋 ​

目標:完全なジェネリクス能力

  • [ ] RFC-011 Phase 1:基本ジェネリクス
  • [ ] RFC-011 Phase 2:型制約
  • [ ] RFC-011 Phase 3:関連型
  • [ ] RFC-011 Phase 4:Const ジェネリクス
  • [ ] RFC-011 Phase 5:条件型

技術的重点:

  • デッドコード除去
  • ゼロコスト抽象化
  • 関数オーバーロード + インライン最適化

v0.5:標準ライブラリの完成 📋 ​

目標:ユーザビリティ向上

  • IO、辞書、ネットワークモジュール
  • ツールチェーン(fmt、基本 LSP)
  • 性能最適化

v0.6:エラーハンドリングシステム 📋 ​

目標:完全なエラーハンドリング

  • [ ] RFC-001 実装
  • [ ] Result 型システム
  • [ ] エラーグラフの可視化
  • [ ] DAG エラー伝播

v0.7:安定版 📋 ​

目標:API が安定に近づく

  • 完全なドキュメント
  • ツールチェーンの完成
  • 境界ケースの修正

v0.9:セルフホスティング開始 📋 ​

目標:コアモジュールを YaoXiang で書き直す

  • Lexer → Parser → TypeChecker → Codegen を段階的に置換
  • クロス検証:二つのコンパイラの結果が一致

v1.0:本番利用可能 📋 ​

目標:安定リリース

  • 完全なセルフホスティング
  • AOT コンパイル(LLVM バックエンド)
  • 本番利用可能

四、コンパイル戦略三層設計 ​

階層バージョン入力出力説明
L1: バイトコードv0.1+ソースコード (.yx)バイトコード (.yxb)VM インタプリタ実行
L2: セルフホスティングv0.9+YaoXiang ソースコードバイトコード自分を自分でコンパイル
L3: AOTv1.0+ソースコード/バイトコードマシンコードネイティブ性能

バイトコード優先の理由:

  1. REPL サポート:入力コードを即時コンパイルし、対話型開発
  2. 段階的コンパイル:単一関数の変更はその部分のみ再コンパイルすればよい
  3. プラットフォーム非依存:.yxb ファイルはプラットフォーム間で実行可能、対応するプラットフォームの VM のみ必要

五、依存関係戦略 ​

短期:Rust ライブラリを呼び出して crates.io を再利用(Cargo 寄生)

現在の依存関係:

  • 並行:parking_lot, crossbeam, rayon
  • データ構造:indexmap, hashbrown, smallvec
  • ネットワーク:tokio
  • シリアライゼーション:serde, ron

長期:独自の標準ライブラリとパッケージマネージャを構築

六、ツールチェーン ​

バージョンツール状態
v0.1yaoxiang-cli✅ 完了
v0.1TUI REPL✅ 完了
v0.2yaoxiang-debug🚧 設計中
v0.3yaoxiang-fmt📋 計画中
v0.3yaoxiang-lsp (基本)📋 計画中
v0.5yaoxiang-clippy📋 計画中
v1.0完全なツールチェーン📋 計画中

七、成功指標 ​

指標v0.1v0.2v0.3v0.5v1.0
エンドツーエンド実行✅✅✅✅✅
基本タスクシステム✅✅✅✅✅
FlowScheduler❌🚧✅✅✅
並行サポート⚠️🚧✅ 基本✅ 完全✅
標準ライブラリ基本基本基本改善完全
ジェネリクスシステム⚠️⚠️🚧✅✅
TUI REPL✅✅✅✅✅
セルフホスティング❌❌❌❌✅
AOT❌❌❌❌✅
コードカバレッジ60%70%80%90%95%

凡例:

  • ✅ 完了
  • 🚧 進行中
  • ⚠️ 部分完了
  • 📋 計画中

八、未解決問題 ​

  • [ ] JIT vs AOT のタイミング選択
  • [ ] パッケージマネージャの設計
  • [ ] セルフホスティングモジュールの置換順序
  • [ ] AOT バックエンドの選定(LLVM vs 自社開発)

九、バージョンリリース基準 ​

v0.x シリーズ:

  • 機能は完全だが境界ケースの問題が存在する可能性
  • API は変更される可能性がある
  • 学習と実験のみ

v1.0:

  • すべてのコア機能が安定
  • API 凍結
  • 本番使用に適している
  • 完全なドキュメントとチュートリアル

参考 ​