2019-03-26 19:54:35 +01:00
# Changes
2023-08-29 00:44:35 +02:00
## Unreleased
2023-01-21 19:52:57 +01:00
2023-08-29 02:51:54 +02:00
## 3.4.0
2023-03-13 14:31:48 +01:00
### Added
2023-08-27 01:07:11 +02:00
- Add `rustls-0_20` crate feature.
2023-08-29 02:51:54 +02:00
- Add `{h1::H1Service, h2::H2Service, HttpService}::rustls_021()` and `HttpService::rustls_021_with_config()` service constructors.
2023-08-29 02:57:19 +02:00
- Add `body::to_bytes_limited()` function.
2023-03-13 14:31:48 +01:00
- Add `body::BodyLimitExceeded` error type.
2023-07-02 02:09:15 +02:00
### Changed
2023-08-01 20:33:32 +02:00
- Minimum supported Rust version (MSRV) is now 1.68 due to transitive `time` dependency.
2023-07-02 02:09:15 +02:00
2023-08-29 00:44:35 +02:00
## 3.3.1
2023-03-02 18:09:26 +01:00
2023-03-02 17:21:13 +01:00
### Fixed
- Use correct `http` version requirement to ensure support for const `HeaderName` definitions.
2023-08-29 00:44:35 +02:00
## 3.3.0
2023-02-26 01:55:57 +01:00
2022-09-14 12:23:22 +02:00
### Added
2023-02-26 01:55:57 +01:00
2023-01-06 22:56:16 +01:00
- Implement `MessageBody` for `Cow<'static, str>` and `Cow<'static, [u8]>` . [#2959]
2022-09-14 12:23:22 +02:00
- Implement `MessageBody` for `&mut B` where `B: MessageBody + Unpin` . [#2868]
- Implement `MessageBody` for `Pin<B>` where `B::Target: MessageBody` . [#2868]
2023-01-03 15:43:02 +01:00
- Automatic h2c detection via new service finalizer `HttpService::tcp_auto_h2c()` . [#2957]
2023-01-30 17:36:12 +01:00
- `HeaderMap::retain()` . [#2955]
2023-01-21 01:02:54 +01:00
- Header name constants in `header` module. [#2956] [#2968]
- `CACHE_STATUS`
- `CDN_CACHE_CONTROL`
2023-01-02 14:33:31 +01:00
- `CROSS_ORIGIN_EMBEDDER_POLICY`
- `CROSS_ORIGIN_OPENER_POLICY`
- `PERMISSIONS_POLICY`
- `X_FORWARDED_FOR`
- `X_FORWARDED_HOST`
- `X_FORWARDED_PROTO`
2022-09-14 12:23:22 +02:00
2023-01-21 01:51:49 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
2023-01-21 01:51:49 +01:00
- Fix non-empty body of HTTP/2 HEAD responses. [#2920]
2022-09-25 16:32:26 +02:00
### Performance
2023-02-26 01:55:57 +01:00
2022-09-25 16:32:26 +02:00
- Improve overall performance of operations on `Extensions` . [#2890]
2023-01-06 22:56:16 +01:00
[#2959]: https://github.com/actix/actix-web/pull/2959
2022-09-14 12:23:22 +02:00
[#2868]: https://github.com/actix/actix-web/pull/2868
2022-09-25 16:32:26 +02:00
[#2890]: https://github.com/actix/actix-web/pull/2890
2023-01-21 01:51:49 +01:00
[#2920]: https://github.com/actix/actix-web/pull/2920
2023-01-03 15:43:02 +01:00
[#2957]: https://github.com/actix/actix-web/pull/2957
2023-01-02 14:38:07 +01:00
[#2955]: https://github.com/actix/actix-web/pull/2955
2023-01-02 14:33:31 +01:00
[#2956]: https://github.com/actix/actix-web/pull/2956
2023-01-21 01:02:54 +01:00
[#2968]: https://github.com/actix/actix-web/pull/2968
2022-09-11 17:41:29 +02:00
2023-08-29 00:44:35 +02:00
## 3.2.2
2023-02-26 01:55:57 +01:00
2022-08-27 14:14:16 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2022-08-27 14:14:16 +02:00
- Minimum supported Rust version (MSRV) is now 1.59 due to transitive `time` dependency.
2022-07-24 17:35:00 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2022-07-24 17:35:00 +02:00
- Avoid possibility of dispatcher getting stuck while back-pressuring I/O. [#2369]
[#2369]: https://github.com/actix/actix-web/pull/2369
2022-07-02 17:50:54 +02:00
2023-08-29 00:44:35 +02:00
## 3.2.1
2023-02-26 01:55:57 +01:00
2022-07-01 09:23:40 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2022-07-01 09:23:40 +02:00
- Fix parsing ambiguity in Transfer-Encoding and Content-Length headers for HTTP/1.0 requests. [#2794]
[#2794]: https://github.com/actix/actix-web/pull/2794
2022-07-01 07:16:17 +02:00
2023-08-29 00:44:35 +02:00
## 3.2.0
2023-02-26 01:55:57 +01:00
2022-06-24 05:46:17 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2022-06-22 13:08:06 +02:00
- Minimum supported Rust version (MSRV) is now 1.57 due to transitive `time` dependency.
2022-06-11 17:15:43 +02:00
2022-06-30 10:19:16 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2022-06-30 10:19:16 +02:00
- Websocket parser no longer throws endless overflow errors after receiving an oversized frame. [#2790]
- Retain previously set Vary headers when using compression encoder. [#2798]
2022-06-24 05:46:17 +02:00
[#2790]: https://github.com/actix/actix-web/pull/2790
2022-06-30 10:19:16 +02:00
[#2798]: https://github.com/actix/actix-web/pull/2798
2022-06-24 05:46:17 +02:00
2023-08-29 00:44:35 +02:00
## 3.1.0
2023-02-26 01:55:57 +01:00
2022-06-11 05:03:26 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2022-06-11 05:03:26 +02:00
- Minimum supported Rust version (MSRV) is now 1.56 due to transitive `hashbrown` dependency.
2022-03-05 23:26:19 +01:00
2022-06-11 14:43:13 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2022-06-11 14:43:13 +02:00
- Revert broken fix in [#2624] that caused erroneous 500 error responses. Temporarily re-introduces [#2357] bug. [#2779]
2022-07-24 17:35:00 +02:00
[#2624]: https://github.com/actix/actix-web/pull/2624
2022-06-11 17:15:43 +02:00
[#2357]: https://github.com/actix/actix-web/issues/2357
2022-07-24 17:35:00 +02:00
[#2779]: https://github.com/actix/actix-web/pull/2779
2022-06-11 14:43:13 +02:00
2023-08-29 00:44:35 +02:00
## 3.0.4
2023-02-26 01:55:57 +01:00
2022-03-09 19:13:39 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
- Document on docs.rs with `ws` feature enabled.
2022-03-09 19:13:39 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.3
2023-02-26 01:55:57 +01:00
2022-03-08 17:51:40 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
2022-03-08 17:51:40 +01:00
- Allow spaces between header name and colon when parsing responses. [#2684]
2022-07-24 17:35:00 +02:00
[#2684]: https://github.com/actix/actix-web/pull/2684
2022-03-08 17:51:40 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.2
2023-02-26 01:55:57 +01:00
2022-03-05 23:24:21 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
2022-03-05 23:26:19 +01:00
- Fix encoding camel-case header names with more than one hyphen. [#2683]
2022-03-05 23:24:21 +01:00
2022-07-24 17:35:00 +02:00
[#2683]: https://github.com/actix/actix-web/pull/2683
2022-02-25 19:46:35 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.1
2023-02-26 01:55:57 +01:00
2022-03-04 04:16:02 +01:00
- Fix panic in H1 dispatcher when pipelining is used with keep-alive. [#2678]
[#2678]: https://github.com/actix/actix-web/issues/2678
2023-08-29 00:44:35 +02:00
## 3.0.0
2023-02-26 01:55:57 +01:00
2022-02-25 19:46:35 +01:00
### Dependencies
2023-02-26 01:55:57 +01:00
2022-02-25 19:46:35 +01:00
- Updated `actix-*` to Tokio v1-based versions. [#1813]
- Updated `bytes` to `1.0` . [#1813]
- Updated `h2` to `0.3` . [#1813]
- Updated `rustls` to `0.20.0` . [#2414]
- Updated `language-tags` to `0.3` .
- Updated `tokio` to `1` .
### Added
2023-02-26 01:55:57 +01:00
2022-02-25 19:46:35 +01:00
- Crate Features:
- `ws` ; disabled by default. [#2618]
- `http2` ; disabled by default. [#2618]
- `compress-brotli` ; disabled by default. [#2618]
- `compress-gzip` ; disabled by default. [#2618]
- `compress-zstd` ; disabled by default. [#2618]
- Functions:
- `body::to_bytes` for async collecting message body into Bytes. [#2158]
- Traits:
- `TryIntoHeaderPair` ; allows using typed and untyped headers in the same methods. [#1869]
- Types:
- `body::BoxBody` ; a boxed message body with boxed errors. [#2183]
- `body::EitherBody` enum. [#2468]
- `body::None` struct. [#2468]
- Re-export `http` crate's `Error` type as `error::HttpError` . [#2171]
- Variants:
- `ContentEncoding::Zstd` along with . [#2244]
- `Protocol::Http3` for future compatibility and also mark `#[non_exhaustive]` . [00ba8d55]
- Methods:
- `ContentEncoding::to_header_value()` . [#2501]
- `header::QualityItem::{max, min}()` . [#2486]
- `header::QualityItem::zero()` that uses `Quality::ZERO` . [#2501]
- `HeaderMap::drain()` as an efficient draining iterator. [#1964]
- `HeaderMap::len_keys()` has the behavior of the old `len` method. [#1964]
- `MessageBody::boxed` trait method for wrapping boxing types efficiently. [#2520]
- `MessageBody::try_into_bytes` trait method, with default implementation, for optimizations on body types that complete in exactly one poll. [#2522]
- `Request::conn_data()` . [#2491]
- `Request::take_conn_data()` . [#2491]
- `Request::take_req_data()` . [#2487]
- `Response::{ok, bad_request, not_found, internal_server_error}()` . [#2159]
- `Response::into_body()` that consumes response and returns body type. [#2201]
- `Response::map_into_boxed_body()` . [#2468]
- `ResponseBuilder::append_header()` method which allows using typed and untyped headers. [#1869]
- `ResponseBuilder::insert_header()` method which allows using typed and untyped headers. [#1869]
- `ResponseHead::set_camel_case_headers()` . [#2587]
- `TestRequest::insert_header()` method which allows using typed and untyped headers. [#1869]
- Implementations:
- Implement `Clone for ws::HandshakeError` . [#2468]
- Implement `Clone` for `body::AnyBody<S> where S: Clone` . [#2448]
- Implement `Clone` for `RequestHead` . [#2487]
- Implement `Clone` for `ResponseHead` . [#2585]
- Implement `Copy` for `QualityItem<T> where T: Copy` . [#2501]
- Implement `Default` for `ContentEncoding` . [#1912]
- Implement `Default` for `HttpServiceBuilder` . [#2611]
- Implement `Default` for `KeepAlive` . [#2611]
- Implement `Default` for `Response` . [#2201]
- Implement `Default` for `ws::Codec` . [#1920]
- Implement `Display` for `header::Quality` . [#2486]
- Implement `Eq` for `header::ContentEncoding` . [#2501]
- Implement `ExactSizeIterator` and `FusedIterator` for all `HeaderMap` iterators. [#2470]
- Implement `From<Duration>` for `KeepAlive` . [#2611]
- Implement `From<Option<Duration>>` for `KeepAlive` . [#2611]
- Implement `From<Vec<u8>>` for `Response<Vec<u8>>` . [#2625]
- Implement `FromStr` for `ContentEncoding` . [#1912]
- Implement `Header` for `ContentEncoding` . [#1912]
- Implement `IntoHeaderValue` for `ContentEncoding` . [#1912]
- Implement `IntoIterator` for `HeaderMap` . [#1964]
- Implement `MessageBody` for `bytestring::ByteString` . [#2468]
- Implement `MessageBody` for `Pin<Box<T>> where T: MessageBody` . [#2152]
- Misc:
- Re-export `StatusCode` , `Method` , `Version` and `Uri` at the crate root. [#2171]
- Re-export `ContentEncoding` and `ConnectionType` at the crate root. [#2171]
- `Quality::ZERO` associated constant equivalent to `q=0` . [#2501]
- `header::Quality::{MAX, MIN}` associated constants equivalent to `q=1` and `q=0.001` , respectively. [#2486]
- Timeout for canceling HTTP/2 server side connection handshake. Configurable with `ServiceConfig::client_timeout` ; defaults to 5 seconds. [#2483]
- `#[must_use]` for `ws::Codec` to prevent subtle bugs. [#1920]
### Changed
2023-02-26 01:55:57 +01:00
2022-02-25 19:46:35 +01:00
- Traits:
- Rename `IntoHeaderValue => TryIntoHeaderValue` . [#2510]
- `MessageBody` now has an associated `Error` type. [#2183]
- Types:
- `Protocol` enum is now marked `#[non_exhaustive]` .
- `error::DispatcherError` enum is now marked `#[non_exhaustive]` . [#2624]
- `ContentEncoding` is now marked `#[non_exhaustive]` . [#2377]
- Error enums are marked `#[non_exhaustive]` . [#2161]
- Rename `PayloadStream` to `BoxedPayloadStream` . [#2545]
- The body type parameter of `Response` no longer has a default. [#2152]
- Enum Variants:
- Rename `ContentEncoding::{Br => Brotli}` . [#2501]
- `Payload` inner fields are now named. [#2545]
- `ws::Message::Text` now contains a `bytestring::ByteString` . [#1864]
- Methods:
- Rename `ServiceConfig::{client_timer_expire => client_request_deadline}` . [#2611]
- Rename `ServiceConfig::{client_disconnect_timer => client_disconnect_deadline}` . [#2611]
- Rename `h1::Codec::{keepalive => keep_alive}` . [#2611]
- Rename `h1::Codec::{keepalive_enabled => keep_alive_enabled}` . [#2611]
- Rename `h1::ClientCodec::{keepalive => keep_alive}` . [#2611]
- Rename `h1::ClientPayloadCodec::{keepalive => keep_alive}` . [#2611]
- Rename `header::EntityTag::{weak => new_weak, strong => new_strong}` . [#2565]
- Rename `TryIntoHeaderValue::{try_into => try_into_value}` to avoid ambiguity with std `TryInto` trait. [#1894]
- Deadline methods in `ServiceConfig` now return `std::time::Instant` s instead of Tokio's wrapper type. [#2611]
- Places in `Response` where `ResponseBody<B>` was received or returned now simply use `B` . [#2201]
- `encoding::Encoder::response` now returns `AnyBody<Encoder<B>>` . [#2448]
- `Extensions::insert` returns replaced item. [#1904]
- `HeaderMap::get_all` now returns a `std::slice::Iter` . [#2527]
- `HeaderMap::insert` now returns iterator of removed values. [#1964]
- `HeaderMap::len` now returns number of values instead of number of keys. [#1964]
- `HeaderMap::remove` now returns iterator of removed values. [#1964]
- `ResponseBuilder::body(B)` now returns `Response<EitherBody<B>>` . [#2468]
- `ResponseBuilder::content_type` now takes an `impl TryIntoHeaderValue` to support using typed `mime` types. [#1894]
- `ResponseBuilder::finish()` now returns `Response<EitherBody<()>>` . [#2468]
- `ResponseBuilder::json` now takes `impl Serialize` . [#2052]
- `ResponseBuilder::message_body` now returns a `Result` . [#2201]∑
- `ServiceConfig::keep_alive` now returns a `KeepAlive` . [#2611]
- `ws::hash_key` now returns array. [#2035]
- Trait Implementations:
- Implementation of `Stream` for `Payload` no longer requires the `Stream` variant be `Unpin` . [#2545]
- Implementation of `Future` for `h1::SendResponse` no longer requires the body type be `Unpin` . [#2545]
- Implementation of `Stream` for `encoding::Decoder` no longer requires the stream type be `Unpin` . [#2545]
- Implementation of `From` for error types now return a `Response<BoxBody>` . [#2468]
- Misc:
- `header` module is now public. [#2171]
- `uri` module is now public. [#2171]
- Request-local data container is no longer part of a `RequestHead` . Instead it is a distinct part of a `Request` . [#2487]
- All error trait bounds in server service builders have changed from `Into<Error>` to `Into<Response<BoxBody>>` . [#2253]
- All error trait bounds in message body and stream impls changed from `Into<Error>` to `Into<Box<dyn std::error::Error>>` . [#2253]
- Guarantee ordering of `header::GetAll` iterator to be same as insertion order. [#2467]
- Connection data set through the `on_connect_ext` callbacks is now accessible only from the new `Request::conn_data()` method. [#2491]
- Brotli (de)compression support is now provided by the `brotli` crate. [#2538]
- Minimum supported Rust version (MSRV) is now 1.54.
### Fixed
2023-02-26 01:55:57 +01:00
2022-02-25 19:46:35 +01:00
- A `Vary` header is now correctly sent along with compressed content. [#2501]
- HTTP/1.1 dispatcher correctly uses client request timeout. [#2611]
- Fixed issue where handlers that took payload but then dropped without reading it to EOF it would cause keep-alive connections to become stuck. [#2624]
- `ContentEncoding` 's `Identity` variant can now be parsed from a string. [#2501]
- `HttpServer::{listen_rustls(), bind_rustls()}` now honor the ALPN protocols in the configuration parameter. [#2226]
- Remove unnecessary `Into<Error>` bound on `Encoder` body types. [#2375]
- Remove unnecessary `Unpin` bound on `ResponseBuilder::streaming` . [#2253]
- `BodyStream` and `SizedStream` are no longer restricted to `Unpin` types. [#2152]
- Fixed slice creation pointing to potential uninitialized data on h1 encoder. [#2364]
- Fixed quality parse error in Accept-Encoding header. [#2344]
2022-02-22 09:45:28 +01:00
### Removed
2023-02-26 01:55:57 +01:00
2022-02-25 19:46:35 +01:00
- Crate Features:
- `compress` feature. [#2065]
- `cookies` feature. [#2065]
- `trust-dns` feature. [#2425]
- `actors` optional feature and trait implementation for `actix` types. [#1969]
- Functions:
- `header::qitem` helper. Replaced with `header::QualityItem::max` . [#2486]
- Types:
- `body::Body` ; replaced with `EitherBody` and `BoxBody` . [#2468]
- `body::ResponseBody` . [#2446]
- `ConnectError::SslHandshakeError` and re-export of `HandshakeError` . Due to the removal of this type from `tokio-openssl` crate. OpenSSL handshake error now returns `ConnectError::SslError` . [#1813]
- `error::Canceled` re-export. [#1994]
- `error::Result` type alias. [#2201]
- `error::BlockingError` [#2660]
- `InternalError` and all the error types it constructed were moved up to `actix-web` . [#2215]
- Typed HTTP headers; they have moved up to `actix-web` . [2094]
- Re-export of `http` crate's `HeaderMap` types in addition to ours. [#2171]
- Enum Variants:
- `body::BodySize::Empty` ; an empty body can now only be represented as a `Sized(0)` variant. [#2446]
- `ContentEncoding::Auto` . [#2501]
- `EncoderError::Boxed` . [#2446]
- Methods:
- `ContentEncoding::is_compression()` . [#2501]
- `h1::Payload::readany()` . [#2545]
- `HttpMessage::cookie[s]()` trait methods. [#2065]
- `HttpServiceBuilder::new()` ; use `default` instead. [#2611]
- `on_connect` (previously deprecated) methods have been removed; use `on_connect_ext` . [#1857]
- `Response::build_from()` . [#2159]
- `Response::error()` [#2205]
- `Response::take_body()` and old `Response::into_body()` method that casted body type. [#2201]
- `Response` 's status code builders. [#2159]
- `ResponseBuilder::{if_true, if_some}()` (previously deprecated). [#2148]
- `ResponseBuilder::{set, set_header}()` ; use `ResponseBuilder::insert_header()` . [#1869]
- `ResponseBuilder::extensions[_mut]()` . [#2585]
- `ResponseBuilder::header()` ; use `ResponseBuilder::append_header()` . [#1869]
- `ResponseBuilder::json()` . [#2148]
- `ResponseBuilder::json2()` . [#1903]
- `ResponseBuilder::streaming()` . [#2468]
- `ResponseHead::extensions[_mut]()` . [#2585]
- `ServiceConfig::{client_timer, keep_alive_timer}()` . [#2611]
- `TestRequest::with_hdr()` ; use `TestRequest::default().insert_header()` . [#1869]
- `TestRequest::with_header()` ; use `TestRequest::default().insert_header()` . [#1869]
- Trait implementations:
- Implementation of `Copy` for `ws::Codec` . [#1920]
- Implementation of `From<Option<usize>> for KeepAlive` ; use `Duration` s instead. [#2611]
- Implementation of `From<serde_json::Value>` for `Body` . [#2148]
- Implementation of `From<usize> for KeepAlive` ; use `Duration` s instead. [#2611]
- Implementation of `Future` for `Response` . [#2201]
- Implementation of `Future` for `ResponseBuilder` . [#2468]
- Implementation of `Into<Error>` for `Response<Body>` . [#2215]
- Implementation of `Into<Error>` for `ResponseBuilder` . [#2215]
- Implementation of `ResponseError` for `actix_utils::timeout::TimeoutError` . [#2127]
- Implementation of `ResponseError` for `CookieParseError` . [#2065]
- Implementation of `TryFrom<u16>` for `header::Quality` . [#2486]
- Misc:
- `http` module; most everything it contained is exported at the crate root. [#2488]
- `cookies` module (re-export). [#2065]
- `client` module. Connector types now live in `awc` . [#2425]
- `error` field from `Response` . [#2205]
- `downcast` and `downcast_get_type_id` macros. [#2291]
- Down-casting for `MessageBody` types; use standard `Any` trait. [#2183]
2022-02-22 09:45:28 +01:00
2022-02-25 19:46:35 +01:00
[#1813]: https://github.com/actix/actix-web/pull/1813
[#1845]: https://github.com/actix/actix-web/pull/1845
[#1857]: https://github.com/actix/actix-web/pull/1857
[#1864]: https://github.com/actix/actix-web/pull/1864
[#1869]: https://github.com/actix/actix-web/pull/1869
[#1878]: https://github.com/actix/actix-web/pull/1878
[#1894]: https://github.com/actix/actix-web/pull/1894
[#1903]: https://github.com/actix/actix-web/pull/1903
[#1904]: https://github.com/actix/actix-web/pull/1904
[#1912]: https://github.com/actix/actix-web/pull/1912
[#1920]: https://github.com/actix/actix-web/pull/1920
[#1964]: https://github.com/actix/actix-web/pull/1964
[#1969]: https://github.com/actix/actix-web/pull/1969
[#1981]: https://github.com/actix/actix-web/pull/1981
[#1994]: https://github.com/actix/actix-web/pull/1994
[#2035]: https://github.com/actix/actix-web/pull/2035
[#2052]: https://github.com/actix/actix-web/pull/2052
[#2065]: https://github.com/actix/actix-web/pull/2065
[#2094]: https://github.com/actix/actix-web/pull/2094
[#2127]: https://github.com/actix/actix-web/pull/2127
[#2148]: https://github.com/actix/actix-web/pull/2148
[#2152]: https://github.com/actix/actix-web/pull/2152
[#2158]: https://github.com/actix/actix-web/pull/2158
[#2159]: https://github.com/actix/actix-web/pull/2159
[#2161]: https://github.com/actix/actix-web/pull/2161
[#2171]: https://github.com/actix/actix-web/pull/2171
[#2183]: https://github.com/actix/actix-web/pull/2183
[#2196]: https://github.com/actix/actix-web/pull/2196
[#2201]: https://github.com/actix/actix-web/pull/2201
[#2205]: https://github.com/actix/actix-web/pull/2205
[#2215]: https://github.com/actix/actix-web/pull/2215
[#2244]: https://github.com/actix/actix-web/pull/2244
[#2250]: https://github.com/actix/actix-web/pull/2250
[#2253]: https://github.com/actix/actix-web/pull/2253
[#2291]: https://github.com/actix/actix-web/pull/2291
[#2344]: https://github.com/actix/actix-web/pull/2344
[#2364]: https://github.com/actix/actix-web/pull/2364
[#2375]: https://github.com/actix/actix-web/pull/2375
[#2377]: https://github.com/actix/actix-web/pull/2377
[#2414]: https://github.com/actix/actix-web/pull/2414
[#2425]: https://github.com/actix/actix-web/pull/2425
[#2442]: https://github.com/actix/actix-web/pull/2442
[#2446]: https://github.com/actix/actix-web/pull/2446
[#2448]: https://github.com/actix/actix-web/pull/2448
[#2456]: https://github.com/actix/actix-web/pull/2456
[#2467]: https://github.com/actix/actix-web/pull/2467
[#2468]: https://github.com/actix/actix-web/pull/2468
[#2470]: https://github.com/actix/actix-web/pull/2470
[#2474]: https://github.com/actix/actix-web/pull/2474
[#2483]: https://github.com/actix/actix-web/pull/2483
[#2486]: https://github.com/actix/actix-web/pull/2486
[#2487]: https://github.com/actix/actix-web/pull/2487
[#2488]: https://github.com/actix/actix-web/pull/2488
[#2491]: https://github.com/actix/actix-web/pull/2491
[#2497]: https://github.com/actix/actix-web/pull/2497
[#2501]: https://github.com/actix/actix-web/pull/2501
[#2510]: https://github.com/actix/actix-web/pull/2510
[#2520]: https://github.com/actix/actix-web/pull/2520
[#2522]: https://github.com/actix/actix-web/pull/2522
[#2527]: https://github.com/actix/actix-web/pull/2527
[#2538]: https://github.com/actix/actix-web/pull/2538
[#2545]: https://github.com/actix/actix-web/pull/2545
[#2565]: https://github.com/actix/actix-web/pull/2565
[#2585]: https://github.com/actix/actix-web/pull/2585
[#2587]: https://github.com/actix/actix-web/pull/2587
[#2611]: https://github.com/actix/actix-web/pull/2611
[#2618]: https://github.com/actix/actix-web/pull/2618
[#2624]: https://github.com/actix/actix-web/pull/2624
[#2625]: https://github.com/actix/actix-web/pull/2625
2022-02-22 09:45:28 +01:00
[#2660]: https://github.com/actix/actix-web/pull/2660
2022-02-25 19:46:35 +01:00
[00ba8d55]: https://github.com/actix/actix-web/commit/00ba8d55492284581695d824648590715a8bd386
2022-02-08 10:31:20 +01:00
2022-02-25 19:46:35 +01:00
< details >
< summary > 3.0.0 Pre-Releases< / summary >
2023-08-29 00:44:35 +02:00
## 3.0.0-rc.4
2023-02-26 01:55:57 +01:00
2022-02-25 19:46:35 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
2022-02-22 01:21:49 +01:00
- Fix h1 dispatcher panic. [1ce58ecb]
[1ce58ecb]: https://github.com/actix/actix-web/commit/1ce58ecb305c60e51db06e6c913b7a1344e229ca
2023-08-29 00:44:35 +02:00
## 3.0.0-rc.3
2022-02-16 04:07:12 +01:00
2023-02-26 01:55:57 +01:00
- No significant changes since `3.0.0-rc.2` .
2022-02-16 04:07:12 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-rc.2
2023-02-26 01:55:57 +01:00
2022-02-04 21:37:33 +01:00
### Added
2023-02-26 01:55:57 +01:00
2022-02-04 21:37:33 +01:00
- Implement `From<Vec<u8>>` for `Response<Vec<u8>>` . [#2625]
2022-02-03 08:03:39 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2022-02-03 08:03:39 +01:00
- `error::DispatcherError` enum is now marked `#[non_exhaustive]` . [#2624]
### Fixed
2023-02-26 01:55:57 +01:00
2022-02-03 08:03:39 +01:00
- Issue where handlers that took payload but then dropped without reading it to EOF it would cause keep-alive connections to become stuck. [#2624]
[#2624]: https://github.com/actix/actix-web/pull/2624
2022-02-04 21:37:33 +01:00
[#2625]: https://github.com/actix/actix-web/pull/2625
2022-01-31 23:22:40 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-rc.1
2023-02-26 01:55:57 +01:00
2022-01-31 18:30:34 +01:00
### Added
2023-02-26 01:55:57 +01:00
2022-01-31 18:30:34 +01:00
- Implement `Default` for `KeepAlive` . [#2611]
- Implement `From<Duration>` for `KeepAlive` . [#2611]
- Implement `From<Option<Duration>>` for `KeepAlive` . [#2611]
- Implement `Default` for `HttpServiceBuilder` . [#2611]
2022-01-31 22:22:23 +01:00
- Crate `ws` feature flag, disabled by default. [#2618]
- Crate `http2` feature flag, disabled by default. [#2618]
2022-01-31 18:30:34 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2022-01-31 18:30:34 +01:00
- Rename `ServiceConfig::{client_timer_expire => client_request_deadline}` . [#2611]
- Rename `ServiceConfig::{client_disconnect_timer => client_disconnect_deadline}` . [#2611]
- Deadline methods in `ServiceConfig` now return `std::time::Instant` s instead of Tokio's wrapper type. [#2611]
- Rename `h1::Codec::{keepalive => keep_alive}` . [#2611]
- Rename `h1::Codec::{keepalive_enabled => keep_alive_enabled}` . [#2611]
- Rename `h1::ClientCodec::{keepalive => keep_alive}` . [#2611]
- Rename `h1::ClientPayloadCodec::{keepalive => keep_alive}` . [#2611]
- `ServiceConfig::keep_alive` now returns a `KeepAlive` . [#2611]
### Fixed
2023-02-26 01:55:57 +01:00
2022-01-31 18:30:34 +01:00
- HTTP/1.1 dispatcher correctly uses client request timeout. [#2611]
### Removed
2023-02-26 01:55:57 +01:00
2022-01-31 18:30:34 +01:00
- `ServiceConfig::{client_timer, keep_alive_timer}` . [#2611]
- `impl From<usize> for KeepAlive` ; use `Duration` s instead. [#2611]
- `impl From<Option<usize>> for KeepAlive` ; use `Duration` s instead. [#2611]
- `HttpServiceBuilder::new` ; use `default` instead. [#2611]
[#2611]: https://github.com/actix/actix-web/pull/2611
2022-01-31 22:22:23 +01:00
[#2618]: https://github.com/actix/actix-web/pull/2618
2022-01-21 21:21:40 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.19
2023-02-26 01:55:57 +01:00
2022-01-16 04:16:26 +01:00
### Added
2023-02-26 01:55:57 +01:00
2022-01-16 04:16:26 +01:00
- Response headers can be sent as camel case using `res.head_mut().set_camel_case_headers(true)` . [#2587]
2022-01-19 03:09:25 +01:00
- `ResponseHead` now implements `Clone` . [#2585]
2022-01-16 04:16:26 +01:00
2022-01-15 16:43:18 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2022-01-15 16:43:18 +01:00
- Brotli (de)compression support is now provided by the `brotli` crate. [#2538]
2022-01-19 03:09:25 +01:00
### Removed
2023-02-26 01:55:57 +01:00
2022-01-19 03:09:25 +01:00
- `ResponseHead::extensions[_mut]()` . [#2585]
- `ResponseBuilder::extensions[_mut]()` . [#2585]
2022-01-15 16:43:18 +01:00
[#2538]: https://github.com/actix/actix-web/pull/2538
2022-01-19 03:09:25 +01:00
[#2585]: https://github.com/actix/actix-web/pull/2585
2022-01-16 04:16:26 +01:00
[#2587]: https://github.com/actix/actix-web/pull/2587
2022-01-04 16:34:52 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.18
2023-02-26 01:55:57 +01:00
2022-01-03 14:17:57 +01:00
### Added
2023-02-26 01:55:57 +01:00
2022-01-03 14:17:57 +01:00
- `impl Eq` for `header::ContentEncoding` . [#2501]
- `impl Copy` for `QualityItem` where `T: Copy` . [#2501]
- `Quality::ZERO` equivalent to `q=0` . [#2501]
- `QualityItem::zero` that uses `Quality::ZERO` . [#2501]
- `ContentEncoding::to_header_value()` . [#2501]
### Changed
2023-02-26 01:55:57 +01:00
2022-01-03 14:17:57 +01:00
- `Quality::MIN` is now the smallest non-zero value. [#2501]
- `QualityItem::min` semantics changed with `QualityItem::MIN` . [#2501]
- Rename `ContentEncoding::{Br => Brotli}` . [#2501]
2022-01-03 19:46:04 +01:00
- Rename `header::EntityTag::{weak => new_weak, strong => new_strong}` . [#2565]
2022-01-15 16:43:18 +01:00
- Minimum supported Rust version (MSRV) is now 1.54.
2021-12-27 19:45:31 +01:00
2022-01-03 14:17:57 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
2022-01-03 14:17:57 +01:00
- `ContentEncoding::Identity` can now be parsed from a string. [#2501]
- A `Vary` header is now correctly sent along with compressed content. [#2501]
### Removed
2023-02-26 01:55:57 +01:00
2022-01-03 14:17:57 +01:00
- `ContentEncoding::Auto` variant. [#2501]
- `ContentEncoding::is_compression()` . [#2501]
[#2501]: https://github.com/actix/actix-web/pull/2501
2022-01-03 19:46:04 +01:00
[#2565]: https://github.com/actix/actix-web/pull/2565
2022-01-03 14:17:57 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.17
2023-02-26 01:55:57 +01:00
2022-02-25 19:46:35 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `HeaderMap::get_all` now returns a `std::slice::Iter` . [#2527]
2021-12-24 18:47:47 +01:00
- `Payload` inner fields are now named. [#2545]
- `impl Stream` for `Payload` no longer requires the `Stream` variant be `Unpin` . [#2545]
- `impl Future` for `h1::SendResponse` no longer requires the body type be `Unpin` . [#2545]
- `impl Stream` for `encoding::Decoder` no longer requires the stream type be `Unpin` . [#2545]
- Rename `PayloadStream` to `BoxedPayloadStream` . [#2545]
### Removed
2023-02-26 01:55:57 +01:00
2021-12-24 18:47:47 +01:00
- `h1::Payload::readany` . [#2545]
2021-12-18 01:05:12 +01:00
[#2527]: https://github.com/actix/actix-web/pull/2527
2021-12-24 18:47:47 +01:00
[#2545]: https://github.com/actix/actix-web/pull/2545
2021-12-17 21:57:51 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.16
2023-02-26 01:55:57 +01:00
2021-12-17 20:35:08 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- New method on `MessageBody` trait, `try_into_bytes` , with default implementation, for optimizations on body types that complete in exactly one poll. Replaces `is_complete_body` and `take_complete_body` . [#2522]
2021-12-17 20:35:08 +01:00
2021-12-13 17:08:08 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Rename trait `IntoHeaderPair => TryIntoHeaderPair` . [#2510]
- Rename `TryIntoHeaderPair::{try_into_header_pair => try_into_pair}` . [#2510]
- Rename trait `IntoHeaderValue => TryIntoHeaderValue` . [#2510]
2021-12-13 17:08:08 +01:00
2021-12-17 20:35:08 +01:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `MessageBody::{is_complete_body,take_complete_body}` . [#2522]
2021-12-17 20:35:08 +01:00
2021-12-13 17:08:08 +01:00
[#2510]: https://github.com/actix/actix-web/pull/2510
2021-12-17 20:35:08 +01:00
[#2522]: https://github.com/actix/actix-web/pull/2522
2021-12-11 01:22:09 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.15
2023-02-26 01:55:57 +01:00
2021-12-02 19:16:34 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Add timeout for canceling HTTP/2 server side connection handshake. Default to 5 seconds. [#2483]
- HTTP/2 handshake timeout can be configured with `ServiceConfig::client_timeout` . [#2483]
- `Response::map_into_boxed_body` . [#2468]
- `body::EitherBody` enum. [#2468]
- `body::None` struct. [#2468]
- Impl `MessageBody` for `bytestring::ByteString` . [#2468]
- `impl Clone for ws::HandshakeError` . [#2468]
- `#[must_use]` for `ws::Codec` to prevent subtle bugs. [#1920]
- `impl Default ` for `ws::Codec` . [#1920]
- `header::QualityItem::{max, min}` . [#2486]
- `header::Quality::{MAX, MIN}` . [#2486]
- `impl Display` for `header::Quality` . [#2486]
- Connection data set through the `on_connect_ext` callbacks is now accessible only from the new `Request::conn_data()` method. [#2491]
- `Request::take_conn_data()` . [#2491]
- `Request::take_req_data()` . [#2487]
- `impl Clone` for `RequestHead` . [#2487]
- New methods on `MessageBody` trait, `is_complete_body` and `take_complete_body` , both with default implementations, for optimizations on body types that are done in exactly one poll/chunk. [#2497]
- New `boxed` method on `MessageBody` trait for wrapping body type. [#2520]
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Rename `body::BoxBody::{from_body => new}` . [#2468]
- Body type for `Responses` returned from `Response::{new, ok, etc...}` is now `BoxBody` . [#2468]
- The `Error` associated type on `MessageBody` type now requires `impl Error` (or similar). [#2468]
- Error types using in service builders now require `Into<Response<BoxBody>>` . [#2468]
- `From` implementations on error types now return a `Response<BoxBody>` . [#2468]
- `ResponseBuilder::body(B)` now returns `Response<EitherBody<B>>` . [#2468]
- `ResponseBuilder::finish()` now returns `Response<EitherBody<()>>` . [#2468]
2021-12-04 20:40:47 +01:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `ResponseBuilder::streaming` . [#2468]
- `impl Future` for `ResponseBuilder` . [#2468]
- Remove unnecessary `MessageBody` bound on types passed to `body::AnyBody::new` . [#2468]
- Move `body::AnyBody` to `awc` . Replaced with `EitherBody` and `BoxBody` . [#2468]
- `impl Copy` for `ws::Codec` . [#1920]
- `header::qitem` helper. Replaced with `header::QualityItem::max` . [#2486]
- `impl TryFrom<u16>` for `header::Quality` . [#2486]
- `http` module. Most everything it contained is exported at the crate root. [#2488]
2021-11-30 15:12:04 +01:00
2021-12-02 19:16:34 +01:00
[#2483]: https://github.com/actix/actix-web/pull/2483
2021-12-04 20:40:47 +01:00
[#2468]: https://github.com/actix/actix-web/pull/2468
2021-12-04 23:32:44 +01:00
[#1920]: https://github.com/actix/actix-web/pull/1920
2021-12-05 04:38:08 +01:00
[#2486]: https://github.com/actix/actix-web/pull/2486
2021-12-08 23:58:50 +01:00
[#2487]: https://github.com/actix/actix-web/pull/2487
2021-12-05 15:37:20 +01:00
[#2488]: https://github.com/actix/actix-web/pull/2488
2021-12-07 18:23:34 +01:00
[#2491]: https://github.com/actix/actix-web/pull/2491
2021-12-09 14:52:35 +01:00
[#2497]: https://github.com/actix/actix-web/pull/2497
2021-12-17 01:43:40 +01:00
[#2520]: https://github.com/actix/actix-web/pull/2520
2021-12-04 20:40:47 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.14
2023-02-26 01:55:57 +01:00
2021-11-28 20:23:29 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Guarantee ordering of `header::GetAll` iterator to be same as insertion order. [#2467]
- Expose `header::map` module. [#2467]
- Implement `ExactSizeIterator` and `FusedIterator` for all `HeaderMap` iterators. [#2470]
- Update `actix-tls` to `3.0.0-rc.1` . [#2474]
2021-11-28 20:23:29 +01:00
[#2467]: https://github.com/actix/actix-web/pull/2467
2021-11-29 03:22:47 +01:00
[#2470]: https://github.com/actix/actix-web/pull/2470
2021-11-30 15:12:04 +01:00
[#2474]: https://github.com/actix/actix-web/pull/2474
2021-11-22 19:19:09 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.13
2023-02-26 01:55:57 +01:00
2021-11-16 10:21:10 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `body::AnyBody::empty` for quickly creating an empty body. [#2446]
- `body::AnyBody::none` for quickly creating a "none" body. [#2456]
- `impl Clone` for `body::AnyBody<S> where S: Clone` . [#2448]
- `body::AnyBody::into_boxed` for quickly converting to a type-erased, boxed body type. [#2448]
2021-11-16 10:21:10 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Rename `body::AnyBody::{Message => Body}` . [#2446]
- Rename `body::AnyBody::{from_message => new_boxed}` . [#2448]
- Rename `body::AnyBody::{from_slice => copy_from_slice}` . [#2448]
- Rename `body::{BoxAnyBody => BoxBody}` . [#2448]
- Change representation of `AnyBody` to include a type parameter in `Body` variant. Defaults to `BoxBody` . [#2448]
- `Encoder::response` now returns `AnyBody<Encoder<B>>` . [#2448]
2021-11-16 10:21:10 +01:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `body::AnyBody::Empty` ; an empty body can now only be represented as a zero-length `Bytes` variant. [#2446]
- `body::BodySize::Empty` ; an empty body can now only be represented as a `Sized(0)` variant. [#2446]
- `EncoderError::Boxed` ; it is no longer required. [#2446]
- `body::ResponseBody` ; is function is replaced by the new `body::AnyBody` enum. [#2446]
2021-11-16 10:21:10 +01:00
[#2446]: https://github.com/actix/actix-web/pull/2446
2021-11-22 19:20:55 +01:00
[#2448]: https://github.com/actix/actix-web/pull/2448
2021-11-22 16:37:23 +01:00
[#2456]: https://github.com/actix/actix-web/pull/2456
2021-11-15 05:03:33 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.12
2023-02-26 01:55:57 +01:00
2021-11-15 05:03:33 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Update `actix-server` to `2.0.0-beta.9` . [#2442]
2021-11-15 05:03:33 +01:00
2021-10-26 01:37:40 +02:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `client` module. [#2425]
- `trust-dns` feature. [#2425]
2021-10-26 01:37:40 +02:00
[#2425]: https://github.com/actix/actix-web/pull/2425
2021-11-15 05:03:33 +01:00
[#2442]: https://github.com/actix/actix-web/pull/2442
2021-10-20 23:32:05 +02:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.11
2023-02-26 01:55:57 +01:00
2021-10-20 03:00:11 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Updated rustls to v0.20. [#2414]
- Minimum supported Rust version (MSRV) is now 1.52.
2021-09-09 02:35:41 +02:00
2021-10-20 03:00:11 +02:00
[#2414]: https://github.com/actix/actix-web/pull/2414
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.10
2023-02-26 01:55:57 +01:00
2021-09-01 10:08:29 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `ContentEncoding` is now marked `#[non_exhaustive]` . [#2377]
- Minimum supported Rust version (MSRV) is now 1.51.
2021-06-26 17:33:36 +02:00
2021-08-13 19:41:19 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Remove slice creation pointing to potential uninitialized data on h1 encoder. [#2364]
- Remove `Into<Error>` bound on `Encoder` body types. [#2375]
- Fix quality parse error in Accept-Encoding header. [#2344]
2021-08-13 19:41:19 +02:00
[#2364]: https://github.com/actix/actix-web/pull/2364
2021-08-31 05:18:54 +02:00
[#2375]: https://github.com/actix/actix-web/pull/2375
2021-09-01 10:08:29 +02:00
[#2344]: https://github.com/actix/actix-web/pull/2344
2021-09-01 10:53:26 +02:00
[#2377]: https://github.com/actix/actix-web/pull/2377
2021-06-26 17:33:36 +02:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.9
2023-02-26 01:55:57 +01:00
2021-08-12 21:18:09 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- Potential HTTP request smuggling vulnerabilities. [RUSTSEC-2021-0081 ](https://github.com/rustsec/advisory-db/pull/977 )
2021-09-01 10:53:26 +02:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.8
2023-02-26 01:55:57 +01:00
2021-06-19 21:21:13 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Change compression algorithm features flags. [#2250]
2021-06-19 21:21:13 +02:00
2021-06-25 11:53:53 +02:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `downcast` and `downcast_get_type_id` macros. [#2291]
2021-06-25 11:53:53 +02:00
[#2291]: https://github.com/actix/actix-web/pull/2291
2021-06-19 21:21:13 +02:00
[#2250]: https://github.com/actix/actix-web/pull/2250
2021-06-19 12:51:20 +02:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.7
2023-02-26 01:55:57 +01:00
2021-04-19 04:29:38 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Alias `body::Body` as `body::AnyBody` . [#2215]
- `BoxAnyBody` : a boxed message body with boxed errors. [#2183]
- Re-export `http` crate's `Error` type as `error::HttpError` . [#2171]
- Re-export `StatusCode` , `Method` , `Version` and `Uri` at the crate root. [#2171]
- Re-export `ContentEncoding` and `ConnectionType` at the crate root. [#2171]
- `Response::into_body` that consumes response and returns body type. [#2201]
- `impl Default` for `Response` . [#2201]
- Add zstd support for `ContentEncoding` . [#2244]
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- The `MessageBody` trait now has an associated `Error` type. [#2183]
- All error trait bounds in server service builders have changed from `Into<Error>` to `Into<Response<AnyBody>>` . [#2253]
- All error trait bounds in message body and stream impls changed from `Into<Error>` to `Into<Box<dyn std::error::Error>>` . [#2253]
- Places in `Response` where `ResponseBody<B>` was received or returned now simply use `B` . [#2201]
- `header` mod is now public. [#2171]
- `uri` mod is now public. [#2171]
- Update `language-tags` to `0.3` .
- Reduce the level from `error` to `debug` for the log line that is emitted when a `500 Internal Server Error` is built using `HttpResponse::from_error` . [#2201]
- `ResponseBuilder::message_body` now returns a `Result` . [#2201]
- Remove `Unpin` bound on `ResponseBuilder::streaming` . [#2253]
2023-02-20 09:11:16 +01:00
- `HttpServer::{listen_rustls(), bind_rustls()}` now honor the ALPN protocols in the configuration parameter. [#2226]
2021-04-19 04:29:38 +02:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Stop re-exporting `http` crate's `HeaderMap` types in addition to ours. [#2171]
- Down-casting for `MessageBody` types. [#2183]
- `error::Result` alias. [#2201]
- Error field from `Response` and `Response::error` . [#2205]
- `impl Future` for `Response` . [#2201]
- `Response::take_body` and old `Response::into_body` method that casted body type. [#2201]
- `InternalError` and all the error types it constructed. [#2215]
- Conversion (`impl Into`) of `Response<Body>` and `ResponseBuilder` to `Error` . [#2215]
2021-04-19 04:29:38 +02:00
[#2171]: https://github.com/actix/actix-web/pull/2171
2021-05-05 19:36:02 +02:00
[#2183]: https://github.com/actix/actix-web/pull/2183
2021-05-03 01:58:14 +02:00
[#2196]: https://github.com/actix/actix-web/pull/2196
2021-05-09 21:12:48 +02:00
[#2201]: https://github.com/actix/actix-web/pull/2201
2021-05-09 04:44:14 +02:00
[#2205]: https://github.com/actix/actix-web/pull/2205
2021-05-14 17:40:00 +02:00
[#2215]: https://github.com/actix/actix-web/pull/2215
2021-06-17 18:57:58 +02:00
[#2253]: https://github.com/actix/actix-web/pull/2253
2021-06-03 22:32:52 +02:00
[#2244]: https://github.com/actix/actix-web/pull/2244
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.6
2023-02-26 01:55:57 +01:00
2021-04-13 12:16:12 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `impl<T: MessageBody> MessageBody for Pin<Box<T>>` . [#2152]
- `Response::{ok, bad_request, not_found, internal_server_error}` . [#2159]
- Helper `body::to_bytes` for async collecting message body into Bytes. [#2158]
2021-04-13 12:16:12 +02:00
2022-02-25 19:46:35 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- The type parameter of `Response` no longer has a default. [#2152]
- The `Message` variant of `body::Body` is now `Pin<Box<dyn MessageBody>>` . [#2152]
- `BodyStream` and `SizedStream` are no longer restricted to Unpin types. [#2152]
- Error enum types are marked `#[non_exhaustive]` . [#2161]
2021-04-13 12:16:12 +02:00
2021-04-09 19:07:10 +02:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `cookies` feature flag. [#2065]
- Top-level `cookies` mod (re-export). [#2065]
- `HttpMessage` trait loses the `cookies` and `cookie` methods. [#2065]
- `impl ResponseError for CookieParseError` . [#2065]
- Deprecated methods on `ResponseBuilder` : `if_true` , `if_some` . [#2148]
- `ResponseBuilder::json` . [#2148]
- `ResponseBuilder::{set_header, header}` . [#2148]
- `impl From<serde_json::Value> for Body` . [#2148]
- `Response::build_from` . [#2159]
- Most of the status code builders on `Response` . [#2159]
2021-04-09 19:07:10 +02:00
[#2065]: https://github.com/actix/actix-web/pull/2065
2021-04-12 11:30:28 +02:00
[#2148]: https://github.com/actix/actix-web/pull/2148
2021-04-13 12:16:12 +02:00
[#2152]: https://github.com/actix/actix-web/pull/2152
2021-04-14 03:00:14 +02:00
[#2159]: https://github.com/actix/actix-web/pull/2159
2021-04-13 14:34:22 +02:00
[#2158]: https://github.com/actix/actix-web/pull/2158
2021-04-14 07:07:59 +02:00
[#2161]: https://github.com/actix/actix-web/pull/2161
2021-04-02 10:27:11 +02:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.5
2023-02-26 01:55:57 +01:00
2021-03-18 18:53:22 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `client::Connector::handshake_timeout` method for customizing TLS connection handshake timeout. [#2081]
- `client::ConnectorService` as `client::Connector::finish` method's return type [#2081]
- `client::ConnectionIo` trait alias [#2081]
2021-03-18 18:53:22 +01:00
2021-03-29 11:18:05 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `client::Connector` type now only have one generic type for `actix_service::Service` . [#2063]
2021-03-11 00:57:32 +01:00
2021-04-01 16:26:13 +02:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Common typed HTTP headers were moved to actix-web. [2094]
- `ResponseError` impl for `actix_utils::timeout::TimeoutError` . [#2127]
2021-04-01 16:26:13 +02:00
2021-03-11 00:57:32 +01:00
[#2063]: https://github.com/actix/actix-web/pull/2063
2021-03-18 18:53:22 +01:00
[#2081]: https://github.com/actix/actix-web/pull/2081
2021-04-01 17:42:18 +02:00
[#2094]: https://github.com/actix/actix-web/pull/2094
2021-04-01 16:26:13 +02:00
[#2127]: https://github.com/actix/actix-web/pull/2127
2021-03-09 00:07:40 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.4
2023-02-26 01:55:57 +01:00
2021-02-13 16:08:43 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Feature `cookies` is now optional and disabled by default. [#1981]
- `ws::hash_key` now returns array. [#2035]
- `ResponseBuilder::json` now takes `impl Serialize` . [#2052]
2021-02-13 16:08:43 +01:00
2021-02-16 09:27:14 +01:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Re-export of `futures_channel::oneshot::Canceled` is removed from `error` mod. [#1994]
- `ResponseError` impl for `futures_channel::oneshot::Canceled` is removed. [#1994]
2021-02-16 09:27:14 +01:00
2021-02-13 16:08:43 +01:00
[#1981]: https://github.com/actix/actix-web/pull/1981
2021-02-16 09:27:14 +01:00
[#1994]: https://github.com/actix/actix-web/pull/1994
2021-02-28 20:55:34 +01:00
[#2035]: https://github.com/actix/actix-web/pull/2035
2021-03-07 23:11:39 +01:00
[#2052]: https://github.com/actix/actix-web/pull/2052
2021-02-10 13:10:03 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.3
2021-02-10 19:36:14 +01:00
2023-02-26 01:55:57 +01:00
- No notable changes.
2021-02-10 19:36:14 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.2
2023-02-26 01:55:57 +01:00
2021-01-15 03:11:10 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `TryIntoHeaderPair` trait that allows using typed and untyped headers in the same methods. [#1869]
- `ResponseBuilder::insert_header` method which allows using typed headers. [#1869]
- `ResponseBuilder::append_header` method which allows using typed headers. [#1869]
- `TestRequest::insert_header` method which allows using typed headers. [#1869]
- `ContentEncoding` implements all necessary header traits. [#1912]
- `HeaderMap::len_keys` has the behavior of the old `len` method. [#1964]
- `HeaderMap::drain` as an efficient draining iterator. [#1964]
- Implement `IntoIterator` for owned `HeaderMap` . [#1964]
- `trust-dns` optional feature to enable `trust-dns-resolver` as client dns resolver. [#1969]
### Changed
2023-02-26 01:55:57 +01:00
- `ResponseBuilder::content_type` now takes an `impl TryIntoHeaderValue` to support using typed `mime` types. [#1894]
- Renamed `TryIntoHeaderValue::{try_into => try_into_value}` to avoid ambiguity with std `TryInto` trait. [#1894]
2021-12-22 09:21:30 +01:00
- `Extensions::insert` returns Option of replaced item. [#1904]
- Remove `HttpResponseBuilder::json2()` . [#1903]
- Enable `HttpResponseBuilder::json()` to receive data by value and reference. [#1903]
- `client::error::ConnectError` Resolver variant contains `Box<dyn std::error::Error>` type. [#1905]
- `client::ConnectorConfig` default timeout changed to 5 seconds. [#1905]
2023-02-26 01:55:57 +01:00
- Simplify `BlockingError` type to a unit struct. It's now only triggered when blocking thread pool is dead. [#1957]
2021-12-22 09:21:30 +01:00
- `HeaderMap::len` now returns number of values instead of number of keys. [#1964]
- `HeaderMap::insert` now returns iterator of removed values. [#1964]
- `HeaderMap::remove` now returns iterator of removed values. [#1964]
2021-01-09 14:17:19 +01:00
2021-01-15 03:11:10 +01:00
### Removed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `ResponseBuilder::set` ; use `ResponseBuilder::insert_header` . [#1869]
- `ResponseBuilder::set_header` ; use `ResponseBuilder::insert_header` . [#1869]
- `ResponseBuilder::header` ; use `ResponseBuilder::append_header` . [#1869]
- `TestRequest::with_hdr` ; use `TestRequest::default().insert_header()` . [#1869]
- `TestRequest::with_header` ; use `TestRequest::default().insert_header()` . [#1869]
- `actors` optional feature. [#1969]
- `ResponseError` impl for `actix::MailboxError` . [#1969]
2021-01-15 03:11:10 +01:00
2021-02-09 23:59:17 +01:00
### Documentation
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Vastly improve docs and add examples for `HeaderMap` . [#1964]
2021-02-09 23:59:17 +01:00
2021-01-15 03:11:10 +01:00
[#1869]: https://github.com/actix/actix-web/pull/1869
2021-01-09 14:17:19 +01:00
[#1894]: https://github.com/actix/actix-web/pull/1894
2021-01-18 13:14:29 +01:00
[#1903]: https://github.com/actix/actix-web/pull/1903
2021-01-15 05:22:42 +01:00
[#1904]: https://github.com/actix/actix-web/pull/1904
2021-02-07 02:00:40 +01:00
[#1905]: https://github.com/actix/actix-web/pull/1905
2021-01-17 06:19:32 +01:00
[#1912]: https://github.com/actix/actix-web/pull/1912
2021-02-06 17:23:59 +01:00
[#1957]: https://github.com/actix/actix-web/pull/1957
2021-02-09 23:59:17 +01:00
[#1964]: https://github.com/actix/actix-web/pull/1964
2021-02-09 11:41:20 +01:00
[#1969]: https://github.com/actix/actix-web/pull/1969
2021-01-07 21:02:08 +01:00
2023-08-29 00:44:35 +02:00
## 3.0.0-beta.1
2023-02-26 01:55:57 +01:00
2021-01-06 19:58:24 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Add `Http3` to `Protocol` enum for future compatibility and also mark `#[non_exhaustive]` .
2021-01-06 19:58:24 +01:00
2020-12-23 00:45:31 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Update `actix-*` dependencies to tokio `1.0` based versions. [#1813]
- Bumped `rand` to `0.8` .
- Update `bytes` to `1.0` . [#1813]
- Update `h2` to `0.3` . [#1813]
- The `ws::Message::Text` enum variant now contains a `bytestring::ByteString` . [#1864]
2021-01-02 01:12:18 +01:00
2020-12-28 00:23:30 +01:00
### Removed
2023-02-26 01:55:57 +01:00
- Deprecated `on_connect` methods have been removed. Prefer the new `on_connect_ext` technique. [#1857]
- Remove `ResponseError` impl for `actix::actors::resolver::ResolverError` due to deprecate of resolver actor. [#1813]
- Remove `ConnectError::SslHandshakeError` and re-export of `HandshakeError` . due to the removal of this type from `tokio-openssl` crate. openssl handshake error would return as `ConnectError::SslError` . [#1813]
- Remove `actix-threadpool` dependency. Use `actix_rt::task::spawn_blocking` . Due to this change `actix_threadpool::BlockingError` type is moved into `actix_http::error` module. [#1878]
2020-12-28 00:23:30 +01:00
2021-01-04 00:47:04 +01:00
[#1813]: https://github.com/actix/actix-web/pull/1813
2020-12-28 00:23:30 +01:00
[#1857]: https://github.com/actix/actix-web/pull/1857
2021-01-04 12:27:32 +01:00
[#1864]: https://github.com/actix/actix-web/pull/1864
2021-01-09 17:04:19 +01:00
[#1878]: https://github.com/actix/actix-web/pull/1878
2020-12-28 00:23:30 +01:00
2022-02-25 19:46:35 +01:00
< / details >
2023-08-29 00:44:35 +02:00
## 2.2.2
2023-02-26 01:55:57 +01:00
2022-01-21 22:24:09 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2022-01-21 22:24:09 +01:00
- Migrate to `brotli` crate. [ad7e3c06]
[ad7e3c06]: https://github.com/actix/actix-web/commit/ad7e3c06
2023-08-29 00:44:35 +02:00
## 2.2.1
2023-02-26 01:55:57 +01:00
2021-08-12 21:18:09 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- Potential HTTP request smuggling vulnerabilities. [RUSTSEC-2021-0081 ](https://github.com/rustsec/advisory-db/pull/977 )
2021-08-12 21:18:09 +02:00
2023-08-29 00:44:35 +02:00
## 2.2.0
2023-02-26 01:55:57 +01:00
2020-11-02 10:23:18 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- HttpResponse builders for 1xx status codes. [#1768]
- `Accept::mime_precedence` and `Accept::mime_preference` . [#1793]
- `TryFrom<u16>` and `TryFrom<f32>` for `http::header::Quality` . [#1797]
2020-11-02 10:23:18 +01:00
2020-11-02 09:44:14 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Started dropping `transfer-encoding: chunked` and `Content-Length` for 1XX and 204 responses. [#1767]
2020-11-02 09:44:14 +01:00
2020-11-05 17:36:15 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Upgrade `serde_urlencoded` to `0.7` . [#1773]
2020-11-05 17:36:15 +01:00
2020-11-25 01:07:56 +01:00
[#1773]: https://github.com/actix/actix-web/pull/1773
2020-11-02 09:44:14 +01:00
[#1767]: https://github.com/actix/actix-web/pull/1767
2020-11-02 10:23:18 +01:00
[#1768]: https://github.com/actix/actix-web/pull/1768
2020-11-24 11:08:57 +01:00
[#1793]: https://github.com/actix/actix-web/pull/1793
2020-11-24 12:37:05 +01:00
[#1797]: https://github.com/actix/actix-web/pull/1797
2020-10-30 03:19:56 +01:00
2023-08-29 00:44:35 +02:00
## 2.1.0
2023-02-26 01:55:57 +01:00
2020-10-30 03:03:26 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Added more flexible `on_connect_ext` methods for on-connect handling. [#1754]
2020-10-30 03:03:26 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Upgrade `base64` to `0.13` . [#1744]
- Upgrade `pin-project` to `1.0` . [#1733]
- Deprecate `ResponseBuilder::{if_some, if_true}` . [#1760]
2020-10-30 03:10:05 +01:00
[#1760]: https://github.com/actix/actix-web/pull/1760
2020-10-30 03:03:26 +01:00
[#1754]: https://github.com/actix/actix-web/pull/1754
2020-10-30 03:19:56 +01:00
[#1733]: https://github.com/actix/actix-web/pull/1733
[#1744]: https://github.com/actix/actix-web/pull/1744
2020-10-30 03:03:26 +01:00
2023-08-29 00:44:35 +02:00
## 2.0.0
2020-09-11 14:50:10 +02:00
2023-02-26 01:55:57 +01:00
- No significant changes from `2.0.0-beta.4` .
2020-09-11 14:50:10 +02:00
2023-08-29 00:44:35 +02:00
## 2.0.0-beta.4
2023-02-26 01:55:57 +01:00
2020-08-24 11:13:35 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Update actix-codec and actix-utils dependencies.
- Update actix-connect and actix-tls dependencies.
2020-09-09 23:14:11 +02:00
2023-08-29 00:44:35 +02:00
## 2.0.0-beta.3
2023-02-26 01:55:57 +01:00
2020-08-09 22:49:43 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Memory leak of `client::pool::ConnectorPoolSupport` . [#1626]
2020-08-09 22:49:43 +02:00
[#1626]: https://github.com/actix/actix-web/pull/1626
2020-07-21 17:25:33 +02:00
2023-08-29 00:44:35 +02:00
## 2.0.0-beta.2
2023-02-26 01:55:57 +01:00
2020-07-22 02:13:10 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Potential UB in h1 decoder using uninitialized memory. [#1614]
2020-07-13 16:35:30 +02:00
2020-07-21 18:24:56 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Fix illegal chunked encoding. [#1615]
2020-07-21 18:24:56 +02:00
2020-07-22 02:13:10 +02:00
[#1614]: https://github.com/actix/actix-web/pull/1614
2020-07-21 18:24:56 +02:00
[#1615]: https://github.com/actix/actix-web/pull/1615
2023-08-29 00:44:35 +02:00
## 2.0.0-beta.1
2023-02-26 01:55:57 +01:00
2020-06-19 15:34:14 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Migrate cookie handling to `cookie` crate. [#1558]
- Update `sha-1` to 0.9. [#1586]
- Fix leak in client pool. [#1580]
- MSRV is now 1.41.1.
2020-07-13 16:35:30 +02:00
[#1558]: https://github.com/actix/actix-web/pull/1558
[#1586]: https://github.com/actix/actix-web/pull/1586
[#1580]: https://github.com/actix/actix-web/pull/1580
2020-06-19 15:34:14 +02:00
2023-08-29 00:44:35 +02:00
## 2.0.0-alpha.4
2023-02-26 01:55:57 +01:00
2020-05-13 02:57:37 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Bump minimum supported Rust version to 1.40
2023-02-26 01:55:57 +01:00
- content_length function is removed, and you can set Content-Length by calling no_chunking function [#1439]
- `BodySize::Sized64` variant has been removed. `BodySize::Sized` now receives a `u64` instead of a `usize` .
2021-12-22 09:21:30 +01:00
- Update `base64` dependency to 0.12
2020-05-18 01:42:51 +02:00
2020-05-12 18:48:35 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Support parsing of `SameSite=None` [#1503]
2020-05-12 18:48:35 +02:00
2020-05-19 00:46:31 +02:00
[#1439]: https://github.com/actix/actix-web/pull/1439
[#1503]: https://github.com/actix/actix-web/pull/1503
2023-08-29 00:44:35 +02:00
## 2.0.0-alpha.3
2023-02-26 01:55:57 +01:00
2020-05-07 19:33:33 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Correct spelling of ConnectError::Unresolved [#1487]
2023-02-26 01:55:57 +01:00
- Fix a mistake in the encoding of websocket continuation messages wherein Item::FirstText and Item::FirstBinary are each encoded as the other.
2020-03-18 02:51:06 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Implement `std::error::Error` for our custom errors [#1422]
2023-02-26 01:55:57 +01:00
- Remove `failure` support for `ResponseError` since that crate will be deprecated in the near future.
2020-03-18 02:51:06 +01:00
[#1422]: https://github.com/actix/actix-web/pull/1422
2020-05-07 19:33:33 +02:00
[#1487]: https://github.com/actix/actix-web/pull/1487
2020-03-18 02:51:06 +01:00
2023-08-29 00:44:35 +02:00
## 2.0.0-alpha.2
2023-02-26 01:55:57 +01:00
2020-03-04 07:20:14 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Update `actix-connect` and `actix-tls` dependency to 2.0.0-alpha.1. [#1395]
2023-02-26 01:55:57 +01:00
- Change default initial window size and connection window size for HTTP2 to 2MB and 1MB respectively to improve download speed for awc when downloading large objects. [#1394]
- client::Connector accepts initial_window_size and initial_connection_window_size HTTP2 configuration. [#1394]
2021-12-22 09:21:30 +01:00
- client::Connector allowing to set max_http_version to limit HTTP version to be used. [#1394]
2020-03-07 16:43:17 +01:00
[#1394]: https://github.com/actix/actix-web/pull/1394
[#1395]: https://github.com/actix/actix-web/pull/1395
2020-03-04 07:20:14 +01:00
2023-08-29 00:44:35 +02:00
## 2.0.0-alpha.1
2023-02-26 01:55:57 +01:00
Upgrade `time` to 0.2.5 (#1254)
* Use `OffsetDateTime` instead of `PrimitiveDateTime`
* Parse time strings with `PrimitiveDateTime::parse` instead of `OffsetDateTime::parse`
* Remove unused `time` dependency from actix-multipart
* Fix a few errors with time related tests from the `time` upgrade
* Implement logic to convert a RFC 850 two-digit year into a full length year, and organize time parsing related functions
* Upgrade `time` to 0.2.2
* Correctly parse C's asctime time format using time 0.2's new format patterns
* Update CHANGES.md
* Use `time` without any of its deprecated functions
* Enforce a UTC time offset when converting an `OffsetDateTime` into a Header value
* Use the more readable version of `Duration::seconds(0)`, `Duration::zero()`
* Remove unneeded conversion of time::Duration to std::time::Duration
* Use `OffsetDateTime::as_seconds_f64` instead of manually calculating the amount of seconds from nanoseconds
* Replace a few additional instances of `Duration::seconds(0)` with `Duration::zero()`
* Truncate any nanoseconds from a supplied `Duration` within `Cookie::set_max_age` to ensure two Cookies with the same amount whole seconds equate to one another
* Fix the actix-http::cookie::do_not_panic_on_large_max_ages test
* Convert `Cookie::max_age` and `Cookie::expires` examples to `time` 0.2
Mainly minor changes. Type inference can be used alongside the new
`time::parse` method, such that the type doesn't need to be specified.
This will be useful if a refactoring takes place that changes the type.
There are also new macros, which are used where possible.
One change that is not immediately obvious, in `HttpDate`, there was an
unnecessary conditional. As the time crate allows for negative durations
(and can perform arithmetic with such), the if/else can be removed
entirely.
Time v0.2.3 also has some bug fixes, which is why I am not using a more
general v0.2 in Cargo.toml.
v0.2.3 has been yanked, as it was backwards imcompatible. This version
reverts the breaking change, while still supporting rustc back to
1.34.0.
* Add missing `time::offset` macro import
* Fix type confusion when using `time::parse` followed by `using_offset`
* Update `time` to 0.2.5
* Update CHANGES.md
Co-authored-by: Jacob Pratt <the.z.cuber@gmail.com>
2020-01-28 12:44:22 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Update the `time` dependency to 0.2.7.
- Moved actors messages support from actix crate, enabled with feature `actors` .
2023-02-26 01:55:57 +01:00
- Breaking change: trait MessageBody requires Unpin and accepting `Pin<&mut Self>` instead of `&mut self` in the poll_next().
2021-12-22 09:21:30 +01:00
- MessageBody is not implemented for & 'static [u8] anymore.
2020-01-29 09:15:13 +01:00
2020-01-23 02:08:23 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
- Allow `SameSite=None` cookies to be sent in a response.
2019-12-17 08:34:25 +01:00
2023-08-29 00:44:35 +02:00
## 1.0.1
2023-02-26 01:55:57 +01:00
2019-12-17 08:34:25 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Poll upgrade service's readiness from HTTP service handlers
- Replace brotli with brotli2 #1224
2019-12-20 08:50:07 +01:00
2023-08-29 00:44:35 +02:00
## 1.0.0
2023-02-26 01:55:57 +01:00
2019-12-12 09:06:54 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Add websockets continuation frame support
2019-12-12 09:06:54 +01:00
2019-12-12 10:08:08 +01:00
### Changed
2023-02-26 01:55:57 +01:00
- Replace `flate2-xxx` features with `compress`
2019-12-09 12:40:15 +01:00
2023-08-29 00:44:35 +02:00
## 1.0.0-alpha.5
2023-02-26 01:55:57 +01:00
2019-12-09 12:40:15 +01:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Check `Upgrade` service readiness before calling it
- Fix buffer remaining capacity calculation
2019-12-09 16:44:26 +01:00
2019-12-09 02:01:22 +01:00
### Changed
2023-02-26 01:55:57 +01:00
- Websockets: Ping and Pong should have binary data #1049
2019-12-08 15:15:51 +01:00
2023-08-29 00:44:35 +02:00
## 1.0.0-alpha.4
2023-02-26 01:55:57 +01:00
2019-12-07 16:41:34 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Add impl ResponseBuilder for Error
2019-12-07 16:41:34 +01:00
2019-12-07 17:01:55 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Use rust based brotli compression library
2019-12-07 17:01:55 +01:00
2023-08-29 00:44:35 +02:00
## 1.0.0-alpha.3
2023-02-26 01:55:57 +01:00
2019-12-07 08:00:03 +01:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Migrate to tokio 0.2
- Migrate to `std::future`
2019-12-07 08:00:03 +01:00
2023-08-29 00:44:35 +02:00
## 0.2.11
2023-02-26 01:55:57 +01:00
2019-09-25 05:33:52 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Add support for serde_json::Value to be passed as argument to ResponseBuilder.body()
2023-02-26 01:55:57 +01:00
- Add an additional `filename*` param in the `Content-Disposition` header of `actix_files::NamedFile` to be more compatible. (#1151)
2021-12-22 09:21:30 +01:00
- Allow to use `std::convert::Infallible` as `actix_http::error::Error`
2019-11-06 19:35:13 +01:00
2019-10-07 06:56:24 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- To be compatible with non-English error responses, `ResponseError` rendered with `text/plain; charset=utf-8` header [#1118]
2019-09-25 05:33:52 +02:00
2023-02-26 01:55:57 +01:00
[#1878]: https://github.com/actix/actix-web/pull/1878
2019-09-10 06:29:32 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.10
2023-02-26 01:55:57 +01:00
2019-09-10 06:29:32 +02:00
### Added
2023-02-26 01:55:57 +01:00
- Add support for sending HTTP requests with `Rc<RequestHead>` in addition to sending HTTP requests with `RequestHead`
2019-09-10 06:29:32 +02:00
2019-09-01 09:15:02 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- h2 will use error response #1080
- on_connect result isn't added to request extensions for http2 requests #1009
2019-09-01 09:15:02 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.9
2023-02-26 01:55:57 +01:00
2019-08-07 16:43:03 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Dropped the `byteorder` -dependency in favor of `stdlib` -implementation
- Update percent-encoding to 2.1
- Update serde_urlencoded to 0.6.1
2019-08-13 19:48:11 +02:00
2019-08-13 15:20:29 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- Fixed a panic in the HTTP2 handshake in client HTTP requests (#1031)
2019-08-07 16:43:03 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.8
2023-02-26 01:55:57 +01:00
2019-08-02 00:26:30 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Add `rustls` support
- Add `Clone` impl for `HeaderMap`
2019-08-02 00:26:30 +02:00
2019-07-22 07:35:00 +02:00
### Fixed
2019-07-30 17:00:46 +02:00
2023-02-26 01:55:57 +01:00
- awc client panic #1016
- Invalid response with compression middleware enabled, but compression-related features disabled #997
2019-07-18 13:37:41 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.7
2023-02-26 01:55:57 +01:00
2019-07-18 13:37:41 +02:00
### Added
2023-02-26 01:55:57 +01:00
- Add support for downcasting response errors #986
2019-07-18 13:37:41 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.6
2023-02-26 01:55:57 +01:00
2019-07-01 05:37:03 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Replace `ClonableService` with local copy
- Upgrade `rand` dependency version to 0.7
2019-07-01 05:37:03 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.5
2023-02-26 01:55:57 +01:00
2019-06-28 10:34:26 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Add `on-connect` callback, `HttpServiceBuilder::on_connect()` #946
2019-06-18 08:43:25 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Use `encoding_rs` crate instead of unmaintained `encoding` crate
- Add `Copy` and `Clone` impls for `ws::Codec`
2019-06-28 08:34:43 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.4
2023-02-26 01:55:57 +01:00
2019-06-16 17:54:17 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- Do not compress NoContent (204) responses #918
2019-06-16 17:54:17 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.3
2023-02-26 01:55:57 +01:00
2019-06-01 13:57:25 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Debug impl for ResponseBuilder
- From SizedStream and BodyStream for Body
2019-06-01 13:57:25 +02:00
### Changed
2019-06-02 09:05:22 +02:00
2023-02-26 01:55:57 +01:00
- SizedStream uses u64
2019-06-01 13:57:25 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.2
2023-02-26 01:55:57 +01:00
2019-05-30 01:15:12 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- Parse incoming stream before closing stream on disconnect #868
2019-05-30 01:15:12 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.1
2023-02-26 01:55:57 +01:00
2019-05-25 12:07:40 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- Handle socket read disconnect
2019-05-25 12:07:40 +02:00
2023-08-29 00:44:35 +02:00
## 0.2.0
2023-02-26 01:55:57 +01:00
2019-05-12 17:34:51 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Update actix-service to 0.4
- Expect and upgrade services accept `ServerConfig` config.
2019-05-12 17:34:51 +02:00
2019-05-12 18:56:55 +02:00
### Deleted
2023-02-26 01:55:57 +01:00
- `OneRequest` service
2019-05-12 17:34:51 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.5
2023-02-26 01:55:57 +01:00
2019-05-04 00:26:34 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- Clean up response extensions in response pool #817
2019-05-04 00:26:34 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.4
2023-02-26 01:55:57 +01:00
2019-04-24 20:27:57 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Allow to render h1 request headers in `Camel-Case`
2019-04-24 20:27:57 +02:00
2019-04-24 20:57:40 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- Read until eof for http/1.0 responses #771
2019-04-24 20:27:57 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.3
2023-02-26 01:55:57 +01:00
2019-04-23 23:57:03 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Fix http client pool management
- Fix http client wait queue management #794
2019-04-23 23:57:03 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.2
2023-02-26 01:55:57 +01:00
2019-04-23 18:42:19 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
- Fix BorrowMutError panic in client connector #793
2019-04-23 18:42:19 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.1
2023-02-26 01:55:57 +01:00
2019-06-18 08:43:25 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Cookie::max_age() accepts value in seconds
- Cookie::max_age_time() accepts value in time::Duration
- Allow to specify server address for client connector
2019-04-20 03:03:44 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.0
2023-02-26 01:55:57 +01:00
2019-04-16 18:54:02 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Expose peer addr via `Request::peer_addr()` and `RequestHead::peer_addr`
2019-04-15 05:45:44 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- `actix_http::encoding` always available
- use trust-dns-resolver 0.11.0
2019-04-15 05:45:44 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.0-alpha.5
2023-02-26 01:55:57 +01:00
2019-04-09 02:49:27 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Allow to use custom service for upgrade requests
- Added `h1::SendResponse` future.
2019-04-10 21:24:17 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- MessageBody::length() renamed to MessageBody::size() for consistency
- ws handshake verification functions take RequestHead instead of Request
2019-04-11 23:00:32 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.0-alpha.4
2023-02-26 01:55:57 +01:00
2019-04-04 22:23:38 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Allow to use custom `Expect` handler
- Add minimal `std::error::Error` impl for `Error`
2019-04-04 22:23:38 +02:00
2019-04-03 21:44:47 +02:00
### Changed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Export IntoHeaderValue
- Render error and return as response body
- Use thread pool for response body compression
2019-04-04 22:17:55 +02:00
2019-04-03 12:20:20 +02:00
### Deleted
2023-02-26 01:55:57 +01:00
- Removed PayloadBuffer
2019-04-04 22:17:55 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.0-alpha.3
2023-02-26 01:55:57 +01:00
2019-04-03 06:49:31 +02:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Warn when an unsealed private cookie isn't valid UTF-8
2019-04-01 19:26:09 +02:00
### Fixed
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Rust 1.31.0 compatibility
- Preallocate read buffer for h1 codec
- Detect socket disconnection during protocol selection
2019-04-03 05:50:25 +02:00
2023-08-29 00:44:35 +02:00
## 0.1.0-alpha.2
2023-02-26 01:55:57 +01:00
2019-03-30 02:22:49 +01:00
### Added
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Added ws::Message::Nop, no-op websockets message
2019-03-29 05:15:26 +01:00
### Changed
2023-02-26 01:55:57 +01:00
- Do not use thread pool for decompression if chunk size is smaller than 2048.
2019-03-26 19:54:35 +01:00
2023-08-29 00:44:35 +02:00
## 0.1.0-alpha.1
2023-02-26 01:55:57 +01:00
2021-12-22 09:21:30 +01:00
- Initial impl