- Extend plugin-tester to support multi-box plugins with v2 API - Add nyash_plugin_get_box_count/get_box_info/get_type_id functions - Create test multi-box plugin providing TestBoxA and TestBoxB - Update plugin-system.md documentation for v2 format - Add nyash.toml v2 specification for multi-box support - Successfully tested multi-box plugin lifecycle and type resolution This enables one plugin to provide multiple Box types, solving the dependency issue where HTTPServerBox needs SocketBox. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
8.6 KiB
8.6 KiB
🎯 現在のタスク (2025-08-18 更新)
✅ SSA形式ループ実装 - 完了! ✅
🎉 最終完了報告(2025-08-18)
- ✅ MIRビルダーでphi nodeを正しく生成するループ実装完了
- ✅ sealed/unsealedブロック概念を導入
- ✅ ループビルダーを別ファイル(loop_builder.rs)に分離
- ✅ VMのphi命令実装を完全修正!
- 問題:Phi nodeのキャッシュが古い値を返していた
- 解決:vm_phi.rsモジュールを作成し、キャッシュを無効化
🎊 修正内容と成果
-
根本原因
- Phi nodeが初回実行時の値をキャッシュし、2回目以降は古い値を返していた
- ループ変数が更新されず、無限ループが発生
-
解決策
- vm_phi.rsモジュールでループ実行ロジックを分離(MIRのloop_builder.rsと同様の設計)
- Phi nodeのキャッシュを無効化し、毎回正しい値を計算
- previous_blockの追跡とデバッグログで問題を特定
-
動作確認
Before loop: i = 1 In loop: i = 1 After increment: i = 2 In loop: i = 2 After increment: i = 3 In loop: i = 3 After increment: i = 4 After loop: i = 4完璧に動作!SSA形式のループがVMで正しく実行されています。
🎊 Phase 9.75g-0 BID-FFI Plugin System - 完全完了! 🎊
✅ 最終完了項目(2025-08-19)
- ✅ plugin-tester型情報検証機能(nyash.toml読み込み、型チェック)
- ✅ plugin-tester重複メソッド名チェック(Nyash関数オーバーロード不採用対応)
- ✅ Phase 9.75g-0完了ドキュメント作成(200行包括的開発者ガイド)
- ✅ セグフォルト修正(HostVtable生存期間問題解決)
- ✅ 型情報管理システム実装(nyash.toml外部化、ハードコード完全削除)
🚀 革命的成果
NyashがプラグインでBox型を動的拡張可能に!
// これが現実になった!
local file = new FileBox() // プラグイン提供
local db = new PostgreSQLBox() // 将来: プラグイン提供
local gpu = new CudaBox() // 将来: プラグイン提供
✅ Phase 8.6 VM性能改善 - 完了!
🎉 VM性能改善 - 大成功報告!
- 従来: VMがインタープリターより0.9倍遅い(性能回帰)
- 🚀 最終達成: VM 50.94倍高速化達成! (2025-08-20測定)
- 期間: 1日で完了(2025-08-19)
- 担当: Copilot主導(GitHub Issue #112, PR #113)
📊 技術詳細と成果
- MIR仕様: 26命令(ExternCall含む)で完全確定
- VM実装: 26命令MIR → バイトコード実行
- 改善内容:
- Phase 1: デバッグ出力削除 → 18.84倍高速化
- Phase 3: メモリ最適化 → 22.80倍高速化
- 最終結果: 50.94倍高速化
- ベンチマーク結果 (2025-08-20):
- インタープリター: 78.66ms (1,271 ops/sec)
- VM: 1.54ms (64,761 ops/sec)
- 性能向上率: 50.94倍 🚀
- 詳細:
docs/予定/native-plan/issues/phase_8_6_vm_performance_improvement.md
🚀 Phase 9.78: LLVM PoC → Phase 9.8: BID Registry移行決定!
戦略的転換(2025-08-21)
- ✅ LLVM PoC基盤完成(MIR生成修正、モック実装)
- ✅ Phase 9.8 BIDレジストリへの移行決定
- ✅ 重要な発見:nyash.tomlが既に完璧な型情報を持っている!
- 🔄 新方針:nyash.tomlを拡張してBID機能を統合
技術的成果
- モックLLVM統合:
--backend llvmオプション動作確認 - アーキテクチャ実証: MIR → LLVM変換パス確立
- CI/CD対応: 外部依存なしでテスト可能
革命的Windows戦略
- 1回のIR生成で全OS対応: Bitcodeキャッシュ戦略
- PAL設計: Platform Abstraction Layer構想
- 将来: APE単一バイナリ: 小規模ツール向け
📦 Phase 9.8: BID Registry + Code Generation - 開始!
革命的発見:nyash.toml活用戦略(2025-08-21)
既存のnyash.tomlに必要な型情報がほぼ完備されていることが判明!
現在のnyash.toml
[plugins.FileBox.methods]
read = { args = [] }
write = { args = [{ from = "string", to = "bytes" }] }
open = { args = [
{ name = "path", from = "string", to = "string" },
{ name = "mode", from = "string", to = "string" }
] }
拡張案(Phase 9.8 + 9.9統合)
[plugins.FileBox.methods]
read = {
args = [],
returns = "string",
permissions = ["storage:read"],
effects = ["io"],
description = "Read file contents"
}
実装方針
- nyash.tomlを段階的に拡張(後方互換維持)
- 拡張されたnyash.tomlから各バックエンド用コード生成
- BID YAMLは大規模プラグイン用のオプションとして提供
🌟 重要な戦略的決定
- BID実装方針: nyash.toml拡張を優先(新規YAML不要)
- Phase 9.8 + 9.9統合: FileBoxがVMで権限制御付きで動作することをゴールに
- 優先順位: VM性能(完了) → BIDレジストリ → 権限モデル → LLVM本格実装
最終目標
- インタープリター併用戦略: 開発時(即時実行)+ 本番時(AOT高性能)
- 4バックエンド対応: Interpreter/VM/WASM/AOT
- プラグインエコシステム: 無限拡張可能なBox型システム
📚 参考資料
BID-FFI Plugin System完全ドキュメント
- Phase 9.75g-0完了ドキュメント - 包括的開発者ガイド
- ffi-abi-specification.md - BID-1技術仕様
- plugin-tester使用例 - プラグイン診断ツール
VM性能改善関連
- phase_8_6_vm_performance_improvement.md - 詳細技術分析
- copilot_issues.txt - 全体開発計画
🔧 現在進行中:マルチBox型プラグイン対応(2025-08-18開始)
目的
- 依存関係の解決: HTTPServerBoxとSocketBoxを同一プラグインに
- 効率的な配布: 関連Box群を1つのライブラリで提供
- ビルド時間短縮: 3分 → 30秒以下
nyash.toml v2設計
[plugins.libraries]
"nyash-network" = {
plugin_path = "libnyash_network.so",
provides = ["SocketBox", "HTTPServerBox", "HTTPRequestBox", "HTTPResponseBox", "HttpClientBox"]
}
実装フェーズ
-
Phase 1: plugin-tester拡張(進行中)
- 複数Box型の検出機能
- 各Box型のメソッド検証
-
Phase 2: テストプラグイン作成
- 簡単な複数Box型プラグイン
- FFI実装確認
-
Phase 3: Nyash本体対応
- nyash.toml v2パーサー
- マルチBox型ローダー
進捗状況
- ✅ nyash.toml v2仕様策定完了
- ✅ plugin-system.mdドキュメント更新
- 🔄 plugin-tester拡張作業開始
📋 今日の重要決定事項(2025年8月18日)
1. CopilotのPR管理戦略
- ✅ 大規模変更(1,735行)を含むPR #117をrevert
- ✅ 必要な新規ファイルのみ選択的に抽出・保存
- ✅ cli.rs/runner.rsへの大幅変更は取り込まない方針
2. Copilot成果物の保存
- BID変換部分:
src/bid-converter-copilot/(TLV、型変換) - コード生成部分:
src/bid-codegen-from-copilot/(各言語向け生成) - 活用方針: 将来的にnyash2.toml実装時に参考資料として使用
3. 開発優先順位の明確化
1. 🔄 ビルトインBoxプラグイン化(HttpBox系から開始)
2. → Phase 9.8 BIDレジストリ(nyash.toml拡張方式)
3. → Phase 9.9 権限モデル(FileBoxで実証)
4. → Phase 10 LLVM本格実装(将来検討)
4. 選択的pull戦略の確立
- 原則: 必要な機能だけを取り込む
- 判断基準: 現在の目標との関連性、複雑性、保守性
- 実践: 新規ファイルは別フォルダに保存、既存ファイルの大幅変更は慎重に
最終更新: 2025年8月18日
次回レビュー: マルチBox型プラグイン対応完了時
開発状況: nyash.toml v2(マルチBox型)対応開始
🎯 次のアクション
- plugin-testerを複数Box型対応に拡張
- 簡単な複数Box型プラグインのテスト作成
- Nyash本体のローダーを複数Box型対応に拡張
- 複数Box型の読み込みテスト実施