1 个不稳定版本
0.4.0-alpha1 | 2024 年 2 月 4 日 |
---|
1154 在 异步
38 每月下载次数
用于 4 crate
290KB
4.5K SLoC
tokio-uring
在合并此 PR后,将移除这个临时的 Kvarn 分支。
这个 crate 通过公开一个与 Tokio 兼容但也可以驱动基于 io-uring
的资源的新的运行时,为 Tokio 提供 io-uring
。任何与 Tokio 工作的库也与 tokio-uring
工作相同。这个 crate 提供了新的与 io-uring
工作的资源类型。
入门
使用 tokio-uring
需要 启动一个 tokio-uring
运行时。这个运行时内部管理主要的 Tokio 运行时和 io-uring
驱动程序。
在你的 Cargo.toml
[dependencies]
tokio-uring = { version = "0.4.0" }
在你的 main.rs
use tokio_uring::fs::File;
fn main() -> Result<(), Box<dyn std::error::Error>> {
tokio_uring::start(async {
// Open a file
let file = File::open("hello.txt").await?;
let buf = vec![0; 4096];
// Read some data, the buffer is passed by ownership and
// submitted to the kernel. When the operation completes,
// we get the buffer back.
let (res, buf) = file.read_at(buf, 0).await;
let n = res?;
// Display the contents
println!("{:?}", &buf[..n]);
Ok(())
})
}
要求
tokio-uring
需要 一个非常新的 Linux 内核。(并非所有支持 io_uring 的内核都能工作)特别是 5.4.0
不能工作(这是 Ubuntu 20.4 的标准)。但是 5.11.0
(Ubuntu hwe 映像) 可以工作。
项目状态
kyarn-tokio-uring 项目仍然非常年轻。目前,我们正在专注于支持文件系统和网络操作。最终,我们将添加所有 io-uring 兼容操作的安全 API。
许可协议
本项目采用 MIT 许可协议。
贡献
除非您明确声明,否则您提交的任何有意包含在 kyarn-tokio-uring 中的贡献,都将按照 MIT 许可协议授权,不附加任何额外的条款或条件。
依赖
~3–15MB
~136K SLoC