#plugin-system #process #stdin #stdout #generics #stdio-based

nightly io-plugin

基于stdio的插件系统

11 个版本 (4 个重大变更)

0.6.0 2024年1月14日
0.5.4 2024年1月6日
0.4.3 2024年1月1日
0.4.2 2023年12月31日
0.1.0 2023年12月27日

#26 in #plugin-system

Download history 3/week @ 2024-03-09 69/week @ 2024-03-30 14/week @ 2024-04-06

每月140次下载

GPL-3.0-only

10KB
180 代码行数,不包括注释

IO-Plugin

IO-Plugin 是一个 Rust 包,它允许基于以下模型轻松创建插件系统:

  1. 宿主通过运行它们的可执行文件来启动其插件的实例
  2. 宿主在插件进程的 stdin 上发送序列化消息
  3. 宿主在插件进程的 stdout 上接收序列化响应

理论上,也可以使用其他语言创建插件,但它们的接口必须手动确定。消息目前使用 serde-cbor 进行序列化(这取决于我的决定 - 尽管我预计会坚持使用 serde 支持的格式)。

使用示例可在 ./io-plugins-test 下找到

检查清单

  • 确定将提供的枚举转换为各种相关数据结构的结构
  • 编写一个宏将上述枚举转换为数据结构
  • 属性转发(不仅仅是文档)
  • 创建合理的默认实现(除了插件特质方法)
  • 支持泛型(类型仅限 - 没有生命周期)
  • 允许提供自定义默认实现(例如 - 输出插件编译所针对的接口版本)
  • 提高错误信息的清晰度(可能有一些无效的用法会导致不明确的错误)

依赖项

~6–18MB
~203K SLoC