#async-io #io #completion #async #memflow

no-std mfio

灵活的完成 I/O 原语

2 个不稳定版本

0.1.0 2023年12月7日
0.0.0 2023年1月30日

#404 in 异步


2 crates 中使用

MIT 许可证

255KB
5K SLoC

mfio

Build and test Rustc 1.74 codecov

异步 I/O 系统框架

mfio 是一个一站式商店,用于自定义异步 I/O 系统。它允许你超越典型的操作系统 API。最初为 memflow 构建,旨在使 I/O 的以下方面尽可能简单:

  1. 异步
  2. 自动批量处理(向量化)
  3. 碎片化
  4. 部分成功
  5. 无颜色(全同步支持)
  6. I/O 直接到堆栈
  7. 无需标准库

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

mfiomfio-rt 不需要 std,尽管仍然需要 alloc crate。你可以按以下方式禁用标准库要求:

mfio = { version = "0.1", default-features = false }
mfio-rt = { version = "0.1", default-features = false, features = ["virt"] }

这将添加 mfiomfio-rt 作为无_std 模式下的依赖项。许多功能将被禁用,例如原生轮询句柄、原生运行时以及任何依赖运行操作系统的功能。

然而,剩余的块应该足够构建任何非阻塞 I/O 系统。可以在任意类型上实现自定义轮询句柄,以实现任何操作系统上的协作操作。

依赖项

~6–20MB
~267K SLoC