21 releases
Uses old Rust 2015
0.2.6 | Jun 13, 2015 |
---|---|
0.2.5 | Apr 3, 2015 |
0.2.3 | Mar 27, 2015 |
0.2.2 | Feb 22, 2015 |
0.0.9 | Jan 24, 2015 |
#286 in #pure
38 downloads per month
1MB
1K
SLoC
Contains (ELF exe/lib, 1.5MB) a, (ELF exe/lib, 785KB) b, (ELF exe/lib, 650KB) x
Mudpie
:app: Mudpie
Overview
{app} is a simple multi-threaded HTTP server for the amazingly awesome Rust language. It is inspired by Python's WSGI specification.
{app} is written in 100% safe Rust code (no unsafe blocks) and has no dependencies. It is intended to be reliable and easy to audit for security, especially for embedded applications.
NOTE: The {app} master
branch is for Rust nightly.
Hello World Code
[source,rust]
extern crate mudpie;
use mudpie::{WebServer, WebRequest, WebResponse};
fn hello(req: &WebRequest) -> WebResponse {
let page = "<h1>Hello World!</h1>".to_string();
return WebResponse::new_html(page);
}
fn main() {
let mut svr = WebServer::new();
svr.add_path("get", "/hello", hello);
svr.run("127.0.0.1", 8000);
}
Running the Demo Server
Use +cargo run+ to start the included demo server, which has some example pages you can visit at +http://localhost:8000/+.
$ cargo run 0.0.0.0 8000
Running `target/demo 0.0.0.0 8000`
listening on 0.0.0.0:8000
starting 10 worker threads
starting monitor loop
You can benchmark it using a program like "boom" or any other HTTP tester:
$ ./goprograms/bin/boom -n 100000 -c 10 -cpus 3 http://localhost:8000/bench
Summary:
Total: 3.2466 secs.
Slowest: 0.0342 secs.
Fastest: 0.0001 secs.
Average: 0.0003 secs.
Requests/sec: 30801.6515
NOTE: You should probably turn request logging off (export MUDPIE_LOGGING=0
)
or redirect it to /dev/null
when benchmarking, and also use cargo run --release
to enable compiler optimizations.
More Information
-
The link:src/bin/demo.rs[Demo Program] shows example usage
-
The link:http://www.rust-ci.org/kjpgit/mudpie/doc/mudpie/[Mudpie Crate API Docs]
-
The link:Internals.adoc[Internals] has gory architecture and protocol details
License
Public Domain.