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!

技術ハイライト

  • 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: 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 冻结
  • プロダクション利用に適合
  • 完全なドキュメントとチュートリアル

参考