PackageTrack
Sign in Get early access

warp

serve the web at warp speeds

0.4.3 47M downloads/mo #1275 most downloaded on crates.io seanmonstar/warp

What this package is like to depend on

Last release 3 months ago

04 May 2026

Ships fairly regularly

a new release about every 6 months

Most releases are documented

notes for 36 of 43 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

43 releases · first in 2018

1 release in the last 12 months

see the full history below

Release timeline

43 releases · Mar 2018 to May 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 43
  1. 0.4.3 04 May 2026
    Release notes
    • Features:
      • Re-implement addr::remote() filter from v0.3.x.
      • Implement From<&'static [u8]> for Body.
      • Add reply::stream() helper.
    • Fixes:
      • Fix returning error from CORS if no request-method header.
    Open source →
  2. 0.4.2 19 Aug 2025
    Release notes
    • Features:
      • Add support for passing UnixListener to incoming(listener).
    • Fixes:
      • Reduce some dependencies when server is not enabled.
    Open source →
  3. 0.4.1 06 Aug 2025
    Release notes

    Fixes:

    • Fix Server::graceful() bounds incorrect requiring the filter to be a future.
    • Enable tokio/net when the server feature is enabled.
    • Render cfgs in the docs.

    Full Changelog: v0.4.0...v0.4.1

    Open source →
    Release notes
    • Fixes:
      • Fix Server::graceful() bounds incorrect requiring the filter to be a future.
      • Enable tokio/net when the server feature is enabled.
      • Render cfgs in the docs.

    v0.4.0 (August 5, 2025)

    • Changes:
      • Upgrade to hyper, http, and http-body to v1.
      • Remove multipart and websocket features from being enabled by default.
      • Put warp::serve() behind a server feature, not enabled by default.
      • Put warp::test behind a test feature, not enabled by default.
      • Remove tls feature and types.
      • Remove warp::addr filters.
    Open source →
  4. 0.4.0 05 Aug 2025
    Release notes

    Changes:

    • Upgrade to hyper, http, and http-body to v1.
    • Remove multipart and websocket features from being enabled by default.
    • Put warp::serve() behind a server feature, not enabled by default.
    • Put warp::test behind a test feature, not enabled by default.
    • Remove tls feature and types.
    • Remove warp::addr filters.

    Full Changelog: v0.3.7...v0.4.0

    Open source →
  5. 0.3.7 05 Apr 2024
    Release notes

    tl;dr

    • Features:
      • Add ecc private key support to tls() config.
    • Fixes:
      • Several dependency upgrades.

    What's Changed

    New Contributors

    Full Changelog: v0.3.6...v0.3.7

    Open source →
    Release notes
    • Features:
      • Add ecc private key support to tls() config.
    • Fixes:
      • Several dependency upgrades.
    Open source →
  6. 0.3.6 27 Sep 2023
    Release notes

    Features

    • Add ability to pass None to multipart::form().max_length().
    • Implement Reply for Result<impl Reply, impl Reply>.
    • Make multipart::Part::content_type() return the full mime string.
    • Add TlsServer::try_bind_with_graceful_shutdown().

    Fixes

    • Updated tungstenite and rustls dependencies for security fixes.

    New Contributors

    Open source →
    Release notes
    • Features:
      • Add ability to pass None to multipart::form().max_length().
      • Implement Reply for Result<impl Reply, impl Reply>.
      • Make multipart::Part::content_type() return the full mime string.
      • Add TlsServer::try_bind_with_graceful_shutdown().
    • Fixes:
      • Updated tungstenite and rustls dependencies for security fixes.
    Open source →
  7. 0.3.5 28 Apr 2023
    Release notes

    Fixes

    • multipart filters now use multer dependency, fixing some streaming bugs.
    • Rejection::into_response() is significantly faster.

    New Contributors

    Open source →
    Release notes
    • Fixes:
      • multipart filters now use multer dependency, fixing some streaming bugs.
      • Rejection::into_response() is significantly faster.
    Open source →
  8. 0.3.4 31 Mar 2023
    Release notes

    Fixes

    • multipart::Part data is now streamed instead of buffered.
    • Update dependency used for multipart filters.

    New Contributors

    Open source →
    Release notes
    • Fixes:
      • multipart::Part data is now streamed instead of buffered.
      • Update dependency used for multipart filters.
    Open source →
  9. 0.3.3 27 Sep 2022
    Release notes
    • Fixes:
      • Fix fs filters path sanitization to reject colons on Windows.
    Open source →
    Release notes
    • Fixes:
      • Fix fs filters path sanitization to reject colons on Windows.
    Open source →
  10. 0.3.2 09 Nov 2021
    Release notes

    Features:

    • Add Filter::then(), which is like Filter::map() in that it's infallible, but is async like Filter::and_then().
    • Add redirect::found() reply helper that returns 302 Found.
    • Add compression-brotli and compression-gzip cargo features to enable only the compression you need.
    • Allow HEAD requests to be served to fs::dir() filters.
    • Allow path!() with no arguments.

    Fixes:

    • Update private dependencies Tungstenite and Multipart.
    • Replaces uses of futures with futures-util, which is a smaller dependency.

    New Contributors

    Open source →
    Release notes
    • Features:
      • Add Filter::then(), which is like Filter::map() in that it's infallible, but is async like Filter::and_then().
      • Add redirect::found() reply helper that returns 302 Found.
      • Add compression-brotli and compression-gzip cargo features to enable only the compression you need.
      • Allow HEAD requests to be served to fs::dir() filters.
      • Allow path!() with no arguments.
    • Fixes:
      • Update private dependencies Tungstenite and Multipart.
      • Replaces uses of futures with futures-util, which is a smaller dependency.
    Open source →
  11. 0.3.1 25 Mar 2021
    Release notes
    • Features:
      • Add pong constructor to websocket messages.
      • Add redirect::see_other and redirect::permanent helpers.
    • Fixes:
      • Fix fs filters sometimes having an off-by-one error with range requests.
      • Fix CORS to allow spaces when checking Access-Control-Request-Headers.

    v0.3.0 (January 19, 2021)

    • Features:
      • Add TLS client authentication support.
      • Add TLS OCSP stapling support.
      • Add From<Reject> for Rejection.
      • Add close_frame accessor to ws::Message.
    • Changes:
      • Update to Tokio v1.
      • Update to Bytes v1.
      • Update to hyper v0.14.
      • Rework sse filter to be more like ws, with a single Event type and builder.
      • Change cookie filter to extract a generic FromStr value.
    Open source →
  12. 0.3.0 19 Jan 2021

    Nothing published for this version

  13. 0.2.5 31 Aug 2020
    Release notes
    • Features:
      • Add wrap_fn, which can be used to create a Wrap from a closure. These in turn are used with Filter::with().
      • Add warp::host filters to deal with Host/:authority headers.
      • Relax some lifetime bounds on Server.
    • Fixes:
      • Fix panic when URI doesn't have a slash (for example, CONNECT foo.bar).
    Open source →
  14. 0.2.4 20 Jul 2020
    Release notes
    • Features:
      • Add tracing internals in place of log (log is still emitted for backwards compatibility).
      • Add warp::trace module set of filters to customize tracing dianostics.
      • Add path method to warp::fs::File reply.
      • Add source implementation for BodyDeserializeError.
      • Make warp::ws::MissingConnectionUpgrade rejection public.
    Open source →
  15. 0.2.3 19 May 2020
    Release notes
    • Features:
      • Add warp::compression filters, which will compress response bodies.
      • Add warp::header::value() filter to get a request HeaderValue.
      • Add request_headers method to warp::log::Info.
      • Add max_frame_size to warp::ws::Ws builder.
      • Add remote_addr to warp::test::RequestBuilder.
      • Add try_bind_with_graceful_shutdown to warp::Server builder.
      • Add serve_incoming_with_graceful_shutdown to warp::Server builder.
    • Fixes:
      • Fix warp::addr::remote when used with Server::tls.
      • Fix panic in warp::path::{peek, tail, full} filters when the request URI is in authority-form or asterisk-form.
    Open source →
  16. 0.2.2 03 Mar 2020
    Release notes
    • Features:
      • Implement Reply for all Box<T> where T: Reply.
      • Add name methods to MissingHeader, InvalidHeader, and MissingCookie rejections.
      • Add warp::ext::optional() filter that optionally retrieves an extension from the request.
    • Fixes:
      • Fix the sending of pings when a user sends a ws::Message::ping().
    Open source →
  17. 0.2.1 23 Jan 2020
    Release notes
    • Features:
      • Add close and close_with constructors to warp::ws::Message.
    • Fixes:
      • Fix warp::fs filters using a very small read buffer.

    v0.2.0 (January 16, 2020)

    • Features:
      • Update to std::future, adding async/await support!
      • Add warp::service() to convert a Filter into a tower::Service.
      • Implement Reply for Box<dyn Reply>.
    • Changes:
      • Refactored Rejection system (#311).
      • Change path! macro to assume a path::end() by default, with explicit / .. to allow building a prefix (#359).
      • Change warp::path(str) to accept any AsRef<str> argument.
      • Rename "2"-suffixed filters and types (get2 to get, ws2 to ws, etc).
      • Filter::{or, or_else, recover} now require Self::Error=Rejection. This helps catch filters that didn't make sense (like warp::any().or(warp::get())).
      • Change several warp::body filters (#345).
      • Change warp::cors() to return a warp::cors::Builder which still implements Wrap, but can also build a cheaper-to-clone wrapper.
      • Change warp::multipart stream API to allow for errors when streaming.
      • Change warp::sse to no longer return a Filter, adds warp::sse::reply to do what Sse::reply did.
      • Change Server::tls() to return a TLS server builder (#340).
      • Change internal warp::never::Never usage with std::convert::Infallible.
      • Remove warp::ext::set() function (#222).
      • Remove deprecated warp::cookie::optional_value().
    Open source →
  18. 0.2.0 16 Jan 2020

    Nothing published for this version

  19. 0.1.23 31 Aug 2020

    Nothing published for this version

  20. 0.1.22 16 Mar 2020

    Nothing published for this version

  21. 0.1.21 27 Feb 2020

    Nothing published for this version

  22. 0.1.20 18 Sep 2019
    Release notes
    • Features:
      • Implement Clone for the warp::cors filter.
      • Add into_bytes method for warp::ws::Message.
    Open source →
  23. 0.1.19 16 Aug 2019
    Release notes
    • Features:
      • Make warp::multipart and wrap::ws support optional, though enabled by default.
    • Fixes:
      • Fix warp::fs::dir filter to reject paths containing backslashes.
    Open source →
  24. 0.1.18 26 Jul 2019
    Release notes
    • Features:
      • Add warp::multipart support.
    Open source →
  25. 0.1.17 08 Jul 2019
    Release notes
    • Features:
      • Export all built-in Rejection causes in the warp::reject module.
      • Add Server::try_bind as fallible bind methods.
    Open source →
  26. 0.1.16 11 Jun 2019
    Release notes
    • Features:
      • Unseal the Reply trait: custom types can now implement Reply.
      • Add warp::sse::keep_alive() replacement for warp::sse::keep() which allows customizing keep-alive behavior.
      • Add warp::log::Info::host() accessor.
    • Fixes:
      • Fix warp::fs filters from sending some headers for 304 responses.
    Open source →
  27. 0.1.15 02 Apr 2019
    Release notes
    • Features:
      • Add more accessors to warp::log::Info type for building custom log formats.
      • Implement Reply for Cow<'static, str>.
    Open source →
  28. 0.1.14 20 Mar 2019
    Release notes
    • Features:
      • Add warp::header::optional filter.
    Open source →
  29. 0.1.13 13 Feb 2019
    Release notes
    • Features:
      • Implement Reply for Vec<u8> and &'static [u8].
      • Set content-type header automatically for string and bytes replies.
      • Add expose_headers to warp::cors filter.
    Open source →
  30. 0.1.12 29 Jan 2019
    Release notes
    • Features:
      • Implement PartialEq, Eq, and Clone for warp::ws::Message.
    • Fixes:
      • Fix panic when incoming request URI may not have a path (such as CONNECT requests).
    Open source →
  31. 0.1.11 14 Jan 2019
    Release notes
    • Features:
      • Add warp::sse filters for handling Server-Sent-Events.
      • Add allow_headers to warp::cors filter.
    • Fixes:
      • Fix TLS handshake to close the connection if handshake fails.
    Open source →
  32. 0.1.10 17 Dec 2018
    Release notes
    • Features:
      • Add optional TLS support. Enable the tls feature, and then use Server::tls.
      • Add warp::cors filter for CORS support.
      • Add warp::addr::remote to access the remote address of a request.
      • Add warp::log::custom to support customizing of access logging.
      • Add warp::test::ws to improve testing Websocket filters.
    Open source →
  33. 0.1.9 31 Oct 2018
    Release notes
    • Features:
      • Add warp::ext::get and warp::ext::set to set request extensions.
      • Add Filter::untuple_one to unroll nested tuple layers from extractions.
      • Add Ws2::max_send_queue configuration method.
      • Add ws::Message::is_ping method, and yield pings to user code.
    • Fixes:
      • Fix panic in debug mode when receiving a websocket ping.
    Open source →
  34. 0.1.8 25 Oct 2018
    Release notes
    • Features:
      • Improved flexibility of Rejection system.

        The Rejection type can now nest and combine arbitrary rejections, so it is no longer bound to a small set of meanings. The ranking of status codes is still used to determine which rejection gets priority.

        A different priority can be implemented by handling rejections with a Filter::recover, and searching for causes in order via Rejection::find_cause.

        • Adds warp::reject::custom() to create a Rejection with any Into<Box<std::error::Error>>. These rejections should be handled with an eventual Filter::recover. Any unhandled custom rejections are considered a server error.
        • Deprecates Rejection::with. Use custom rejections instead.
        • Deprecates Rejection::into_cause, as it can no longer work. Always returns Err(Rejection).
        • Deprecates Rejection::json, since the format needed is too generic. The errors.rs example shows how to send custom JSON when recovering from rejections.
        • Deprecates warp::reject(), since it current signals a 400 Bad Request, but in newer versions, it will signal 404 Not Found. It's deprecated simply to warn that the semantics are changing, but the function won't actually go away.
        • Deprecates reject::bad_request(), reject::forbidden(), and reject::server_error(). Uses custom rejections instead.
      • Renamed warp::path::index to warp::path::end.

    Open source →
  35. 0.1.7 15 Oct 2018
    Release notes
    • Features:

      • Export the types returned from the warp::body::stream() filter, BodyStream and StreamBuf.
      • Deprecated Rejection::into_cause, since an upcoming Rejection refactor will make it impossible to support.
    • Fixes:

      • Fix websocket filters to do a case-insensitive match of the Connection header.
    Open source →
  36. 0.1.6 05 Oct 2018
    Release notes
    • Features:
      • Add Conditional and Range request support for warp::fs filters.
      • Relaxed bounds on Rejection::with to no longer need to be Sized.
      • Add warp::path::peek() which gets the unmatched tail without adjusting the currently matched path.
    Open source →
  37. 0.1.5 03 Oct 2018
    Release notes
    • Features:

      • Serve index.html automatically with warp::fs::dir filter.
      • Include last-modified header with warp::fs filters.
      • Add warp::redirect to easily reply with redirections.
      • Add warp::reply::{with_status, with_header} to wrap impl Replys directly with a new status code or header.
      • Add support for running a warp Server with a custom source of incoming connections.
        • Server::run_incoming to have the runtime started automatically.
        • Server::serve_incoming to get a future to run on existing runtime.
        • These can be used to support Unix Domain Sockets, TLS, and other transports.
      • Add Rejection::into_cause() to retrieve the original error of a rejection back.
      • Add Rejection::json() to convert a rejection into a JSON response.
    • Fixes

      • Internal errors in warp that result in rendering a 500 Internal Server Error are now also logged at the error level.
    Open source →
  38. 0.1.4 26 Sep 2018
    Release notes
    • Features:
      • Add warp::reply::with::headers(HeaderMap) filter wrapper.
      • Add warp::cookie::optional() to get an optional cookie value.
      • Add warp::path::full() to be able to extract the full request path without affecting route matching.
      • Add graceful shutdown support to the Server.
      • Allow empty query strings to be treated as for warp::query().
    Open source →
  39. 0.1.3 28 Aug 2018
    Release notes
    • Features:
      • Add warp::reject::forbidden() to represent 403 Forbidden responses.
      • Add Rejection::with(cause) to customize rejection messages.
    • Fixes:
      • Fix warp::body::form to allow charsets in the content-type header.
    Open source →
  40. 0.1.2 14 Aug 2018
    Release notes
    • Features:
      • Implemented Reply for Response<impl Into<hyper::Body>, allowing streaming response bodies.
      • Add warp::body::stream() filter to access the request body as an impl Stream.
      • Add warp::ws2() as a more flexible websocket filter.
        • This allows passing other extracted values to the upgrade callback, such as a value from a header or path.
        • Deprecates warp::ws(), and ws2() will become ws() in 0.2.
      • Add warp::get2(), warp::post2(), warp::put2(), and warp::delete2() as more standard method filters that are used via chaining instead of nesting.
        • get(), post(), put(), and delete() are deprecated, and the new versions will become them in 0.2.
      • Add Filter::unify() for when a filter returns Either<T, T>, converting the Either into the inner T, regardless of which variant it was.
        • This requires that both sides of the Either be the same type.

        • This can be useful when extracting a value that might be present in different places of the request.

          // Allow `MyId` to be a path parameter or a header...
          let id = warp::path::param::<MyId>()
              .or(warp::header::<MyId>())
              .unify();
          
          // A way of providing default values...
          let dnt = warp::header::<bool>("dnt")
              .or(warp::any().map(|| true))
              .unify();
          
      • Add content-type header automatically to replies from file and dir filters based on file extension.
      • Add warp::head(), warp::options(), and warp::patch() as new Method filters.
      • Try to use OS blocksize in warp::fs filters.
    • Fixes:
      • Chaining filters that try to consume the request body will log that the body is already consumed, and return a 500 Internal Server Error rejection.
    Open source →
  41. 0.1.1 08 Aug 2018
    Release notes
    • Features:
      • Add warp::query::raw() filter to get query as a String.
      • Add Filter::recover() to ease customizing of rejected responses.
      • Add warp::header::headers_clone() filter to get a clone of request's HeaderMap.
      • Add warp::path::tail() filter to get remaining "tail" of the request path.
    • Fixes:
      • URL decode path segments in warp::fs filters.

    v0.1.0 (August 1, 2018)

    • Initial release.
    Open source →
  42. 0.1.0 01 Aug 2018

    Nothing published for this version

  43. 0.0.0 29 Mar 2018

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive