22 unstable releases (3 breaking)

new 0.4.2 Dec 11, 2024
0.4.1 Dec 6, 2024
0.3.2 Nov 24, 2024
0.2.3 Nov 3, 2024
0.1.11 Oct 26, 2024

#202 in HTTP server

Download history 87/week @ 2024-09-27 693/week @ 2024-10-04 372/week @ 2024-10-11 20/week @ 2024-10-18 313/week @ 2024-10-25 298/week @ 2024-11-01 7/week @ 2024-11-08 231/week @ 2024-11-15 175/week @ 2024-11-22 152/week @ 2024-11-29 286/week @ 2024-12-06

844 downloads per month

MIT license

130KB
3K SLoC

Volga

Fast, Easy, and very flexible Web Framework for Rust based on Tokio runtime and hyper for fun and painless microservices crafting.

latest latest License: MIT Build Release

Tutorial | API Docs | Examples

Features

  • Supports HTTP/1 and HTTP/2
  • Robust routing
  • Custom middlewares
  • Full Tokio compatibility
  • Runs on stable Rust 1.80+

Getting Started

Dependencies

[dependencies]
volga = "0.4.2"
tokio = { version = "1", features = ["full"] }

Simple request handler

use volga::*;

#[tokio::main]
async fn main() -> std::io::Result<()> {
    // Start the server
    let mut app = App::new();

    // Example of request handler
    app.map_get("/hello/{name}", |name: String| async move {
        ok!("Hello {name}!")
    });
    
    app.run().await
}

Performance

Tested a single instance on a laptop using 1 thread and 200 connections and under configuration:

OS: Arch Linux
CPU: Intel i7-8665U (8) @ 4.800GHz
RAM: 31686MiB

Results

Running 10s test @ http://127.0.0.1:7878/hello
  1 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   578.90us  206.77us   5.77ms   79.81%
    Req/Sec   184.72k     9.54k  200.74k    77.00%
  1837693 requests in 10.08s, 206.80MB read
Requests/sec: 182380.80
Transfer/sec:     20.52MB

Dependencies

~4–14MB
~160K SLoC