ITADN
compio-rs/compio
compio-rs/compio · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Compio

MIT licensed crates.io docs.rs Check Test Telegram Discord

一个基于每线程一核的 Rust 运行时,其设计灵感来自 monoio,采用 IOCP/io_uring/轮询机制。

快速开始

添加 compio 作为依赖项:

cargo add compio --features macros,fs

然后使用提供的高级 API 来执行文件系统与网络 IO:

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);
}

也可以手动使用底层驱动程序(不带异步执行器的 proactor)。参见 driver 示例

为什么叫这个名字?

这个名字源自“基于完成的 IO”,并遵循了一个不存在的约定,即异步运行时应以后缀“io”命名。

与其他运行时的比较

Tokio

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

compio 不是基于 tokio 的。这主要是因为 tokio 没有暴露控制 mio 的 API,并且 mio 没有暴露控制 IOCP 的 API。

Monoio

Monoio 专注于 Linux 和 io-uring,并在其他平台上回退到 mio

Glommio

Glommio 不支持 Windows。

其他

还有许多其他优秀的异步运行时。但大多数(在 compio 创建时)要么是轮询式的,要么不安全地使用 io-uring,要么不是跨平台的。我们希望 compio 能填补这一空白。

贡献

在任何层面都有机会为 Compio 做出贡献。无论你是刚开始接触 Rust 还是经验丰富的专家,我们都需要你的帮助。如果你对 Compio 有任何疑问,请随时加入我们的 telegram 群组。 在贡献之前,请查阅我们的贡献指南