Files
hakorune/docs/private/roadmap/language-evolution/README.md

862 lines
24 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 Nyash/Hakorune 言語進化ロードマップ v2.0
**作成日**: 2025-10-02
**更新日**: 2025-10-02 - ChatGPT Pro + Claude 統合改良版
**対象**: Phase 16-30言語機能・標準ライブラリの進化
**関連**: [アーキテクチャ戦略](../architecture-strategy.md) - Rust vs セルフホスト実装戦略
---
## 📖 概要
Phase 15までの実装により、Nyash/Hakoruneは強力な基礎を確立しました。
このドキュメントは、**「コアは最小・糖衣は最強」**方針に基づく体系的な言語機能進化を定義します。
**実装方針**: [アーキテクチャ戦略](../architecture-strategy.md)に従い、Phase 19以降の新機能は**セルフホストのみ**で実装します。
---
## 🎯 **不変の設計原則(赤線)**
### **De-sugaring Contract**(最重要原則)
> **新構文は既存構文・既存Boxへ有限段で必ず落ちること。IR命令の追加は最後の手段。**
**具体的ルール**:
1. **MIR14は増やさない** - すべてデシュガリング/静的パス/標準ライブラリで実現
2. **Everything is Box/flow Main.main を維持** - Pulse は下限として利用
3. **Effects/Capabilities/Contracts は meta 側** - 言語仕様には持ち込まない
4. **例外は導入しない** - panicはVM/実装バグ用、通常はResultBoxで伝播
5. **dev→prod の挙動差は policy のみ** - warn/audit/enforce で制御
📖 **詳細**: [De-sugaring Contract](./desugaring-contract.md) に別途明記
---
## 📊 現在の強みPhase 15-16時点
### ✅ **言語機能の充実度**
1. **プロパティシステム** (stored/computed/once/birth_once) - **業界最先端レベル**
2. **🚀 マクロシステム (Phase 16実装中)** - @derive/@test等、Box-Based Macro革命
3. **postfix catch/cleanup** - 非常にモダンSwift/Kotlin風
4. **Result伝播 (? 演算子)** - Rust風エラー処理
5. **match式** - パターンマッチング
6. **Lambda式** - 高階関数サポート
7. **using/namespace** - モジュールシステム基礎
8. **flow** - stateless namespace静的関数グループ化
9. **非同期** (nowait/await/FutureBox) - 並行処理基礎
10. **演算子オーバーロード** - トレイトベース
11. **変数宣言厳密化** - メモリ・非同期安全性保証
### ✅ **Box型ライブラリ充実度**
30種類以上のBoxString/Integer/Array/Map/JSON/Regex/HTTP/GUI等
### ✅ **コンパクトな実装**
- セルフホスティングコンパイラ: **3,771行**
- Rust実装: 48,344行
- **圧縮率: 約10.7%約10分の1**
---
## 🎯 進化計画9の柱 + 糖衣5つ
**注**: マクロシステム旧🔟はPhase 16で既に実装中のため、残り9項目 + 糖衣構文5つを進化計画とします。
---
### **1⃣ 型システムの段階的強化(デシュガリング優先)**
**現状**: 型アテーションはP0では無視、実行時型エラー
**Phase**: 20-25
**優先度**: 🟡 中
**実装方針**: **完全デシュガリング** - 新しいMIR命令は追加しない
#### **Phase 20: Optional/Union型純糖衣**
```nyash
// T? → OptionBox<T> へデシュガリング
box Container {
value: IntegerBox? // 糖衣構文
get(): IntegerBox? { // 戻り値も糖衣
return me.value
}
}
// ↓ デシュガリング後
box Container {
value: OptionBox<IntegerBox>
get(): OptionBox<IntegerBox> {
return me.value
}
}
// Union型: A|B → SumBox<A,B> へデシュガリング
type Result = OkBox | ErrorBox // 糖衣構文
// ↓
type Result = SumBox<OkBox, ErrorBox>
```
**match網羅性チェック**: 静的パス(コンパイラ検査)で提供
**実装**: 既存のOptionBox/SumBoxを活用新しいBox不要
#### **Phase 22: ジェネリクス(モノモーフィック展開)**
```nyash
// Phase A: マクロ的モノモーフィック展開から開始
box Container<T> {
items: ArrayBox<T>
add(item: T) {
me.items.push(item)
}
get(index: IntegerBox): T? {
return me.items.get(index)
}
}
// 実体化: 型パラメータごとにコード生成
// Container<IntegerBox> → Container_IntegerBox
// Container<StringBox> → Container_StringBox
```
**制約**: 最初は単純型パラメータのみ(高度な制約は後回し)
#### **Phase 24: Intersection型型検査のみ**
```nyash
// Intersection: 型検査側の"特性集合"のみ
type Loggable = ConsoleBox & FileBox // capability の交差
// ランタイム表現は作らない(静的検査のみ)
```
**やらないこと**: HM型推論、row多相コスト > 便益)
**実装ステップ**:
1. Phase 20: Optional/Union型糖衣 + 網羅性チェック
2. Phase 22: ジェネリクス基礎(モノモーフィック)
3. Phase 24: Intersection型静的検査のみ
---
### **2⃣ エラーハンドリング(現状で十分・糖衣のみ)**
**現状**: ResultBox, postfix catch/cleanup基礎は良い
**Phase**: 26-28
**優先度**: 🟢 低(現状で十分実用的)
**追加する糖衣2つのみ**:
```nyash
// 1. try-else 糖衣 → Result連鎖へデシュガリング
try {
dangerousOperation()
} else { e ->
handleError(e)
}
// ↓ デシュガリング後
dangerousOperation()
.catch(fn(e) { handleError(e) })
// 2. mapError → 標準ライブラリで提供(構文は増やさない)
result.mapError(fn(e) { new AppError(e) })
```
**やらないこと**:
- カスタムエラー型階層Boxで実現可能
- panic/recover現状のpanicで十分
---
### **3⃣ テストフレームワーク統合(最優先!)** 🔴
**現状**: テスト機能なし(**最大の欠落!**
**Phase**: 16.1-17
**優先度**: 🔴 最高(開発体験向上の鍵!言語採用の決定要因)
**実装方針**: **すべてマクロで実装**MIR命令増やさない
#### **Phase 16.1: 基本テストフレームワーク**
```nyash
// @test/@describe/@it マクロ実装
@test
describe("Calculator") {
@test
it("should add numbers") {
local calc = new Calculator()
expect(calc.add(2, 3)).toBe(5)
assert(calc.value == 0)
}
@test
it("should handle errors") {
expectThrow(fn() { calc.divide(1, 0) })
}
}
```
**実体**: TestRunnerBox標準ライブラリ
#### **Phase 16.2: アサーション拡張**
```nyash
expect(value).toBe(expected) // 厳密等価
expect(value).toEqual(expected) // 深い等価
expect(value).toThrow() // 例外期待
expect(value).toBeGreaterThan(n) // 比較
expect(value).toContain(item) // 含有
```
#### **Phase 16.3: Benchmark統合** 🎯
```nyash
@bench(iterations: 1000)
benchmark_fibonacci() {
fibonacci(20)
}
// 実行: hako bench
// 出力: 平均実行時間、メモリ使用量等
```
**実体**: BenchmarkBox標準ライブラリ + `hako bench` コマンド
#### **Phase 16.4 または 17.1: Property-based testing**
```nyash
@property_test(iterations: 1000)
test_commutative_addition() forall(a: IntegerBox, b: IntegerBox) {
expect(a + b).toBe(b + a)
}
```
**生成器**: GenBox<T>(シード固定可)
#### **Phase 17: Snapshot/Mock**
```nyash
// Snapshot testing
@test
test_output() {
local result = generateReport()
snapshot("report_v1", result) // JSON保存、再現可能
}
// Mock
@mock
box MockHttpClient from HttpClient {
override get(url) {
return new MockResponse(200, "OK")
}
}
```
**重要性**:
- セルフホスティング進行中の**今こそ**導入すべき
- TDD開発体験が言語採用の鍵
- Benchmark統合で性能回帰を防止
---
### **4⃣ 並行処理の完成度向上糖衣100%**
**現状**: nowait/await/FutureBox基礎のみ
**Phase**: 21-25
**優先度**: 🟡 中
**実装方針**: **構文は最小、すべて標準ライブラリで実現**
#### **Phase 21: ChannelBox実装**
```nyash
// 標準ライブラリ実装(新構文なし)
using std.sync
local ch = new ChannelBox<IntegerBox>()
nowait producer = loop(true) {
ch.send(randomInt())
}
local value = ch.receive() // await不要
```
#### **Phase 22: 構造化並行性(糖衣)**
```nyash
// async{} → TaskGroupBox へデシュガリング
async {
nowait task1 = longTask1()
nowait task2 = longTask2()
// スコープ終了で自動待機
// エラー時は両方キャンセル
}
// ↓ デシュガリング後
local group = new TaskGroupBox()
group.spawn(fn() { longTask1() })
group.spawn(fn() { longTask2() })
group.await_all() // スコープ終了時自動
```
#### **Phase 23: Select式API合成**
```nyash
// select{} → SelectBox へデシュガリング
match select {
ch1.receive() => { handle1() }
ch2.receive() => { handle2() }
timeout(1000) => { handleTimeout() }
}
// ↓ デシュガリング後
local sel = new SelectBox()
sel.on(ch1, fn(v) { handle1() })
sel.on(ch2, fn(v) { handle2() })
sel.on_timeout(1000, fn() { handleTimeout() })
sel.run()
```
#### **Phase 24: CancelTokenBox標準化**
```nyash
// 標準ライブラリ実装
local token = new CancelTokenBox()
nowait task = longTask(token)
token.cancel() // タスク中断
```
**実装ステップ**:
1. Phase 21: ChannelBox実装標準ライブラリ
2. Phase 22: TaskGroupBox + `async{}` 糖衣
3. Phase 23: SelectBox + `select{}` 糖衣
4. Phase 24: CancelTokenBox標準化
---
### **5⃣ メモリ管理の可視性向上(メソッド化)**
**現状**: Arc<Mutex>暗黙共有、outbox/weak未活用
**Phase**: 28-30
**優先度**: 🟢 低(現状で安全)
**実装方針**: **キーワードにしない、メソッドで提供**
```nyash
// ❌ キーワード版(採用しない)
outbox result = expensiveComputation()
weak reference: ChildBox
// ✅ メソッド版(採用)
local result = expensiveComputation()
useResult(result.move()) // 所有権移転
local ref = original.share() // Arc参照増加
local weak = original.weak() // 弱参照取得
local copy = original.clone() // 深いコピー
```
**注釈meta**:
```nyash
// unique ヒントはmetaAOT最適化用
// 言語機能にはしない
@unique
local exclusive = createResource()
```
---
### **6⃣ 標準ライブラリの体系化**
**現状**: 豊富だが命名・構造が不統一
**Phase**: 16-20
**優先度**: 🟡 中(早期実施推奨)
**実装方針**: Rust std風階層 + 命名統一
#### **Phase 16: 命名規則統一計画策定**
```nyash
// ❌ Before不統一
array.length() // ArrayBox
string.len() // StringBox
map.size() // MapBox
// ✅ After統一
array.len() // すべて len() に統一
string.len()
map.len()
```
#### **Phase 17-20: 階層構造実装**
```nyash
// Rust std風階層構造
using std.collections // ArrayBox, MapBox, SetBox, QueueBox
using std.io // FileBox, StreamBox, BufferBox
using std.net // HttpClientBox, TcpBox, UdpBox
using std.sync // MutexBox, ChannelBox, AtomicBox
using std.time // TimeBox, DurationBox, TimerBox
using std.json // JSONBoxparse/stringify/schema
using std.regex // RegexBox
using std.math // MathBox
using std.console // ConsoleBox
using std.effect // 🆕 効果のNo-op/記録デバイス
using std.profile // 🆕 軽量プロファイルAPI
// Prelude自動インポート最小限
// StringBox, IntegerBox, ArrayBox, MapBox, ResultBox, OptionBox
```
**実装ステップ**:
1. Phase 16: 命名規則統一計画策定
2. Phase 17: std.collections体系化 + 命名統一実施
3. Phase 18: std.io/net/sync体系化
4. Phase 19-20: その他標準ライブラリ体系化 + std.effect/profile追加
---
### **7⃣ デバッグ・診断機能強化**
**現状**: DebugBox、基本的なprint
**Phase**: 18-20
**優先度**: 🟡 中(開発体験向上)
**実装方針**: **すべてマクロまたはBox化**
#### **Phase 18: repr()実装**
```nyash
// repr() → @derive(Debug) マクロと連携
@derive(Debug)
box Person {
name: StringBox
age: IntegerBox
}
print(str(person)) // "Person instance"
print(repr(person)) // "Person { name: "Alice", age: 25 }"
```
**実装**: `@derive(Debug)` マクロPhase 16実装済みと連携
#### **Phase 19: スタックトレース改善**
```nyash
// スタックトレースはBox化
try {
deepFunction()
} catch(e) {
print(e.stack()) // ErrorBox.stack() メソッド
}
```
**実装**: VM側で改善、ErrorBoxにメソッド追加
#### **Phase 20: プロファイラ統合**
```nyash
// @profile マクロ → std.profile API注入
@profile
calculate() {
// 実行時間・メモリ使用量を自動計測
}
// ↓ デシュガリング後
calculate() {
local _prof = ProfileBox::start("calculate")
// 元の処理
_prof.end()
}
```
**実装**: `@profile` マクロ + std.profile標準ライブラリ
**アサーション強化**:
```nyash
assert(value > 0, "value must be positive")
debug_assert(internal.isValid()) // devのみpolicy制御
static_assert(SIZE == 64, "size must be 64") // コンパイル時
```
**実装ステップ**:
1. Phase 18: repr() + @derive(Debug)連携
2. Phase 19: スタックトレース改善ErrorBox強化
3. Phase 20: @profile マクロ + アサーション強化
---
### **8⃣ ドキュメント生成機能**
**現状**: ドキュメント生成機能なし
**Phase**: 25-30
**優先度**: 🟢 低
**実装方針**: **ツール側で処理**(言語拡張は不要)
```nyash
/// Calculator Box provides basic arithmetic operations.
///
/// # Examples
/// ```nyash
/// local calc = new Calculator()
/// calc.add(2, 3) // => 5
/// ```
box Calculator {
/// The current calculation result
result: IntegerBox
/// Adds two numbers
/// # Arguments
/// - `a`: First number
/// - `b`: Second number
/// # Returns
/// Sum of a and b
add(a: IntegerBox, b: IntegerBox): IntegerBox {
return a + b
}
}
```
**コマンド**:
```bash
$ hako doc --generate # JSON IR → HTML 二段階生成
```
**二段階出力の利点**: テーマ差し替えが容易
---
### **9⃣ パッケージマネージャ完成(段階導入)**
**現状**: using system基礎実装
**Phase**: 18-20
**優先度**: 🟡 中
**実装方針**: **段階導入** - git直参照 → index-less publish → レジストリ
#### **Phase 18: git直参照 + lock.hako**
```toml
# hako.tomlCargo風
[package]
name = "my-app"
version = "0.1.0"
authors = ["Me"]
[dependencies]
http-client = { git = "https://github.com/user/http-client", tag = "v1.2.0" }
json-parser = { git = "https://github.com/user/json-parser", branch = "main" }
[dev-dependencies]
test-framework = { git = "https://github.com/hakorune/test-framework", tag = "v0.5.0" }
```
**lock.hako**: deterministic ビルド保証
#### **Phase 19: index-less publish**
```bash
$ hako publish # GitHub Releases等に直接公開
```
**レジストリ不要**: git tag ベースで依存関係解決
#### **Phase 20: レジストリ(必要が生じたら)**
```toml
[dependencies]
http-client = "1.2.0" # レジストリから取得
```
**コマンド**:
```bash
$ hako new my-project
$ hako build
$ hako test
$ hako bench # 🎯 最初から統合!
$ hako run
$ hako publish
```
**実装ステップ**:
1. Phase 18: git直参照 + lock.hakodeterministic
2. Phase 19: index-less publishGitHub Releases
3. Phase 20: レジストリ(必要なら)
---
### **🔟 マクロシステム拡張**
**現状**: ✅ **Phase 16で実装中** - Box-Based Macro革命
**実装済み**:
- @derive(Equals, ToString, Clone, Debug)
- @test マクロ + テストランナー
- AST Pattern Matching基盤
- Quote/Unquote システム
- HIRパッチ式マクロエンジン
📖 **詳細**: [Phase 16 Macro Revolution](../phases/phase-16-macro-revolution/README.md)
**Phase 17-20: 拡張**:
```nyash
// さらなる@deriveトレイト追加
@derive(Hash, Ord, Default, Serialize)
box MyBox { }
// カスタムマクロ定義(限定版)
macro benchmark(iterations) {
// パフォーマンス計測マクロ
}
// comptime計算限定版・安全領域のみ
const CONFIG = comptime {
readFile("config.toml").parse() // ビルド時評価
}
```
**制約**: Turing完全にしない安全領域のみ
**Phase**: 16実装中→ 17-20拡張
**優先度**: 🟡 中(コア実装済み、拡張は要望次第)
---
## 🍬 **糖衣構文5つ追加提案**
### **A. パイプライン演算子 `|>`** 🎯
**Phase**: 17-18テストの次
**優先度**: 🔴 高(発見性問題の解決にも効く!)
```nyash
// 読みやすさ爆増!
value |> f(_) |> g(_, 42) |> h(_)
// ↓ デシュガリング後
h(g(f(value), 42))
// 実用例
[1, 2, 3, 4, 5]
|> map(_, fn(x) { x * 2 })
|> filter(_, fn(x) { x % 3 == 0 })
|> reduce(_, 0, fn(acc, x) { acc + x })
```
**効果**: Cookbook/Recipe集の可読性向上、if連鎖問題の緩和
---
### **B. 名前付き引数**
**Phase**: 18-19
**優先度**: 🟡 中
```nyash
// 可読性UP
download(url: u, timeout: 3.s, retry: 5)
// ↓ デシュガリング後(位置引数 + デフォルト補完)
download(u, 3.s, 5)
// デフォルト引数との相性良い
download(url: u) // timeout, retry はデフォルト値
```
---
### **C. `with capability` スコープ(視覚糖衣)**
**Phase**: 20-22
**優先度**: 🟢 低(開発体験向上)
```nyash
// 効果システムを言語機能にしない賢い方法
with net.out, fs.read {
http.get("https://api.example.com")
file.read("config.txt")
}
// ↓ 実際は何も変えない(ログに印を出すだけ)
// metaレイヤーで処理
```
**効果**: 視覚的な開発体験向上、capability明示
---
### **D. `comptime`(限定版)**
**Phase**: 22-25
**優先度**: 🟡 中
```nyash
// ビルド時評価(限定版)
const CONFIG = comptime {
readFile("config.toml").parse()
}
// 定数埋め込み
const VERSION = comptime { "1.0.0" }
```
**制約**:
- Turing完全にしない
- 読み込みと定数計算のみ
- YAGNI原則遵守
---
### **E. パターン別名Pattern Synonyms**
**Phase**: 23-25
**優先度**: 🟢 低
```nyash
// パターン別名で可読性UP
pattern Some(x) = OptionBox::Some(x)
pattern None = OptionBox::None
match value {
Some(x) => process(x)
None => handleError()
}
```
---
## 🎯 **デシュガリング規則一覧**
| 構文 | デシュガリング後 | Phase |
|------|----------------|-------|
| `T?` | `OptionBox<T>` | 20 |
| `A\|B` | `SumBox<A,B>` | 20 |
| `x \|> f(_)` | `f(x)` | 17-18 |
| `f(a:1, b:2)` | `f(1,2)` | 18-19 |
| `async { body }` | `TaskGroupBox::scoped(fn() { ... })` | 22 |
| `select { a=>x; b=>y }` | `SelectBox::new().on(a, fn(v){x}).on(b, fn(v){y}).run()` | 23 |
| `@test it("..."){...}` | `TestRunnerBox::register(fn(){...})` | 16.1 |
| `@bench(iter:N) { ... }` | ベンチハーネス呼び出し | 16.3 |
| `@profile { ... }` | `ProfileBox::start()` + 処理 + `.end()` | 20 |
| `repr(obj)` | `@derive(Debug)` マクロ連携 | 18 |
| `x.move()` | 所有権移転メソッド | 28 |
| `x.share()` | Arc参照増加メソッド | 28 |
| `x.weak()` | 弱参照取得メソッド | 28 |
---
## 📅 実装タイムライン(優先順位付き)
### **Phase 16-17: 基礎固め + 発見性問題解決** 🔴
**Phase 16現在**:
1. 🚀 **マクロシステム完成** - @derive/@test完全動作
- 16.1: 基本テストフレームワークdescribe/it/expect
- 16.2: アサーション拡張toBe/toEqual/toThrow
- 16.3: **Benchmark統合** (`@bench`, `hako bench`)
- 16.4: Property-based testingGenBox
2. 🟡 **標準ライブラリ命名規則統一計画策定**
**Phase 17次の大目標**:
3. 🔴 **Cookbook/Recipe集作成** - [Discoverability問題](./discoverability-analysis.md)解決の要
- `docs/cookbook/patterns/` - ルックアップテーブル、文字列解析等
- `docs/cookbook/anti-patterns/` - if連鎖のアンチパターン等
- `docs/cookbook/refactoring/` - if→match変換等
4. 🔴 **Linter基礎実装** - Anti-Pattern検出開始
5. 🟡 **パイプライン演算子 `|>`** - 可読性向上
6. 🟡 **std.collections体系化 + 命名統一実施** (`len()` 統一)
7. 🟢 **Snapshot/Mock機能** - テスト完成
### **Phase 18-20: 開発体験向上** 🟡
**Phase 18**:
8. 🟡 **名前付き引数**
9. 🟡 **repr() + @derive(Debug)連携**
10. 🟡 **std.io/net/sync体系化**
11. 🟡 **パッケージマネージャgit直参照 + lock.hako**
**Phase 19**:
12. 🟡 **スタックトレース改善**ErrorBox強化
13. 🟡 **Linter拡充** - 自動リファクタリング提案
14. 🟡 **パッケージマネージャindex-less publish**
15. 🟡 **その他標準ライブラリ体系化** + std.effect/profile追加
**Phase 20**:
16. 🟡 **@profile マクロ + アサーション強化**
17. 🟡 **Optional/Union型糖衣** (`T?`, `A|B`)
18. 🟡 **パッケージマネージャ完成**(必要ならレジストリ)
### **Phase 21-25: 高度機能** 🟡
**Phase 21-24**:
19. 🟡 **並行処理完成**
- 21: ChannelBox
- 22: TaskGroupBox + `async{}` 糖衣 + ジェネリクス基礎
- 23: SelectBox + `select{}` 糖衣 + パターン別名
- 24: CancelTokenBox + Intersection型静的検査のみ
20. 🟢 **`with capability` スコープ**(視覚糖衣)
21. 🟢 **`comptime`(限定版)**
**Phase 25**:
22. 🟡 **ドキュメント生成** (`hako doc`)
### **Phase 26-30: 洗練** 🟢
23. 🟢 **エラーハンドリング糖衣** (`try-else`, `mapError`)
24. 🟢 **メモリ管理メソッド** (`move()`, `share()`, `weak()`)
25. 🟢 **マクロシステム拡張** (@derive拡充、カスタムマクロ)
---
## 💡 設計原則の再確認
### **1. De-sugaring Contract 遵守**
- 新構文は既存構文・既存Boxへ有限段で必ず落ちる
- MIR14命令セットは増やさない
### **2. Everything is Box哲学の維持**
- すべての新機能はBox化して提供
- 一貫性を最優先
### **3. セルフホスティング優先**
- Rust実装で先行実装 → セルフホストで再実装
- セルフホストでの実装容易性を考慮した設計
### **4. YAGNI原則遵守**
- マクロシステムは実際の要望が出てから拡張
- 型システム強化はopt-in段階的導入
- メモリ管理可視性は現状で十分安全
### **5. 後方互換性**
- 既存コードを壊さない
- 新機能はopt-inまたは新構文で提供
---
## 🎊 まとめ
### **Phase 16-17: テスト+発見性問題解決**
**@test/@bench/@derive完全動作** - Box-Based Macro革命完成
**Cookbook/Recipe集 + Linter** - 発見性問題の根本解決
**パイプライン演算子 `|>`** - 可読性爆増
**標準ライブラリ命名統一** - 開発体験の一貫性向上
### **現在の設計の優秀さ**
- **プロパティシステム**once/birth_onceは**業界最先端レベル**
- **マクロシステム**Phase 16実装中はBox-Based設計で革新的
- **postfix catch/cleanup**は非常に直感的
- **Everything is Box哲学**が一貫している
- **コンパクトな実装**Rust実装の約10分の1
### **長期ビジョン**
Phase 16-30を通じて、実用的で表現力豊かな言語へと進化。
**マクロシステム・プロパティシステム・型システムの三位一体**で、
**「コアは最小・糖衣は最強」** - 次世代言語の標準を打ち立てる。
---
**作成者**: Claude Sonnet 4.5 + ChatGPT Pro
**ベース**:
- [language-evolution.md v1](./v1-original.md) - Claude初版
- ChatGPT Pro深層分析・改良提案
- [Discoverability問題分析](./discoverability-analysis.md)
- [De-sugaring Contract](./desugaring-contract.md)
**更新履歴**:
- 2025-10-02: Claude初版作成
- 2025-10-02: ChatGPT Pro + Claude 統合改良版作成