servlin 0.4.3

Modular HTTP server library, threaded handlers and async performance
Documentation
# Rust Webserver Comparison

|  | servlin | [rouille]https://crates.io/crates/rouille | [trillium]https://crates.io/crates/trillium | [tide]https://crates.io/crates/tide | [axum]https://crates.io/crates/axum | [poem]https://crates.io/crates/poem |
|---------------------|----|----|----|----|----|----|
| Well-tested         | [NO]https://github.com/mleonhard/servlin/issues/1 | NO | [NO]https://github.com/trillium-rs/trillium/discussions/181 | NO | NO | NO |
| Blocking handlers   ||| NO | NO | NO ||
| Async handlers      | NO | NO |||||
| 100-continue        |||| [NO]https://github.com/http-rs/tide/issues/878 |||
| Thread limit        || [NO]https://github.com/tiny-http/tiny-http/issues/221 |||||
| Connection limit    || NO || NO | NO | NO |
| Caches payloads     || NO | NO | NO | NO | [NO]https://github.com/poem-web/poem/issues/75 |
| Request timeouts    | NO | NO | NO | NO | NO | NO |
| Custom logging      |||| NO |||
| Unsafe-free         ||| NO | NO | NO ||
| Unsafe-free deps    | NO | NO | NO | NO | NO | NO |
| age (years)         | 0  | 6  | 1  | 3  | 0  | 1  |
| TLS                 | NO | NO |||||
| ACME certs          | NO | NO | NO | NO | NO | [NO]https://docs.rs/poem/1.3.29/poem/listener/acme/index.html |
| SSE                 || NO | [NO]https://github.com/trillium-rs/trillium/issues/39 ||||
| Websockets          | NO ||||||
| Streaming response: |    |    |    |    |    |    |
| - impl `AsyncRead`  | NO | NO |||||
| - `AsyncWrite`      | NO | NO | NO | NO | NO | NO |
| - impl `Read`       | NO || NO | NO | NO | NO |
| - channel           | NO | NO | NO | NO || NO |
| Custom routing      |||| NO |||
| Usable sans macros  |||||| NO |
| Shutdown for tests  |||| [NO]https://github.com/http-rs/tide/issues/876 |||
| Graceful shutdown   | NO ||| [NO]https://github.com/http-rs/tide/issues/528 |||
| Rust stable         |||||||

|  | servlin | [warp]https://crates.io/crates/warp | [thruster]https://crates.io/crates/thruster | [rocket]https://crates.io/crates/rocket | [gotham]https://crates.io/crates/gotham |
|---------------------|----|----|----|----|----|
| Well-tested         | [NO]https://github.com/mleonhard/servlin/issues/1 | ? | ? | ? | ? |
| Blocking handlers   || ?  | ?  | ?  | ?  |
| Async handlers      | NO | ?  | ?  | ?  | ?  |
| 100-continue        || ?  | ?  | ?  | ?  |
| Thread limit        || ?  | ?  | ?  | ?  |
| Connection limit    || ?  | ?  | ?  | ?  |
| Caches payloads     || ?  | ?  | ?  | ?  |
| Request timeouts    | NO | ?  | ?  | ?  | ?  |
| Custom logging      || ?  | ?  | ?  | ?  |
| Unsafe-free         || ?  | ?  | ?  | ?  |
| Unsafe-free deps    | NO | ?  | ?  | ?  | ?  |
| age (years)         | 0  | ?  | ?  | ?  | 5  |
| TLS                 | NO | ?  | ?  | ?  | ?  |
| ACME certs          | NO | ?  | ?  | ?  | ?  |
| SSE                 || ?  | ?  | ?  | ?  |
| Websockets          | NO | ?  | ?  | ?  | ?  |
| Streaming response: |    |    |    |    |    |
| - impl `AsyncRead`  | NO | ?  | ?  | ?  | ?  |
| - `AsyncWrite`      | NO | ?  | ?  | ?  | ?  |
| - impl `Read`       | NO | ?  | ?  | ?  | ?  |
| - channel           | NO | ?  | ?  | ?  | ?  |
| Custom routing      || ?  | ?  | ?  | ?  |
| Usable sans macros  || ?  | ?  | ?  | ?  |
| Shutdown for tests  || ?  | ?  | ?  | ?  |
| Graceful shutdown   | NO | ?  | ?  | ?  | ?  |
| Rust stable         || ?  | ?  | NO | ?  |