Files
hakorune/docs/reference/plugin-system/README.md
Moe Charm f2761004d3 feat: Add parallel HTTP server E2E tests and enhance plugin system
- Add e2e_plugin_net_additional.rs with parallel server tests
- Fix test to properly handle request objects (no double accept)
- Add comprehensive net-plugin documentation
- Implement debug tracing for method calls
- Enhance plugin lifecycle documentation
- Improve error handling in plugin loader
- Add leak tracking infrastructure (for future use)
- Update language spec with latest plugin features

This enhances test coverage for concurrent HTTP servers and improves
the overall plugin system documentation and debugging capabilities.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-22 05:01:11 +09:00

3.8 KiB
Raw Blame History

Nyash Plugin System Documentation

🎯 Quick Start

For new developers: Start with BID-FFI v1 実装仕様書

📚 Documentation Index

🟢 Current & Accurate

  • bid-ffi-v1-actual-specification.md - 主要仕様書

    • 実際に動作している実装をベースとした正確な仕様
    • FileBoxプラグインで実証済み
    • プラグイン開発者はここから始める
  • vm-plugin-integration.md - VM統合仕様書 🆕

    • VMバックエンドとプラグインシステムの統合
    • BoxRef型による統一アーキテクチャ
    • パフォーマンス最適化とエラーハンドリング
  • plugin-tester.md - プラグイン診断ツール

    • プラグインの動作確認とデバッグに使用
    • tools/plugin-testerツールの使用方法
  • plugin_lifecycle.md - ライフサイクル/RAII/シングルトン/ログ

    • 共有ハンドル、scope終了時の扱い、shutdown_plugins_v2() の動作
    • NetPluginHTTP/TCPの並列E2E時の注意点
  • net-plugin.md - NetプラグインHTTP/TCP PoC

    • GET/POST、ヘッダ、Content-Length、環境変数によるログ

⚙️ 戻り値のResult化B案サポート

  • nyash.toml のメソッド定義に returns_result = true を付けると、
    • 成功: Ok(value)ResultBox に包んで返す
    • 失敗BID負エラー: Err(ErrorBox(message)) を返す(例外にはしない)
[libraries."libnyash_example.so".ExampleBox.methods]
dangerousOp = { method_id = 10, returns_result = true }

未指定の場合は従来通り(成功=生値、失敗=例外として伝播)。

  • filebox-bid-mapping.md - 参考資料
    • FileBox APIとプラグイン実装の対応表
    • API設計の参考として有用

🔄 Migration & Reference

  • migration-guide.md - 移行ガイド
    • 古いドキュメントから現在の実装への移行方法
    • ドキュメント状況の整理

⚠️ Deprecated - 非推奨

🚀 For Plugin Developers

1. Read the Specification

# 主要仕様書を読む
cat docs/説明書/reference/plugin-system/bid-ffi-v1-actual-specification.md

2. Study Working Example

# FileBoxプラグインを参考にする
cd plugins/nyash-filebox-plugin
cat src/lib.rs

3. Configure Your Plugin

# nyash.tomlで設定
cat nyash.toml  # 実際の設定形式を確認

4. Test Your Plugin

# プラグインテスターで確認
cd tools/plugin-tester
cargo build --release
./target/release/plugin-tester check path/to/your/plugin.so

🔧 For Nyash Core Developers

Implementation Files

Next Steps

  • Phase 3: MIR ExternCall → plugin system 接続実装
  • Future: HTTP系ボックスのプラグイン化

📞 Support & Issues

  • Working Examples: plugins/nyash-filebox-plugin/
  • Issues: Report at GitHub Issues
  • Configuration: nyash.toml in project root

Status: Phase 2 Documentation Reorganization - Completed
Last Updated: 2025-08-20