Skip to content

EasyBot v0.0.35

Choose a tag to compare

@github-actions github-actions released this 13 Aug 18:17
· 91 commits to main since this release

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.yaml name / 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>)。