Files
hakorune/nyash.toml
Moe Charm cc2a820af7 feat(plugin): Fix plugin BoxRef return and Box argument support
- Fixed deadlock in FileBox plugin copyFrom implementation (single lock)
- Added TLV Handle (tag=8) parsing in calls.rs for returned BoxRefs
- Improved plugin loader with config path consistency and detailed logging
- Fixed loader routing for proper Handle type_id/fini_method_id resolution
- Added detailed logging for TLV encoding/decoding in plugin_loader_v2

Test docs/examples/plugin_boxref_return.nyash now works correctly:
- cloneSelf() returns FileBox Handle properly
- copyFrom(Box) accepts plugin Box arguments
- Both FileBox instances close and fini correctly

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-21 00:41:26 +09:00

45 lines
1.4 KiB
TOML
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.

# Nyash Configuration File v2
# マルチBox型プラグイン対応
[libraries]
# ライブラリ定義1つのプラグインで複数のBox型を提供可能
[libraries."libnyash_filebox_plugin.so"]
boxes = ["FileBox"]
path = "./plugins/nyash-filebox-plugin/target/release/libnyash_filebox_plugin.so"
# 将来の拡張例:
# "libnyash_database_plugin.so" = {
# boxes = ["PostgreSQLBox", "MySQLBox", "SQLiteBox"],
# path = "./target/release/libnyash_database_plugin.so"
# }
# FileBoxの型情報定義
[libraries."libnyash_filebox_plugin.so".FileBox]
type_id = 6
[libraries."libnyash_filebox_plugin.so".FileBox.methods]
# 全メソッドをmethod_idと共に定義
birth = { method_id = 0 }
open = { method_id = 1, args = ["path", "mode"] }
read = { method_id = 2 }
write = { method_id = 3, args = ["data"] }
close = { method_id = 4 }
fini = { method_id = 4294967295 }
# v2.1: Box引数を受け取るメソッド宣言FileBox: copyFrom(other: Handle)
copyFrom = { method_id = 7, args = [ { kind = "box", category = "plugin" } ] }
# v2.2: BoxRef(Handle)を返すメソッド宣言
cloneSelf = { method_id = 8 }
[plugin_paths]
# プラグインの検索パス(デフォルト)
search_paths = [
"./target/release",
"./target/debug",
"./plugins/*/target/release",
"./plugins/*/target/debug",
"/usr/local/lib/nyash/plugins",
"~/.nyash/plugins"
]