MCPcopy Index your code
hub / github.com/Azure/kimojio-rs

github.com/Azure/kimojio-rs @v0.14.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.14.0 ↗ · + Follow
848 symbols 2,800 edges 46 files 149 documented · 18%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

kimojio

A thread-per-core Linux io_uring async runtime for Rust optimized for latency.

Documentation

Kimojio uses a single-threaded, cooperatively scheduled runtime. Task scheduling is fast and consistent because tasks do not migrate between threads. This design works well for I/O-bound workloads with fine-grained tasks and minimal CPU-bound work.

Disk I/O in Kimojio is handled through io_uring, allowing asynchronous operations without relying on additional background threads. In some cases, the kernel may introduce a helper thread, but this is not part of the runtime itself.

Because Kimojio does not include automatic load balancing, developers have full control over concurrency and task distribution. This reduces implicit synchronization overhead but requires manual handling if multi-threaded execution is needed.

Key characteristics:

  • Single-threaded, cooperative scheduling.
  • Consistent task scheduling overhead.
  • Asynchronous disk I/O via io_uring.
  • Explicit control over concurrency and load balancing.
  • No locks, atomics, or other thread synchronization

Getting Started

Prerequisites

Kimojio requires Linux Kernel of at least version 5.15 for sufficient I/O uring support.

Installing

  1. Add kimojio to your project:

    sh cargo add kimojio

Hello World

use kimojio::{
    Errno,
    configuration::Configuration,
    operations::{self, OFlags},
};

#[kimojio::main]
async fn main() -> Result<(), Errno> {
    let flags = OFlags::CREATE | OFlags::RDWR;
    let fd = operations::open(c"/tmp/example.txt", flags, 0o644.into()).await?;
    let written = operations::write(&fd, b"hello world").await?;
    assert_eq!(written, 11);
    operations::close(fd).await?;
    Ok(())
}

Contributing

Please see CONTRIBUTING.md for more information on how to contribute to this project.

License

This project is licensed under the MIT License.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.

Extension points exported contracts — how you extend this code

AsyncStreamRead (Interface)
(no doc) [8 implementers]
kimojio/src/async_stream.rs
AsyncStreamWrite (Interface)
(no doc) [8 implementers]
kimojio/src/async_stream.rs
PrefixBuffer (Interface)
A buffer that can be prefixed with data. The primary use case is when you want to create a protocol stack where each lay [3 …
kimojio/src/prefix_buffer.rs
MakeResult (Interface)
(no doc) [4 implementers]
kimojio/src/ring_future.rs
SplittableStream (Interface)
(no doc) [4 implementers]
kimojio/src/async_stream.rs

Core symbols most depended-on inside this repo

clone
called by 142
kimojio/src/message_pipe.rs
set
called by 132
kimojio/src/async_event.rs
spawn_task
called by 119
kimojio/src/operations.rs
get
called by 92
kimojio/src/task.rs
write
called by 47
kimojio/src/buffer_pipe.rs
bipipe
called by 45
kimojio/src/pipe.rs
len
called by 43
kimojio/src/handle_table.rs
use_mut
called by 40
kimojio/src/mut_in_place_cell.rs

Shape

Function 416
Method 306
Class 98
Enum 16
Interface 12

Languages

Rust98%
C2%

Modules by API surface

kimojio/src/operations.rs114 symbols
kimojio/src/tlscontext.rs49 symbols
kimojio/src/task.rs49 symbols
kimojio/src/async_channel.rs45 symbols
kimojio/src/async_event.rs43 symbols
kimojio/src/buffer_pipe.rs40 symbols
kimojio/src/message_pipe.rs37 symbols
kimojio/src/async_stream.rs37 symbols
kimojio/src/handle_table.rs32 symbols
kimojio/src/tlsstream.rs31 symbols
kimojio-tls/src/lib.rs31 symbols
kimojio/src/async_oneshot.rs30 symbols

For agents

$ claude mcp add kimojio-rs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact