Files
hakorune/docs/CURRENT_TASK.md
Moe Charm cc8553380c feat: Add multi-box plugin support (v2) with test implementation
- 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>
2025-08-19 01:13:48 +09:00

8.6 KiB
Raw Blame History

🎯 現在のタスク (2025-08-18 更新)

SSA形式ループ実装 - 完了!

🎉 最終完了報告2025-08-18

  • MIRビルダーでphi nodeを正しく生成するループ実装完了
  • sealed/unsealedブロック概念を導入
  • ループビルダーを別ファイルloop_builder.rsに分離
  • VMのphi命令実装を完全修正
    • 問題Phi nodeのキャッシュが古い値を返していた
    • 解決vm_phi.rsモジュールを作成し、キャッシュを無効化

🎊 修正内容と成果

  1. 根本原因

    • Phi nodeが初回実行時の値をキャッシュし、2回目以降は古い値を返していた
    • ループ変数が更新されず、無限ループが発生
  2. 解決策

    • vm_phi.rsモジュールでループ実行ロジックを分離MIRのloop_builder.rsと同様の設計
    • Phi nodeのキャッシュを無効化し、毎回正しい値を計算
    • previous_blockの追跡とデバッグログで問題を特定
  3. 動作確認

    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"
}

実装方針

  1. nyash.tomlを段階的に拡張後方互換維持
  2. 拡張されたnyash.tomlから各バックエンド用コード生成
  3. 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完全ドキュメント

VM性能改善関連

🔧 現在進行中マルチ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"]
}

実装フェーズ

  1. Phase 1: plugin-tester拡張進行中

    • 複数Box型の検出機能
    • 各Box型のメソッド検証
  2. Phase 2: テストプラグイン作成

    • 簡単な複数Box型プラグイン
    • FFI実装確認
  3. 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型対応開始

🎯 次のアクション

  1. plugin-testerを複数Box型対応に拡張
  2. 簡単な複数Box型プラグインのテスト作成
  3. Nyash本体のローダーを複数Box型対応に拡張
  4. 複数Box型の読み込みテスト実施