Skip to content
forked from compio-rs/compio

A thread-per-core Rust runtime with IOCP/io_uring/polling.

License

Notifications You must be signed in to change notification settings

Berrysoft/compio

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Compio

MIT licensed crates.io docs.rs Azure DevOps builds

A thread-per-core Rust runtime with IOCP/io_uring/polling. The name comes from "completion-based IO". This crate is inspired by monoio.

Why not Tokio?

Tokio is a great generic-propose async runtime. However, it is poll-based, and even uses undocumented APIs on Windows. We would like some new high-level APIs to perform IOCP/io_uring.

Unlike tokio-uring, this runtime isn't Tokio-based. This is mainly because that no public APIs to control IOCP in mio, and tokio won't public APIs to control mio before mio reaches 1.0.

Why not monoio/tokio-uring?

They don't support Windows.

Quick start

With runtime feature enabled, we can use the high level APIs to perform fs & net IO.

use compio::{fs::File, task::block_on};

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

While you can also control the low-level driver manually. See driver example of the repo.

About

A thread-per-core Rust runtime with IOCP/io_uring/polling.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%