= 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 = "

Hello World!

".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.