NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2563 most downloaded on crates.io
High-level idiomatic web framework.
Last release 3 years ago
no release in 18 months
Ships unpredictably
gaps range from 8 days to 2.4 years
Most releases are documented
notes for 24 of 37 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
37 releases · first in 2016
Use sha1-smol, closes #267 by @goto-bus-stop in #269
rouille::Server: Expose new_ssl on feat rustls by @NobodyXu in #272Full Changelog: v3.6.1...v3.6.2
One column per quarter.
new_ssl feature for rustls support from tiny-http.sha1-smol for a smaller footprint, more stable hash library.num_cpus using std::thread::available_parallelism instead.Reverts Added a number of default features as it breaks any downstreams who were specifying default-features = false .
Reverts Added a number of default features as it breaks any downstreams who were specifying default-features = false.
Full Changelog: v3.6.0...v3.6.1
Added rustls support (via tiny-http ), if you're currently using the ssl feature you can switch from OpenSSL to Rustls by instead enabling the rustls
rustls support (via tiny-http), if you're currently using the ssl feature you can switch from OpenSSL to Rustls by instead enabling the rustls feature in your Cargo.toml.logging, assets, post and session are now optional, but enabled by default for backwards compatibility.GET /?foo would return None from get_param, instead of Some("").tiny-http to 0.12.0, further reducing the dependency tree by breaking our hard requirement on time-rs. This version of tiny-http also enables Unix socket listeners, which will be exposed in a future release of Rouille.Full Changelog: v3.5.0...v3.6.0
Replaced our use of the brotli2 crate with the alternative pure Rust implementation brotli . This removes Rouille's vulnerability to RUSTSEC-2021-0131…
brotli2 crate with the alternative pure Rust implementation brotli. This removes Rouille's vulnerability to RUSTSEC-2021-0131, which existed due to brotli-sys bundling a vulnerable version of the underlying C library.time-rs and as a result increased our MSRV to 1.51, we don't have a formal MSRV policy and the ecosystem is making it more and more difficult to support compiler versions more than about 6 months old.All Changes: v3.4.0...v3.5.0
Bumped chrono to 0.4.19 and disabled their default feature set to avoid warnings about RUSTSEC-2020-0071 (Rouille was never vulnerable, but used a vul…
text/JSON would be incorrectly identified as non-text).time-rs to 0.3.2 to avoid a semver-breaking change in their MSRV.chrono to 0.4.19 and disabled their default feature set to avoid warnings about RUSTSEC-2020-0071 (Rouille was never vulnerable, but used a vulnerable version of chrono).Use .strip_prefix in place of .starts_with where appropriate, this stops a Clippy lint from leaking out of our router! macro and into downstream code.
.strip_prefix in place of .starts_with where appropriate, this stops a Clippy lint from leaking out of our router! macro and into downstream code.Bumped minimum supported Rust version to 1.48
rouille::content_encodingtime dependency to 0.3 and postgres to 0.19 to fix a compile failure due to a yanked version of sha1.Removed unused dependency term and updated rand , multipart , deflate and time to latest supported versions.
term and updated rand, multipart, deflate and time to latest supported versions.Add ResponseBody::from_reader_and_size for constructing a ResponseBody from a Reader and an already known size such that Content-Length may be set on
ResponseBody::from_reader_and_size for constructing a ResponseBodyReader and an already known size such that Content-Length may beReplace all uses of deprecated try! with ? to suppress warnings that can leak out of macro contexts.
try! with ? to suppress warnings that can
leak out of macro contexts.Add Server::poll_timeout() for polling more efficiently.
Server::poll_timeout() for polling more efficiently.Server::stoppable() for running a single, cancellable server thread.Server::join() for finalising all in-flight requests before shutting down.tiny-http to 0.8.1 containing fixes for:
Transfer-Encoding: chunked on 1xx or 204 responses (which can lead
to clients hanging).Don't use deprecated Error::description()
url version increased to 2.0Error::description()Bump minimum supported Rust version to 1.20.0.
Request body (accessible with request.data())
has a Send bound.Fixed handling of url-encoded path components in route!() macro. Previously, URL was eagerly decoded and thus would fail to match intended routes if s
flate2 with deflateResponse::empty_204.Dropped the use of rustc-serialize in favor of using serde.
multipart to 0.13. The input::multipart::get_multipart_input function returns
types reexported from multipart which have small but breaking API changes.Server with an option to use a thread pool to process requestsNothing published for this version
Nothing published for this version
Nothing published for this version
input::cookies changed to return an iterator that yields (&str, &str).
input::cookies changed to return an iterator that yields (&str, &str).The content_encoding module now supports brotli.
content_encoding module now supports brotli.accept! macro similar to a match expression that chooses a block depending on the
value of the Accept header of the request.proxy::full_proxy. It behaves the same as proxy but returns more status codes and less
errors.Response::from_data, from_file, with_content_disposition_attachment, empty_406,
with_public_cache, with_private_cache, with_no_cache, without_header,
with_additional_header and with_unique_header for easier response manipulation.Request::headers() that provides an iterator to the list of headers.input::priority_header_preferred and input::parse_priority_header to easily parse
request headers such as Accept or Accept-Language.content_encoding module.text/xml to application/xml in the MIME types auto-determination.Added a Server struct as an alternative to start_server for manual control over the behavior.
Server struct as an alternative to start_server for manual control over the behavior.content_encoding::apply function that applies Content-Encoding to a response.try_or_400! macro now returns a response whose body describes the error in JSON.try_or_400! macro now requires the error to implement the std::error::Error trait.Added support for websockets with the websocket module.
websocket module.Request::do_not_track() to query the DNT header.get_json_input() to json_input().get_cookies() to cookies().get_basic_http_auth() to basic_http_auth().Request::header() now returns a Option<&str> instead of Option<String>.Response::svg() and Response::html() now take a Into<String> instead of a Into<Vec<u8>>.Response::error() and success() to is_error() and is_success().headers field of Response are now Vec<(Cow<'static, str>, Cow<'static, str>)> instead
of Vec<(String, String)>.Response::redirect and replaced it with redirect_301, redirect_302, etc.Response::with_etag() to add an ETag header to a response.upgrade field to Response, necessary for websockets.plain_text_body now has a limit of 1 MB of data before returning an error.plain_text_body_with_limit which does the same as plain_text_body but with a
customizable limit.std::error::Error trait on all error types.Response::into_reader_and_size() to retrieve a Read object from a ResponseBody./ and \ mismatch.Added the proxy module with basic reverse proxy.
proxy module with basic reverse proxy.Added the rouille::plain_text_body function.
rouille::input::plain_text_body function.Empty Vecs are now allowed for POST input.
Reworked POST input. You can now use the post_input! macro instead of creating a decodable struct.
post_input! macro instead of creating a decodable
struct.input::session module and replaced it with the session module. Sessions no longer
store data in a hashmap, but instead only provide a way to generate a unique ID per client.Nothing published for this version
Nothing published for this version
Fixed the + character in the query string not being replaced with a space as it should.
+ character in the query string not being replaced with a space as it should.Request::data() now returns an Option<impl Read> instead of a Vec<u8>. If data() is
called twice, the second call will return None.RouteError has been removed. You are now encouraged to return a Response everywhere instead
of a Result<Response, RouteError>.try_or_400!, find_route! and assert_or_4OO! macros and the match_assets function have
been adjusted for the previous change.try_or_404! macro similar to try_or_400!.Response::empty_400(), Response::empty_404(), Response::success() and
Response::error().Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →