2 releases
| 0.0.5 | Nov 8, 2022 |
|---|---|
| 0.0.4 | Oct 5, 2022 |
| 0.0.3 |
|
| 0.0.1 |
|
#1905 in Asynchronous
46 downloads per month
Used in 2 crates
21KB
487 lines
An efficient runtime for asynchronous applications.
There are two implementations of this runtime:
- The
photonio-uringcrate provides an implementation for Linux based onio_uring. - The
photonio-tokiocrate provides an implementation for other platforms based ontokio.
By default, this crate uses the photonio-uring implementation on Linux and
the photonio-tokio implementation on other platforms. To use the
photonio-tokio implementation on all platforms, enable the tokio
feature.
Examples
use photonio::{
fs::File,
io::{Write, WriteAt},
};
#[photonio::main]
async fn main() -> std::io::Result<()> {
let mut file = File::create("hello.txt").await?;
file.write(b"hello").await?;
file.write_at(b"world", 5).await?;
Ok(())
}
Limitations
- Dropping an unfinished future for asynchronous filesystem or networking operations will result in a panic. However, this behavior might be change in the future.
- The current multi-thread runtime uses a naive round-robin fashion to schedule tasks. A work-stealing scheduler will be added in the future.
Dependencies
~1.3–8MB
~60K SLoC