2 个不稳定版本
0.1.0 | 2023年12月7日 |
---|---|
0.0.0 | 2023年1月30日 |
#404 in 异步
在 2 crates 中使用
255KB
5K SLoC
mfio
异步 I/O 系统框架
mfio 是一个一站式商店,用于自定义异步 I/O 系统。它允许你超越典型的操作系统 API。最初为 memflow 构建,旨在使 I/O 的以下方面尽可能简单:
- 异步
- 自动批量处理(向量化)
- 碎片化
- 部分成功
- 无颜色(全同步支持)
- I/O 直接到堆栈
- 无需标准库
mfio 通过围绕两个关键但微小的特质构建一切: PacketIo
,和 IoBackend
。后端实现这些特质,然后允许异步 future 被驱动完成。然后,使用高级抽象以数据包的形式将数据传递到 I/O 系统。这些数据包可以具有多个视图,以非重叠的数据段,不同的视图可以以不同的方式处理。最终结果是具有无与伦比的高效并发潜力的极其灵活的 I/O 系统。
crates
项目分为几个 crates
crates | 目的 | 状态 |
---|---|---|
mfio | 核心构建块 | Beta |
mfio-rt | 运行时构建块 | Alpha |
mfio-netfs | 网络文件系统 PoC | 实验性 |
每个状态的含义
- Beta - API 可能会更改,但已经证明相对可靠。
- Alpha - API 不完整,但尚未观察到严重错误。
- 实验性 - 不完整,且已观察到严重错误。不要在生产环境中运行。
no_std
mfio
和 mfio-rt
不需要 std
,尽管仍然需要 alloc
crate。你可以按以下方式禁用标准库要求:
mfio = { version = "0.1", default-features = false }
mfio-rt = { version = "0.1", default-features = false, features = ["virt"] }
这将添加 mfio
和 mfio-rt
作为无_std 模式下的依赖项。许多功能将被禁用,例如原生轮询句柄、原生运行时以及任何依赖运行操作系统的功能。
然而,剩余的块应该足够构建任何非阻塞 I/O 系统。可以在任意类型上实现自定义轮询句柄,以实现任何操作系统上的协作操作。
依赖项
~6–20MB
~267K SLoC