Files
hakorune/docs/CURRENT_TASK.md
Moe Charm 6b62209da9 feat(constructor): implement birth() syntax and pack transparency system
## 🌟 birth() Constructor Implementation
- Add BIRTH token to tokenizer (src/tokenizer.rs:37,403)
- Implement birth() parser support (src/parser/mod.rs)
- Add birth() interpreter support with priority system
- Priority: birth > pack > init > Box名

## 🚨 Fix Documentation Inconsistencies
- Fix delegation-system.md: pack → birth unified
- Fix box-design/README.md: add pack-specific section
- Fix LANGUAGE_GUIDE.md: birth unified, pack builtin-only
- Fix CLAUDE.md: birth philosophy, pack system separation

## 📋 pack Transparency System Design
- Create phase_8_8_pack_transparency_system.md specification
- Establish correct pack definition: builtin Box inheritance only
- Design user-transparent system: from BuiltinBox() → internal pack
- Comprehensive test cases and implementation requirements

## 🧪 Testing
- Add test_birth_simple.nyash: birth() functionality verification
- Document constructor name decision process
- Prepare for Copilot implementation with clear specifications

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-15 19:34:26 +09:00

160 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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.

# 🎯 現在のタスク (2025-08-15 Phase 10実装完了・テスト検証中)
## ✅ **Phase 10完全実装完了 - Copilot神業達成**
- **3つのCアプリ移植**: Tinyproxy/Chip-8/kilo完全実装 ✅
- **ゼロコピー検出API**: BufferBox.is_shared_with()/.share_reference()/.memory_footprint() ✅
- **テスト実行成功**: test_zero_copy_detection.nyash完全動作 ✅
- **Arc::ptr_eq()検出**: 真のゼロコピー判定実現 ✅
- **新API978行追加**: すべて正常ビルド・実行成功 ✅
## 🚨 **コンストラクタ構文統一の緊急実装 (2025-08-15)**
### **🌟 birth()実装完了 → pack透明化設計** ✅
**birth()統一構文実装完了**!次は**pack透明化システム**の実装が必要
### **🎯 pack透明化設計 - ユーザー完全不可視システム**
**核心方針**: ユーザーは`pack`を一切書かない・意識しない
### **📋 ユーザー側の理想的な書き方**
```nyash
# ✅ ユーザーはこう書くpackを一切意識しない
box EnhancedString from StringBox {
init { prefix }
birth(content, prefixStr) {
from StringBox(content) # ← シンプルな呼び出し
me.prefix = prefixStr
}
override toString() {
return me.prefix + from StringBox.toString()
}
}
```
### **🔧 実装側の内部動作**
```rust
// from StringBox(content) の解決優先度
fn resolve_builtin_delegation(builtin: &str, args: Vec<_>) -> String {
if is_builtin_box(builtin) {
// 1. ビルトインBoxの場合、内部的にpackを呼ぶ
builtin_pack_registry.call_pack(builtin, args)
} else {
// 2. ユーザー定義Boxの場合、birth優先
resolve_user_constructor(builtin, args) // birth > init > Box名
}
}
```
### **🎯 実装すべきこと**
**1. ビルトインBox自動判定**
- `is_builtin_box()` 関数実装
- StringBox, P2PBox, MathBox等をビルトイン登録
**2. pack透明化システム**
- `from BuiltinBox()` → 内部的に `BuiltinBox.pack()` 呼び出し
- ユーザーは`pack`という単語を見ない・書かない
**3. デリゲーション解決統一**
- ビルトインBox: 自動pack呼び出し
- ユーザー定義Box: birth > init > Box名 優先順位
**4. エラーメッセージ改善**
- ユーザーには「birth()がありません」と表示
- packエラーは内部ログのみ
### **🎉 期待される効果**
- **完全透明化**: ユーザーはpackを一切意識しない
- **統一体験**: `from Parent()` で全て解決
- **設計分離**: ビルトインBox内部実装とユーザーAPI完全分離
## 🔄 **次期優先タスク**
**GitHub Issue**: https://github.com/moe-charm/nyash/issues/98
**移植計画**: 3つの実用Cアプリケーション同時移植プロジェクト
### 📦 **移植対象アプリケーション**
1. **🌐 Tinyproxy** - ゼロコピー判定機能実証HTTPプロキシサーバー
2. **🎮 Chip-8エミュレーター** - fini伝播・weak参照実戦テスト
3. **✏️ kilo テキストエディター** - 「うっかり全体コピー」検出機能
### 🛠️ **新API要件実装予定**
- **ゼロコピー判定**: `BufferBox.is_shared_with()`, `share_reference()`
- **fini伝播システム**: 依存オブジェクト自動クリーンアップ
- **weak参照**: `WeakBox.is_alive()`, 循環参照防止
- **メモリ効率監視**: `Box.memory_footprint()`, リアルタイム警告
## 📈 **完了済みPhase要約**
- **Phase 8**: MIR/WASM基盤構築、13.5倍高速化実証 ✅
- **Phase 9**: AOT WASM実装、ExternCall基盤 ✅
- **Phase 9.75**: Arc<Mutex>→RwLock全変換完了 ✅
## 🔮 **今後のロードマップ**
- **Phase 9.5**: HTTPサーバー実用テスト2週間**現在ここ**
- **Phase 10**: LLVM Direct AOT4-6ヶ月、1000倍高速化目標
## 📊 **主要実績**
- **Box統一アーキテクチャ**: Arc<Mutex>二重ロック問題を根本解決
- **実行性能**: WASM 13.5倍、VM 20.4倍高速化達成
- **Everything is Box哲学**: 全11個のBox型でRwLock統一完了
## 🔥 **実装優先度**
### **🚨 Critical (即時実装)**
1. **ビルトインBox判定システム** - is_builtin_box()実装15分
2. **pack透明化解決** - from BuiltinBox()自動変換30分
3. **統合テスト作成** - 透明化動作確認10分
### **⚡ High (今週中)**
4. **エラーメッセージ改善** - pack隠蔽、birth中心メッセージ
5. **ドキュメント更新** - CLAUDE.md透明化設計反映
6. **パフォーマンス最適化** - ビルトイン判定高速化
### **📝 Medium (来週)**
7. **既存テスト見直し** - pack直接呼び出し削除
8. **delegation-system.md更新** - 透明化設計反映
### **🔮 Future (今後の予定)**
9. **FFI/ABI統合** - ExternBox経由外部APIPhase 11予定
10. **動的ライブラリ読み込み** - 外部ライブラリBox化Phase 12予定
11. **BID自動生成** - YAML→実装自動化Phase 13予定
## 🚀 **Phase 8.8: pack透明化システム実装準備完了**
### **✅ 完了事項 (2025-08-15)**
1. **birth()実装完了** - コンストラクタ統一構文実装 ✅
2. **ドキュメント矛盾修正完了** - pack機能正しい定義確立 ✅
3. **pack透明化イシュー作成完了** - Copilot実装仕様書完成 ✅
### **📋 ドキュメント修正完了リスト**
-`delegation-system.md` - pack→birth統一、pack専用セクション追加
-`box-design/README.md` - pack専用セクション追加
-`LANGUAGE_GUIDE.md` - birth統一、pack専用明記
-`CLAUDE.md` - birth哲学、pack専用システム分離
### **🎯 次のアクション (Copilot実装待ち)**
**イシュー**: `phase_8_8_pack_transparency_system.md`
#### **実装内容**
1. **ビルトインBox判定システム** - `is_builtin_box()` 関数
2. **pack透明化解決** - `from BuiltinBox()` 自動変換
3. **エラーメッセージ改善** - pack隠蔽、ユーザーフレンドリー化
#### **必須テストケース (5種類)**
- ユーザー定義Box基本動作
- ビルトインBox継承
- **透明化システム動作** (最重要)
- 混在テスト
- エラーケーステスト
#### **完了条件**
- 全テストケース PASS
- 既存機能継続動作
- パフォーマンス維持
- ユーザーはpackを一切意識しない
---
**現在状況**: pack透明化システム実装準備完了✅ → Copilot実装開始待ち🤖
**最終更新**: 2025-08-15 17:00