| Crates.io | gatio |
| lib.rs | gatio |
| version | 0.0.0 |
| created_at | 2025-10-22 14:46:39.762595+00 |
| updated_at | 2025-10-22 14:46:39.762595+00 |
| description | RESERVED-CRATE: Main runtime crate for Gatio. |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1895782 |
| size | 15,952 |
No releases yet, this is placeholder crate. (in active development)
Async task runtime for Rust that is optimized for io_uring(7).
Linux only, now and in the future.
Gatio runtime is build upon the core idea that
program is split upon seperate Thread Pool Contexts (TPC)
based on the number of NUMA-nodes in that computer.
(For most computers this is will account to just one TPC)
Each TPC owns it's own heap memory and CPU-core range.
Work inside TPCs happens inside GatioDrivers.
One CPU-core will be mapped to one GatioDriver which will run on a single OS-thread.
With "driver-per-core" manner.
A driver can either be responsible for only I/O processing, task execution or both (with hyper-threading).
The drivers used may vary between TPC's and single TPC can support multiple different GatioDriver types.
Asyncronous code execution will be given to GatioDriver that has functionality to schedule tasks.
This can be done either directly to the driver or by using the TPC to select the best driver for the task depending
on the current workload on the drivers or other parameters. (priority, cpu-cache optimized, etc.)
(Relatively simple, but very different from the standard way of doing serverside networking, please view examples.)
Networking is internally handled by creating multishot submission queue entries (SQEs) within io_uring(7).
That are then processed by gatio-net according on the supported transport protocols per port.
Gatio ensures that every driver handling a given port uses an identical configuration at startup. This enforcement still allows different transport protocols, such as UDP and TCP, to be separated onto seperate dedicated drivers.