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 までのロードマップ。
コア目標:
- バイトコードコンパイル:REPL と漸進的コンパイルをサポート
- 自挙 (Bootstrap):YaoXiang で YaoXiang コンパイラを作成
- AOT コンパイル:バイトコードをネイティブマシンコードにコンパイル
一、動機
なぜバージョニング計画が必要なのか?
- プロジェクト管理:目標を実行可能なマイルストーンに分解する
- ユーザー期待:ユーザーに言語の発展段階を理解させる
- リソース配分:各段階の重点を明確にする
- リスク管理:問題を適時に発見し、方向を調整する
コア設計意思決定
- バイトコード優先:まずインタプリタ実行を実装し、その後 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.rs | 2025-01-23 |
| P4.2 | DAGスケジューラ | 🔶 設計完成 | .claude/plan/flow-scheduler-implementation.md | 2026-01-04 |
| P5 | 標準ライブラリ | ⚠️ 部分完成 | src/std/ | 2025-01-23 |
| P6 | TUI REPL | ✅ 完成 | src/backends/dev/repl/ | 2025-01-24 |
| P7 | ジェネリクスシステム | ✅ 完成 | docs/design/rfc/011-generic-type-system.md | 2025-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!技術ハイライト:
- 3層ランタイムアーキテクチャ設計完了
- タスクシステムの完全な実装
- 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 を段階的に置換
- 交差検証:2つのコンパイラの出力結果が一貫
v1.0:プロダクション利用可能 📋
目標:安定したリリース
- 完全な自挙
- AOT コンパイル(LLVM バックエンド)
- プロダクション利用可能
四、コンパイル戦略の3層設計
| 层级 | バージョン | 入力 | 出力 | 説明 |
|---|---|---|---|---|
| L1: バイトコード | v0.1+ | ソースコード (.yx) | バイトコード (.yxb) | VM で解釈実行 |
| L2: 自挙 | v0.9+ | YaoXiang ソースコード | バイトコード | 自己をコンパイル |
| L3: AOT | v1.0+ | ソースコード/バイトコード | マシンコード | ネイティブパフォーマンス |
バイトコード優先の理由:
- REPL サポート:入力コードを即座にコンパイル、インタラクティブ開発
- 漸進的コンパイル:単一関数を修正只需その部分のみ再コンパイル
- プラットフォーム非依存:.yxb ファイルはクロスプラットフォーム実行可能、対応プラットフォームの VM のみ必要
五、依存関係戦略
短期:Rust ライブラリの呼び出しにより crates.io を再利用(Cargo 寄生)
現在の依存関係:
- 並行:parking_lot, crossbeam, rayon
- データ構造:indexmap, hashbrown, smallvec
- ネットワーク:tokio
- シリアライゼーション:serde, ron
長期:自作の標準ライブラリとパッケージマネージャー
六、ツールチェーン
| バージョン | ツール | 状態 |
|---|---|---|
| v0.1 | yaoxiang-cli | ✅ 完成済 |
| v0.1 | TUI REPL | ✅ 完成済 |
| v0.2 | yaoxiang-debug | 🚧 設計中 |
| v0.3 | yaoxiang-fmt | 📋 計画中 |
| v0.3 | yaoxiang-lsp (基本) | 📋 計画中 |
| v0.5 | yaoxiang-clippy | 📋 計画中 |
| v1.0 | 完全なツールチェーン | 📋 計画中 |
七、成功指標
| 指標 | v0.1 | v0.2 | v0.3 | v0.5 | v1.0 |
|---|---|---|---|---|---|
| エンドツーエンド実行 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 基本的なタスクシステム | ✅ | ✅ | ✅ | ✅ | ✅ |
| FlowScheduler | ❌ | 🚧 | ✅ | ✅ | ✅ |
| 並行サポート | ⚠️ | 🚧 | ✅ 基本 | ✅ 完全 | ✅ |
| 標準ライブラリ | 基本 | 基本 | 基本 | 改善 | 完全 |
| ジェネリクスシステム | ⚠️ | ⚠️ | 🚧 | ✅ | ✅ |
| TUI REPL | ✅ | ✅ | ✅ | ✅ | ✅ |
| 自挙 | ❌ | ❌ | ❌ | ❌ | ✅ |
| AOT | ❌ | ❌ | ❌ | ❌ | ✅ |
| コードカバレッジ | 60% | 70% | 80% | 90% | 95% |
凡例:
- ✅ 完成済み
- 🚧 進行中
- ⚠️ 部分完成
- 📋 計画中
八、開放問題
- [ ] JIT vs AOT のタイミング選択
- [ ] パッケージマネージャー設計
- [ ] 自挙モジュールの置換順序
- [ ] AOT バックエンド選択(LLVM vs 自作)
九、バージョンリリース基準
v0.x シリーズ:
- 機能完成だが、エッジケースの問題が存在する可能性あり
- API は変更される可能性あり
- 学習と実験のみを目的
v1.0:
- すべてのコア機能が安定
- API 冻结
- プロダクション利用に適合
- 完全なドキュメントとチュートリアル
