Repository navigation
EasyBot v0.0.35
Fixed
-
gateway.local.yaml覆盖合并不再注入结构体默认值 — 修复本地覆盖配置合并的
serde 默认值注入 bug:此前gateway.local.yaml经load_config反序列化为完整
GatewayConfig(缺失键被默认值补齐,如server.host默认127.0.0.1)再序列化
合并,默认值被当成"显式字段"覆盖基础配置(容器基础配置server.host=0.0.0.0
被覆盖为127.0.0.1,监听退回容器回环,经反向代理/隧道的公网入口 502)。现本地
覆盖改走load_config_value按原始 YAML Value 合并,只合并文件显式写出的键;
合并后仍校验 webhook 防 SSRF。覆盖文件不再需要显式重复server.host: "0.0.0.0"。 -
FFI 分配器契约(行为变更) — 移除宿主
#[global_allocator]mimalloc(bin/
的main.rs/Cargo.toml),宿主与进程内 dlopen 的插件共用默认系统分配器。
此前宿主 mimalloc + 插件系统 malloc 时,跨 FFI 的 String/Vec/Value 所有权转移会
交叉 free → SIGABRT;插件各自静态链接 mimalloc 则进程内两套堆 → 析构死锁。
现在插件保持默认分配器即可安全收发消息。详见docs/17 plugin-methodology.md
「FFI 分配器契约」。 -
插件 FFI 分配器契约(宿主侧,
PluginAdapterProxy) —PluginLoader::create_adapter()
改为返回PluginAdapterProxy:宿主只借读插件返回的Box<Box<dyn PlatformAdapter>>
胖指针(ptr::read+ManuallyDrop,不取得所有权),代理 Drop 时调用插件的
easybot_plugin_destroy——谁分配谁释放。此前宿主Box::from_raw后用自己的
分配器释放插件分配的内存:macOS 两侧共享系统 libc 无感;Linux 宿主是 musl-static,
与插件 malloc 各一份堆,跨堆释放即 UB(SIGABRT / 堆损坏)。符号不变、无需 ABI bump,
向后兼容;加载路径经mock-adapter真实 cdylib 端到端验证。
Added
- 插件命名规则 — 官方插件统一
easybot-xxx前缀,且同一个名字贯穿仓库名 /
[package].name/ cdylib 产物 /plugin.yamlname /platform_name()/ 市场安装名。
详见docs/16 plugin-guide.md「命名规则」。 - 主仓与入门样例解耦 — 官方入门样例独立为
EasyIndie/easybot-hello-adapter
(教学样例仓库,含插件开发指南,与主仓仅文档/链接互引);本仓库移除
plugins/example-hello-adapter/(workspace 成员已裁剪,Cargo.lock 同步清理)。
Changed
- 市场目录仓库重命名 —
EasyIndie/EasyBot-Plugins→EasyIndie/EasyBot-Registry。
默认注册源与DEFAULT_CATALOG_REPO同步更新;旧仓库名经 GitHub 301 重定向,
历史链接仍可用。安装/搜索/更新行为不变(easybot plugin install <pub>/<name>)。