cargo : axum-core @ 0.5.6
CHANGELOG.md
340 lines · markdown
# ChangelogAll notable changes to this project will be documented in this file.The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).# 0.5.6Improve error messages with `#[diagnostic::do_not_recommend]`.# 0.5.5Released without changes to fix docs.rs build.# 0.5.4- **fixed:** Removed unused `rustversion` dependency ([#3502])[#3502]: https://github.com/tokio-rs/axum/pull/3502# 0.5.3- **added:** `DefaultBodyLimit::apply` for changing the `DefaultBodyLimit` inside extractors. ([#3368])- **changed:** Update minimum rust version to 1.78 ([#3412])[#3368]: https://github.com/tokio-rs/axum/pull/3366# 0.5.2- **added:** Implement `Stream::size_hint` for `BodyDataStream` ([#3195])[#3195]: https://github.com/tokio-rs/axum/pull/3195# 0.5.1Yanked from crates.io due to unforeseen breaking change, see [#3190] for details.[#3190]: https://github.com/tokio-rs/axum/pull/3190# 0.5.0## since rc.1<details>- **change:** The `Display` impl of all rejections generated by the `define_rejection!()` will now include the `Display` output of the inner error too. This matches the `body_text()` fn output now. ([#3118])</details>## full changelog- **breaking:** Replace `#[async_trait]` with [return-position `impl Trait` in traits][RPITIT] ([#2308])- **breaking:** `Option<T>` as an extractor now requires `T` to implement the new trait `OptionalFromRequest` (if used as the last extractor) or `OptionalFromRequestParts` (other extractors) ([#2475])- **change:** Update minimum rust version to 1.75 ([#2943])- **change:** The `Display` impl of all rejections generated by the `define_rejection!()` will now include the `Display` output of the inner error too. This matches the `body_text()` fn output now. ([#3118])[#3118]: https://github.com/tokio-rs/axum/pull/3118## rc.1- **breaking:** `Option<T>` as an extractor now requires `T` to implement the new trait `OptionalFromRequest` (if used as the last extractor) or `OptionalFromRequestParts` (other extractors) ([#2475])[#2475]: https://github.com/tokio-rs/axum/pull/2475## alpha.1- **breaking:** Replace `#[async_trait]` with [return-position `impl Trait` in traits][RPITIT] ([#2308])- **change:** Update minimum rust version to 1.75 ([#2943])[RPITIT]: https://blog.rust-lang.org/2023/12/21/async-fn-rpit-in-traits.html[#2308]: https://github.com/tokio-rs/axum/pull/2308[#2943]: https://github.com/tokio-rs/axum/pull/2943# 0.4.5- **fixed:** Compile errors from the internal `__log_rejection` macro under certain Cargo feature combinations between axum crates ([#2933])[#2933]: https://github.com/tokio-rs/axum/pull/2933# 0.4.4- **added:** Derive `Clone` and `Copy` for `AppendHeaders` ([#2776])- **added:** `must_use` attribute on `AppendHeaders` ([#2846])- **added:** `must_use` attribute on `ErrorResponse` ([#2846])- **added:** `must_use` attribute on `IntoResponse::into_response` ([#2846])- **added:** `must_use` attribute on `IntoResponseParts` trait methods ([#2846])- **added:** Implement `Copy` for `DefaultBodyLimit` ([#2875])- **added**: `DefaultBodyLimit::max` and `DefaultBodyLimit::disable` are now allowed in const context ([#2875])[#2776]: https://github.com/tokio-rs/axum/pull/2776[#2846]: https://github.com/tokio-rs/axum/pull/2846[#2875]: https://github.com/tokio-rs/axum/pull/2875# 0.4.3 (13. January, 2024)- **added:** Implement `IntoResponseParts` for `()` ([#2471])[#2471]: https://github.com/tokio-rs/axum/pull/2471# 0.4.2 (29. December, 2023)- **added:** `Body` implements `From<()>` now ([#2411])[#2411]: https://github.com/tokio-rs/axum/pull/2411# 0.4.1 (03. December, 2023)- Fix from_stream doc link to `Stream` in docs ([#2391])[#2391]: https://github.com/tokio-rs/axum/pull/2391# 0.4.0 (27. November, 2023)- **added:** Implement `IntoResponse` for `(R,) where R: IntoResponse` ([#2143])- **fixed:** Fix broken docs links ([#2164])- **fixed:** Clearly document applying `DefaultBodyLimit` to individual routes ([#2157])- **breaking:** The following types/traits are no longer generic over the request body (i.e. the `B` type param has been removed) ([#1751] and [#1789]): - `FromRequestParts` - `FromRequest` - `RequestExt`- **breaking:** axum no longer re-exports `hyper::Body` as that type is removed in hyper 1.0. Instead axum has its own body type at `axum_core::body::Body` ([#1751])[#2143]: https://github.com/tokio-rs/axum/pull/2143[#2164]: https://github.com/tokio-rs/axum/pull/2164[#2157]: https://github.com/tokio-rs/axum/pull/2157# 0.3.4 (11. April, 2023)- Changes to private APIs.# 0.3.3 (03. March, 2023)- **fixed:** Add `#[must_use]` attributes to types that do nothing unless used ([#1809])[#1809]: https://github.com/tokio-rs/axum/pull/1809# 0.3.2 (20. January, 2023)- **added:** Implement `IntoResponse` for `&'static [u8; N]` and `[u8; N]` ([#1690])[#1690]: https://github.com/tokio-rs/axum/pull/1690# 0.3.1 (9. January, 2023)- **added:** Add `body_text` and `status` methods to built-in rejections ([#1612])[#1612]: https://github.com/tokio-rs/axum/pull/1612# 0.3.0 (25. November, 2022)- **added:** Added new `FromRequestParts` trait. See axum's changelog for more details ([#1272])- **breaking:** `FromRequest` has been reworked and `RequestParts` has been removed. See axum's changelog for more details ([#1272])- **breaking:** `BodyAlreadyExtracted` has been removed ([#1272])- **breaking:** `AppendHeaders` now works on any `impl IntoIterator` ([#1495])[#1272]: https://github.com/tokio-rs/axum/pull/1272[#1495]: https://github.com/tokio-rs/axum/pull/1495<details><summary>0.3.0 Pre-Releases</summary># 0.3.0-rc.3 (8. November, 2022)- **added:** Add `DefaultBodyLimit::max` for changing the default body limit ([#1397])- **added:** Add `Error::into_inner` for converting `Error` to `BoxError` without allocating ([#1476])- **breaking:** `AppendHeaders` now works on any `impl IntoIterator` ([#1495])[#1397]: https://github.com/tokio-rs/axum/pull/1397[#1476]: https://github.com/tokio-rs/axum/pull/1476[#1495]: https://github.com/tokio-rs/axum/pull/1495# 0.3.0-rc.2 (10. September, 2022)- **breaking:** Added default limit to how much data `Bytes::from_request` will consume. Previously it would attempt to consume the entire request body without checking its length. This meant if a malicious peer sent an large (or infinite) request body your server might run out of memory and crash. The default limit is at 2 MB and can be disabled by adding the new `DefaultBodyLimit::disable()` middleware. See its documentation for more details. This also applies to `String` which used `Bytes::from_request` internally. ([#1346])[#1346]: https://github.com/tokio-rs/axum/pull/1346# 0.3.0-rc.1 (23. August, 2022)- **breaking:** `FromRequest` has been reworked and `RequestParts` has been removed. See axum's changelog for more details ([#1272])- **added:** Added new `FromRequestParts` trait. See axum's changelog for more details ([#1272])- **breaking:** `BodyAlreadyExtracted` has been removed ([#1272])[#1155]: https://github.com/tokio-rs/axum/pull/1155[#1272]: https://github.com/tokio-rs/axum/pull/1272</details># 0.2.8 (10. September, 2022)- **breaking:** Added default limit to how much data `Bytes::from_request` will consume. Previously it would attempt to consume the entire request body without checking its length. This meant if a malicious peer sent an large (or infinite) request body your server might run out of memory and crash. The default limit is at 2 MB and can be disabled by adding the new `DefaultBodyLimit::disable()` middleware. See its documentation for more details. This also applies to `String` which used `Bytes::from_request` internally. ([#1346])[#1346]: https://github.com/tokio-rs/axum/pull/1346# 0.2.7 (10. July, 2022)- **fix:** Fix typos in `RequestParts` docs ([#1147])[#1147]: https://github.com/tokio-rs/axum/pull/1147# 0.2.6 (18. June, 2022)- **change:** axum-core's MSRV is now 1.56 ([#1098])[#1098]: https://github.com/tokio-rs/axum/pull/1098# 0.2.5 (08. June, 2022)- **added:** Automatically handle `http_body::LengthLimitError` in `FailedToBufferBody` and map such errors to `413 Payload Too Large` ([#1048])- **fixed:** Use `impl IntoResponse` less in docs ([#1049])[#1048]: https://github.com/tokio-rs/axum/pull/1048[#1049]: https://github.com/tokio-rs/axum/pull/1049# 0.2.4 (02. May, 2022)- **added:** Implement `IntoResponse` and `IntoResponseParts` for `http::Extensions` ([#975])- **added:** Implement `IntoResponse` for `(http::response::Parts, impl IntoResponse)` ([#950])- **added:** Implement `IntoResponse` for `(http::response::Response<()>, impl IntoResponse)` ([#950])- **added:** Implement `IntoResponse for (Parts | Request<()>, $(impl IntoResponseParts)+, impl IntoResponse)` ([#980])[#950]: https://github.com/tokio-rs/axum/pull/950[#975]: https://github.com/tokio-rs/axum/pull/975[#980]: https://github.com/tokio-rs/axum/pull/980# 0.2.3 (25. April, 2022)- **added:** Add `response::ErrorResponse` and `response::Result` for `IntoResponse`-based error handling ([#921])[#921]: https://github.com/tokio-rs/axum/pull/921# 0.2.2 (19. April, 2022)- **added:** Add `AppendHeaders` for appending headers to a response rather than overriding them ([#927])[#927]: https://github.com/tokio-rs/axum/pull/927# 0.2.1 (03. April, 2022)- **added:** Add `RequestParts::extract` which allows applying an extractor as a method call ([#897])[#897]: https://github.com/tokio-rs/axum/pull/897# 0.2.0 (31. March, 2022)- **added:** Add `IntoResponseParts` trait which allows defining custom response types for adding headers or extensions to responses ([#797])- **breaking:** Using `HeaderMap` as an extractor will no longer remove the headers and thus they'll still be accessible to other extractors, such as `axum::extract::Json`. Instead `HeaderMap` will clone the headers. You should prefer to use `TypedHeader` to extract only the headers you need ([#698]) This includes these breaking changes: - `RequestParts::take_headers` has been removed. - `RequestParts::headers` returns `&HeaderMap`. - `RequestParts::headers_mut` returns `&mut HeaderMap`. - `HeadersAlreadyExtracted` has been removed. - The `HeadersAlreadyExtracted` variant has been removed from these rejections: - `RequestAlreadyExtracted` - `RequestPartsAlreadyExtracted` - `<HeaderMap as FromRequest<_>>::Rejection` has been changed to `std::convert::Infallible`.- **breaking:** `axum::http::Extensions` is no longer an extractor (ie it doesn't implement `FromRequest`). The `axum::extract::Extension` extractor is _not_ impacted by this and works the same. This change makes it harder to accidentally remove all extensions which would result in confusing errors elsewhere ([#699]) This includes these breaking changes: - `RequestParts::take_extensions` has been removed. - `RequestParts::extensions` returns `&Extensions`. - `RequestParts::extensions_mut` returns `&mut Extensions`. - `RequestAlreadyExtracted` has been removed. - `<Request as FromRequest>::Rejection` is now `BodyAlreadyExtracted`. - `<http::request::Parts as FromRequest>::Rejection` is now `Infallible`. - `ExtensionsAlreadyExtracted` has been removed.- **breaking:** `RequestParts::body_mut` now returns `&mut Option<B>` so the body can be swapped ([#869])[#698]: https://github.com/tokio-rs/axum/pull/698[#699]: https://github.com/tokio-rs/axum/pull/699[#797]: https://github.com/tokio-rs/axum/pull/797[#869]: https://github.com/tokio-rs/axum/pull/869# 0.1.2 (22. February, 2022)- **added:** Implement `IntoResponse` for `bytes::BytesMut` and `bytes::Chain<T, U>` ([#767])[#767]: https://github.com/tokio-rs/axum/pull/767# 0.1.1 (06. December, 2021)- **added:** `axum_core::response::Response` now exists as a shorthand for writing `Response<BoxBody>` ([#590])[#590]: https://github.com/tokio-rs/axum/pull/590# 0.1.0 (02. December, 2021)- Initial release.