#run-time #async-io #async #io-uring

compio-runtime

Compio 的高层运行时

7 个不稳定版本 (3 个重大更改)

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

异步 中排名第 1848

Download history 377/week @ 2024-05-03 423/week @ 2024-05-10 358/week @ 2024-05-17 286/week @ 2024-05-24 661/week @ 2024-05-31 453/week @ 2024-06-07 889/week @ 2024-06-14 496/week @ 2024-06-21 475/week @ 2024-06-28 451/week @ 2024-07-05 460/week @ 2024-07-12 281/week @ 2024-07-19 409/week @ 2024-07-26 366/week @ 2024-08-02 507/week @ 2024-08-09 429/week @ 2024-08-16

每月下载量 1,746
用于 12 软件包(直接使用 8 个)

MIT 许可证

265KB
6.5K SLoC

Compio

MIT licensed crates.io docs.rs Check Test Telegram

一个基于核心的线程 Rust 运行时,具有 IOCP/io_uring/polling。该名称来源于“基于完成的 I/O”。这个软件包受到了 monoio 的启发。

为什么不使用 Tokio?

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

tokio-uring 不同,这个运行时不是基于 Tokio 的。这主要是因为在 mio 中没有公开的 API 来控制 IOCP,而 tokiomio 达到 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 有任何疑问,欢迎加入我们的 telegram 群组。在贡献之前,请查看我们的 贡献指南

依赖项

~2–15MB
~189K SLoC