#iocp #io-uring #async

compio-driver

compio 的底层驱动程序

9 个不稳定版本 (3 个重大变更)

0.4.0 2024年6月17日
0.3.0 2024年4月25日
0.2.2 2024年3月30日
0.2.0-beta.32023年12月18日
0.1.0 2023年10月7日

#891 in 异步

Download history 545/week @ 2024-05-01 454/week @ 2024-05-08 359/week @ 2024-05-15 324/week @ 2024-05-22 429/week @ 2024-05-29 564/week @ 2024-06-05 846/week @ 2024-06-12 546/week @ 2024-06-19 564/week @ 2024-06-26 398/week @ 2024-07-03 517/week @ 2024-07-10 265/week @ 2024-07-17 453/week @ 2024-07-24 323/week @ 2024-07-31 493/week @ 2024-08-07 379/week @ 2024-08-14

1,660 个月下载量
14 个 Crates 中使用 (7 个直接使用)

MIT 许可证

225KB
5.5K SLoC

Compio

MIT licensed crates.io docs.rs Check Test Telegram

具有 IOCP/io_uring/polling 的每个核心的 Rust 运行时。名称来自“基于完成的 I/O”。此crate受到 monoio 的启发。

为什么不选择 Tokio?

Tokio 是一个伟大的通用异步运行时。然而,它是基于轮询的,甚至在 Windows 上使用了 未记录的 API。我们希望有一些新的高级 API 来执行 IOCP/io_uring。

tokio-uring 不同,此运行时不是基于 Tokio 的。这主要是因为在 mio 中没有控制 IOCP 的公共 API,并且 tokio 不会在 mio 达到 1.0 之前公开 API 来控制 mio

为什么不选择 monoio/tokio-uring/glommio?

它们不支持 Windows。

快速开始

compio 添加为依赖项

compio = { version = "0.10.0", features = ["macros"] }

然后我们可以使用高级 API 来执行文件系统和网络 I/O。

use compio::{fs::File, io::AsyncReadAtExt};

#[compio::main]
async fn main() {
    let file = File::open("Cargo.toml").await.unwrap();
    let (read, buffer) = file.read_to_end_at(Vec::with_capacity(1024), 0).await.unwrap();
    assert_eq!(read, buffer.len());
    let buffer = String::from_utf8(buffer).unwrap();
    println!("{}", buffer);
}

您还可以手动控制底层驱动程序。请参阅仓库中的 driver 示例。

贡献

在任何级别都可以为 Compio 做出贡献。无论您是 Rust 的初学者还是经验丰富的专家,我们都可以使用您的帮助。如果您对 Compio 有任何疑问,请随时加入我们的 电报群组。在贡献之前,请查看我们的 贡献指南

依赖项

~1–12MB
~137K SLoC