Popularity
2.1
Stable
Activity
0.0
Stable
52
2
2

Programming language: Rust
License: MIT License
Latest version: v0.0.4

zap alternatives and similar packages

Based on the "HTTP Server" category.
Alternatively, view zap alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of zap or a related project?

Add another 'HTTP Server' Package

README

zap :zap:

GitHub issues Travis GitHub stars Crates.io Crates.io

The mission of zap is, to deliver a basic, but fast rust web server library.

Documentation

About

This code is based on tokio's minihttp project, so a big thanks to them. (source)

The goal of this project is, to show how fast Rust can be. It isn't made for huge complex applications, just a test project for benchmark reasons.

How to use

Add the following to your Cargo.toml:

[dependencies]
zap = "0.0.4"

Speed

So zap is not only fast, it is wapping 2.96 times faster than iron, which is based on hyper. Benchmarks below:

Benchmark Code

Iron

This code had been taken from the ironframework.io webpage.

extern crate iron;

use iron::prelude::*;
use iron::status;

fn main() {
    fn hello_world(_: &mut Request) -> IronResult<Response> {
        Ok(Response::with((status::Ok, "Hello World!")))
    }

    Iron::new(hello_world).http("localhost:3000").unwrap();
}

Zap

This example can be run, by:

$ git clone https://github.com/oltdaniel/zap && cd zap
$ cargo run --example hello-world --release
extern crate zap;

use std::io::Error as ZapError;
use zap::prelude::*;

struct HelloWorld;

impl Handler for HelloWorld {
    type Request = Request;
    type Response = Response;
    type Error = ZapError;
    type Future = ZapResult;

    fn call(&self, _: Request) -> ZapResult {
        let mut resp = Response::new();

        resp.body("Hello World!");

        resp.ok()
    }
}

fn main() {
    let addr = "0.0.0.0:8080".parse().unwrap();
    let mut server = Server::new(Http, addr);
    server.threads(8);
    server.serve(|| Ok(HelloWorld));
}

Benchmark Results

The benchmark results have been computed with this command: wrk -t16 -c500 -d10s http://127.0.0.1:8080 --latency

Technical details about the server:

  • Intel Core I7-6700K, hyper-threaded
  • 16GB RAM, 2400MHZ

Detailed results: in the wiki.

Iron

[...]
Requests/sec: 307581.17
Transfer/sec:     33.44MB

Zap

[...]
Requests/sec: 912832.31
Transfer/sec:     40.90MB

Credits & License

Daniel Oltmanns & others

Basically do what you'd like to.

GitHub license


*Note that all licence references and agreements mentioned in the zap README section above are relevant to that project's source code only.