Phase 113 で公開した .hako API は変更なく、内部実装を完全統一化。 FsApi(Ring0 stateless)と FileIo(Ring1 stateful)の設計を確立。 【実装内容】 Task 1: FileIo trait 拡張 - FileStat 構造体追加(is_file/is_dir/size) - exists/stat/canonicalize メソッド追加(FileIo trait) Task 2: Ring0FsFileIo 実装 - exists(): path を Ring0.fs で確認 - stat(): Ring0.fs.metadata() を FileStat に変換 - canonicalize(): Ring0.fs.canonicalize() を String に変換 Task 3: NoFsFileIo stub 実装 - exists() → false(全ファイルが「存在しない」扱い) - stat() → Err(Unsupported)(FS 無効情報を返す) - canonicalize() → Err(Unsupported) Task 4: FileHandleBox 内部統一 - metadata_internal() を新規追加(FileIo::stat() ベース) - is_file/is_dir/size を metadata_internal() 経由に統一 - Nyash 公開 API(ny_exists/ny_size/ny_isFile/ny_isDir)は変更なし Task 5: テスト + ドキュメント - Ring0FsFileIo: 5テスト(stat/exists/canonicalize) - NoFsFileIo: 3テスト(exist/stat/canonicalize error) - FileHandleBox: 5テスト(metadata_internal/exists/is_file/is_dir) - すべてのテスト PASS 【設計原則確立】 FsApi ↔ FileIo の責務分担: - FsApi (Ring0): Stateless(パスを毎回指定) - FileIo (Ring1): Stateful(path を内部保持) - FileHandleBox: FileIo::stat() で一元化 Profile 別動作: - Default: 全機能正常動作 - NoFs: exists=false, stat/canonicalize は Unsupported エラー 【統計】 - 修正ファイル: 9ファイル - 追加行: +432行、削除: -29行 - 新規テスト: 13個(全PASS) - ビルド: SUCCESS 【効果】 - 内部実装が完全統一(二重実装・不一貫性排除) - Phase 115+ での拡張(modified_time/permissions等)が容易に - FsApi と FileIo の設計がクリアに確立 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
Nyash Development Documentation 🔧
開発者向けの進行中タスクと開発計画ドキュメントです。
📂 ディレクトリ構造
current/
CURRENT_TASK.md- 現在進行中のタスク- アクティブな開発作業の詳細
- 最新の実装状況
roadmap/
- phases/ - フェーズ別開発計画
- phase-8/ - AST→MIR変換
- phase-9/ - VM/JIT実装
- phase-10/ - AOT最適化
- native-plan/ - ネイティブビルド計画
- 実行バックエンド統合
- パフォーマンス目標
proposals/
- RFC(Request for Comments)
- 新機能提案
- 設計ディスカッション
🎯 重要な参照先
- 進行状況:
current/CURRENT_TASK.md - 開発計画:
roadmap/phases/ - 技術提案:
proposals/
📝 注意事項
このディレクトリの内容は開発中であり、頻繁に変更されます。
安定した仕様はreference/を参照してください。