An open API service indexing awesome lists of open source software.

https://github.com/dr-montasir/webio

A minimalist, high-performance Rust web framework built with a zero-dependency philosophy for maximum speed and low memory footprint.
https://github.com/dr-montasir/webio

async framework rust web zero-dependency

Last synced: about 21 hours ago
JSON representation

A minimalist, high-performance Rust web framework built with a zero-dependency philosophy for maximum speed and low memory footprint.

Awesome Lists containing this project

README

          









WebIO


> A minimalist, high-performance Rust web framework built with a zero-dependency philosophy for maximum speed and low memory footprint.


github crates.io docs.rs license downloads

---

## Why WebIO?

WebIO is a zero-dependency Rust web framework engineered for high performance, from real-time chat to intensive data science. Powered strictly by the **Rust Standard Library**, the engine prevents "event loop freeze" by ensuring heavy calculations never compromise general service responsiveness.
The minimalist architecture utilizes dedicated **OS threads** for pre-emptive multitasking. Featuring a "Safe-Turbo" executor with a custom spin-loop for ultra-low latency and O(1) memory complexity for big data, WebIO delivers a high-integrity implementation for high-stakes environments.

### Event Loop Blocking: Performance Bottlenecks
In traditional async runtimes, tasks must yield control voluntarily. If a single request performs a heavy calculation—such as a regression model, image processing, or a large CSV parse—the **entire event loop thread is blocked**. This freezes the server for all other concurrent connections, including lightweight API calls or WebSocket tasks.

### WebIO Solution: Go-Inspired OS Pre-emption

WebIO utilizes raw OS Threads for true kernel-level isolation. Whether serving a lightweight API or a heavy-duty data model, the OS ensures every connection stays active.

- **Go-Inspired Concurrency:** A unique OS thread per connection ensures pre-emptive multitasking. A heavy mathematical calculation on one thread never "freezes" the server for others.
- **Safe-Turbo Bridge:** A specialized **`block_on`** executor with a 150k-cycle spin-loop catches I/O states in nanoseconds, bypassing OS scheduler jitter for ultra-low latency.
- **Zero-RAM Big Data**: Raw TcpStream access enables moving 100GB+ datasets in 64KB chunks, bypassing the 10MB RAM safety guard.

## Production Ready: v1.0.0 Stable
**WebIO is now a Stable Production Engine, moving beyond its initial research and development phase.**
- **API Stability:** Starting with **v1.0.0**, WebIO follows strict semantic versioning. The core architecture and concurrency patterns are now locked for long-term stability.
- **Legacy Research:** Versions below **1.0.0** (0.9.x and earlier) represent the research phase and may contain breaking changes or unstable patterns.
- **The Goal:** To provide a **high-integrity, zero-dependency core** for high-performance web projects.
- **Framework Foundation:** Much like Tokio or Axum, WebIO is a powerful base for building specialized tools. It is designed to be the **core foundation** for the Fluxor Data Science framework and any other project requiring WebIO’s unique multi-threaded performance.

## Performance Architecture
* **Hybrid Spin-Wait Strategy:** The `block_on` executor uses a 150k-cycle spin-loop to catch I/O ready states in nanoseconds, maintaining sub-millisecond tail latency by bypassing OS scheduler jitter for "hot" tasks.
* **Smart RAM Cache:** Transparently caches hot assets (<500KB) using an `RwLock` to provide **~50µs** RAM-speed delivery for CSS/JS/JSON, while large files stream safely from the Disk.
* **Zero-Dependency Integrity:** By strictly avoiding external crates, WebIO is immune to "supply chain attacks" and remains a pure, high-performance core for Computing Science and Mathematical applications.
* **Nagle Control:** Granular builder-pattern control over TCP throughput vs. latency (set_nagle) optimizes for either real-time APIs or massive data syncs.

## Core Philosophy
WebIO provides a fully functional web engine with **zero external dependencies**. By strictly utilizing the Rust std library, it ensures an ultra-light footprint, rapid compilation, and total memory predictability.
**zero external dependencies**.
- **No** `tokio`, `async-std` or `hyper`.
- **No** `serde` or heavy middleware bloat.
- **No** `unsafe` code in the executor.
- **Just pure, high-performance Rust**.

## Installation

To include **webio** in your Rust project, run:

```shell
cargo add webio
```

Or add **webio** to your `Cargo.toml`:

```toml
[dependencies]
webio = "MAJOR.MINOR.PATCH" # replace with the actual version
```

## Quick Start

1. **Closure Pattern**

```rust,no_run
use webio::*;

fn main() {
let mut app = WebIo::new();

app.route(GET, "/", |_, _| async {
Reply::new(StatusCode::Ok)
.header("Content-Type", "text/plain; charset=UTF-8")
.body("Hello from 🦅 WebIO!")
});

app.run("127.0.0.1", "8080");
}
```

2. **Handler Pattern**

```rust,no_run
use webio::*;

async fn hello_handler(_req: Req, _params: Params) -> Reply {
Reply::new(StatusCode::Ok)
.header("Content-Type", "text/html; charset=UTF-8")
.body("

Hello from 🦅 WebIO!

")
}

fn main() {
let mut app = WebIo::new();
app.route(GET, "/", hello_handler);
app.run("127.0.0.1", "8080");
}
```

## Example

The following example demonstrates a production-style implementation, utilizing dynamic routing, raw stream handling for massive datasets, and high-speed disk allocation.

```rust,no_run
use webio::*;
use std::io::{Write, Read, BufWriter};
use std::{fs, fs::File};

/// Big Data Handler (O(1) Memory Complexity)
/// Method: POST -> http://localhost:8080/upload
async fn video_upload_handler(mut req: Req, _params: Params) -> Reply {
let _ = fs::create_dir_all("uploads");

let file = File::create("uploads/video_data.mp4").expect("Failed to create file");
let mut writer = BufWriter::new(file);

// 1. SET THE TARGET SIZE (Example: 1,000,000,000 bytes / ~953.67 MB)
let total_size: u64 = 1_000_000_000;

// 2. FILL THE FILE TO THE TARGET SIZE
// Pre-allocating disk space ensures stability for massive datasets.
let dummy_data = vec![0u8; total_size as usize];
writer.write_all(&dummy_data).unwrap();

// 3. CAPTURE INCOMING STREAM
// Handle both pre-buffered headers and the raw socket stream.
if !req.body.is_empty() {
let _ = writer.write_all(req.body.as_bytes());
}

let mut buffer = [0; 65536]; // 64KB Fixed-size Chunk
while let Ok(n) = req.stream.read(&mut buffer) {
if n == 0 { break; }
let _ = writer.write_all(&buffer[..n]);
}
writer.flush().unwrap();

// 4. CONVERT BYTES TO BINARY MB (MiB)
let size_in_mb = total_size as f64 / (1024.0 * 1024.0);

// 5. RETURN JSON REPLY
Reply::new(StatusCode::Ok)
.header("Content-Type", "application/json")
.body(format!(
r#"{{"status": "success", "bytes": {}, "size_mb": "{:.2} MB"}}"#,
total_size, size_in_mb
))
}

fn main() {
let mut app = WebIo::new();

// Application Tailoring: Static Asset Mapping
app.use_static("assets");

// Dynamic Routing: http://localhost:8080/user/Adam
app.route(GET, "/user/", |_req, params| async move {
let name = params.0.get("name").cloned().unwrap_or_default();
Reply::new(StatusCode::Ok).body(format!("Hello, {}!", name))
});

// Data Ingestion: High-Performance Streaming
app.route(POST, "/upload", video_upload_handler);

// Launch in High Throughput Mode.
app.set_nagle(true)
.run("0.0.0.0", "8080");
// or just
// Launch in High Throughput Mode (Default)
// app.run("0.0.0.0", "8080");
}
```

### Performance Snapshots

WebIO bypasses traditional abstraction layers to achieve raw hardware speeds. The following metrics were captured during 100MB and 1GB disk allocation operations:

🟢 **100 Megabyte Stress-Test**

Efficiently allocating **100,000,000 bytes** and serializing a JSON response in under a quarter-second demonstrates the engine's low-latency agility. This benchmark highlights the minimal overhead required for mid-scale data ingestion.

**Benchmark Result:**

**Status: 200 OK | Size: 64 Bytes | Time: 245 ms**

```json
{
"status": "success",
"bytes": 100000000,
"size_mb": "95.37 MB"
}
```

🔵 **1 Gigabyte Stress-Test (Peak Performance)**

WebIO scalability reaches raw hardware limits. Processing **1,000,000,000 bytes** in approximately **1 second** with a fixed **64KB memory footprint** ensures total system stability during massive data ingestion.

**Benchmark Result:**

**Status: 200 OK | Size: 66 Bytes | Time: 1.03 s**

```json
{
"status": "success",
"bytes": 1000000000,
"size_mb": "953.67 MB"
}
```

This chart visually confirms the **Perfect Linear Scaling** of the WebIO engine. As the data volume grows from 1MB to 2GB, the execution time increases in a straight, predictable line, proving that the framework introduces no internal bottlenecks or "performance cliffs."



### WebIO Performance Scaling Summary

| Data Volume | Time (ms) | Throughput | Engine Status |
| :----------------- | :----------- | :-------------- | :---------------------- |
| **1 MB** | **154 ms** | ~6.5 MB/s | 🟢 **Low-latency Floor** |
| **10 MB** | **160 ms** | ~62.5 MB/s | 🟢 **High Ingestion** |
| **100 MB** | **245 ms** | ~408 MB/s | 🔵 **High Throughput** |
| **1,000 MB (1GB)** | **1,030 ms** | **~970 MB/s** | 🔥 **Hardware Peak** |
| **2,000 MB (2GB)** | **2,000 ms** | **~1,000 MB/s** | 🚀 **Turbo Saturation** |

---

## ⚖️ License

**WebIO** is released under the **MIT License**.

---