Expand description
ABI 运行时(spec §6):内存分配、u64 打包、JSON 信封。
插件作者通常不直接用本模块——register! 宏会生成
plugin_alloc / plugin_free / plugin_dispatch 三个导出并委托到这里。
Structs§
- Plugin
Error - 插件侧错误(映射为信封里的
error对象)。code取值见 spec §6.4。 - Req
- 请求信封:
{ "method": string, "params": <json> }(spec §6.4)。 - Resp
- 响应信封:
{ ok, result } | { ok, error }(spec §6.4)。
Functions§
- alloc
- 分配
size字节(对齐 1)。size=0 返回 0,不分配。 - call_
host - 插件 → 宿主调用(spec §6.3)。仅 wasm 环境可用;native 下直接报错(供单测桩用),
除非开
native-hostfeature——则路由到本地宿主替身(见 native_host.rs,仅测试用)。 - dispatch
plugin_dispatch的通用实现:解析请求信封 → 调业务闭包 → 写回响应。 入参缓冲区归宿主所有(宿主 alloc、宿主 free);返回值缓冲区由本函数 alloc、宿主读完 free。- free
- 释放
alloc分配的内存。ptr=0 或 size=0 为 no-op。 - pack
- 打包 (ptr, len) 为 u64:
(ptr << 32) | len(spec §6.2)。 - unpack
- 解包 u64 为 (ptr, len)。
- write_
out - 把一段字节写进新分配的插件内存并打包返回(宿主读完负责 plugin_free)。