1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-11-18 15:41:17 +00:00
actix-web/CHANGES.md

627 lines
16 KiB
Markdown
Raw Normal View History

2017-10-31 03:46:39 +00:00
# Changes
2019-09-25 04:28:41 +00:00
2021-01-02 00:12:18 +00:00
## Unreleased - 2021-xx-xx
2021-01-05 00:22:57 +00:00
### Added
* `Compat` middleware enabling generic response body/error type of middlewares like `Logger` and
`Compress` to be used in `middleware::Condition` and `Resource`, `Scope` services. [#1865]
2021-01-05 00:22:57 +00:00
2020-12-22 23:45:31 +00:00
### Changed
* Update `actix-*` dependencies to tokio `1.0` based versions. [#1813]
* Bumped `rand` to `0.8`.
* Update `rust-tls` to `0.19`. [#1813]
2020-12-26 21:46:19 +00:00
* Rename `Handler` to `HandlerService` and rename `Factory` to `Handler`. [#1852]
* The default `TrailingSlash` is now `Trim`, in line with existing documentation. See migration
guide for implications. [#1875]
* Rename `DefaultHeaders::{content_type => add_content_type}`. [#1875]
2020-12-28 00:44:15 +00:00
* MSRV is now 1.46.0.
2020-12-22 23:45:31 +00:00
### Fixed
* Added the underlying parse error to `test::read_body_json`'s panic message. [#1812]
### Removed
* Public modules `middleware::{normalize, err_handlers}`. All necessary middleware structs are now
exposed directly by the `middleware` module.
[#1812]: https://github.com/actix/actix-web/pull/1812
[#1813]: https://github.com/actix/actix-web/pull/1813
2020-12-26 21:46:19 +00:00
[#1852]: https://github.com/actix/actix-web/pull/1852
[#1865]: https://github.com/actix/actix-web/pull/1865
[#1875]: https://github.com/actix/actix-web/pull/1875
2020-12-01 22:22:46 +00:00
2021-01-02 00:12:18 +00:00
2020-12-01 22:22:46 +00:00
## 3.3.2 - 2020-12-01
2020-11-29 16:35:35 +00:00
### Fixed
2020-12-01 22:22:46 +00:00
* Removed an occasional `unwrap` on `None` panic in `NormalizePathNormalization`. [#1762]
* Fix `match_pattern()` returning `None` for scope with empty path resource. [#1798]
* Increase minimum `socket2` version. [#1803]
2020-12-01 22:22:46 +00:00
[#1762]: https://github.com/actix/actix-web/pull/1762
[#1798]: https://github.com/actix/actix-web/pull/1798
2020-12-01 22:22:46 +00:00
[#1803]: https://github.com/actix/actix-web/pull/1803
## 3.3.1 - 2020-11-29
* Ensure `actix-http` dependency uses same `serde_urlencoded`.
## 3.3.0 - 2020-11-25
2020-11-20 18:02:41 +00:00
### Added
* Add `Either<A, B>` extractor helper. [#1788]
### Changed
* Upgrade `serde_urlencoded` to `0.7`. [#1773]
2020-10-30 03:15:22 +00:00
[#1773]: https://github.com/actix/actix-web/pull/1773
2020-11-20 18:02:41 +00:00
[#1788]: https://github.com/actix/actix-web/pull/1788
2020-10-30 03:15:22 +00:00
## 3.2.0 - 2020-10-30
### Added
* Implement `exclude_regex` for Logger middleware. [#1723]
* Add request-local data extractor `web::ReqData`. [#1748]
* Add ability to register closure for request middleware logging. [#1749]
* Add `app_data` to `ServiceConfig`. [#1757]
* Expose `on_connect` for access to the connection stream before request is handled. [#1754]
### Changed
2020-10-30 03:15:22 +00:00
* Updated actix-web-codegen dependency for access to new `#[route(...)]` multi-method macro.
* Print non-configured `Data<T>` type when attempting extraction. [#1743]
* Re-export bytes::Buf{Mut} in web module. [#1750]
2020-10-25 10:41:44 +00:00
* Upgrade `pin-project` to `1.0`.
2020-09-30 10:07:35 +00:00
[#1723]: https://github.com/actix/actix-web/pull/1723
[#1743]: https://github.com/actix/actix-web/pull/1743
[#1748]: https://github.com/actix/actix-web/pull/1748
[#1750]: https://github.com/actix/actix-web/pull/1750
[#1754]: https://github.com/actix/actix-web/pull/1754
[#1749]: https://github.com/actix/actix-web/pull/1749
2020-09-30 10:07:35 +00:00
## 3.1.0 - 2020-09-29
### Changed
2020-09-30 10:07:35 +00:00
* Add `TrailingSlash::MergeOnly` behaviour to `NormalizePath`, which allows `NormalizePath`
to retain any trailing slashes. [#1695]
* Remove bound `std::marker::Sized` from `web::Data` to support storing `Arc<dyn Trait>`
via `web::Data::from` [#1710]
2020-09-15 12:14:14 +00:00
2020-09-30 10:07:35 +00:00
### Fixed
* `ResourceMap` debug printing is no longer infinitely recursive. [#1708]
[#1695]: https://github.com/actix/actix-web/pull/1695
[#1708]: https://github.com/actix/actix-web/pull/1708
2020-09-30 10:07:35 +00:00
[#1710]: https://github.com/actix/actix-web/pull/1710
2020-09-15 12:14:14 +00:00
## 3.0.2 - 2020-09-15
### Fixed
* `NormalizePath` when used with `TrailingSlash::Trim` no longer trims the root path "/". [#1678]
[#1678]: https://github.com/actix/actix-web/pull/1678
2020-09-13 02:24:44 +00:00
## 3.0.1 - 2020-09-13
### Changed
* `middleware::normalize::TrailingSlash` enum is now accessible. [#1673]
2020-09-13 02:24:44 +00:00
[#1673]: https://github.com/actix/actix-web/pull/1673
2020-09-11 12:50:10 +00:00
## 3.0.0 - 2020-09-11
* No significant changes from `3.0.0-beta.4`.
## 3.0.0-beta.4 - 2020-09-09
### Added
* `middleware::NormalizePath` now has configurable behaviour for either always having a trailing
slash, or as the new addition, always trimming trailing slashes. [#1639]
### Changed
* Update actix-codec and actix-utils dependencies. [#1634]
* `FormConfig` and `JsonConfig` configurations are now also considered when set
using `App::data`. [#1641]
2020-09-09 08:20:54 +00:00
* `HttpServer::maxconn` is renamed to the more expressive `HttpServer::max_connections`. [#1655]
* `HttpServer::maxconnrate` is renamed to the more expressive
`HttpServer::max_connection_rate`. [#1655]
[#1639]: https://github.com/actix/actix-web/pull/1639
[#1641]: https://github.com/actix/actix-web/pull/1641
[#1634]: https://github.com/actix/actix-web/pull/1634
2020-09-09 08:20:54 +00:00
[#1655]: https://github.com/actix/actix-web/pull/1655
## 3.0.0-beta.3 - 2020-08-17
2020-08-17 15:28:39 +00:00
### Changed
* Update `rustls` to 0.18
2020-08-17 10:32:38 +00:00
2020-08-17 10:32:38 +00:00
## 3.0.0-beta.2 - 2020-08-17
### Changed
* `PayloadConfig` is now also considered in `Bytes` and `String` extractors when set
using `App::data`. [#1610]
* `web::Path` now has a public representation: `web::Path(pub T)` that enables
destructuring. [#1594]
* `ServiceRequest::app_data` allows retrieval of non-Data data without splitting into parts to
access `HttpRequest` which already allows this. [#1618]
* Re-export all error types from `awc`. [#1621]
2020-07-21 07:40:30 +00:00
* MSRV is now 1.42.0.
### Fixed
* Memory leak of app data in pooled requests. [#1609]
[#1594]: https://github.com/actix/actix-web/pull/1594
[#1609]: https://github.com/actix/actix-web/pull/1609
[#1610]: https://github.com/actix/actix-web/pull/1610
[#1618]: https://github.com/actix/actix-web/pull/1618
[#1621]: https://github.com/actix/actix-web/pull/1621
2020-06-18 14:45:30 +00:00
## 3.0.0-beta.1 - 2020-07-13
### Added
2020-06-18 14:45:30 +00:00
* Re-export `actix_rt::main` as `actix_web::main`.
* `HttpRequest::match_pattern` and `ServiceRequest::match_pattern` for extracting the matched
resource pattern.
* `HttpRequest::match_name` and `ServiceRequest::match_name` for extracting matched resource name.
2020-06-18 14:45:30 +00:00
### Changed
* Fix actix_http::h1::dispatcher so it returns when HW_BUFFER_SIZE is reached. Should reduce peak memory consumption during large uploads. [#1550]
* Migrate cookie handling to `cookie` crate. Actix-web no longer requires `ring` dependency.
* MSRV is now 1.41.1
### Fixed
* `NormalizePath` improved consistency when path needs slashes added _and_ removed.
## 3.0.0-alpha.3 - 2020-05-21
### Added
* Add option to create `Data<T>` from `Arc<T>` [#1509]
### Changed
* Resources and Scopes can now access non-overridden data types set on App (or containing scopes) when setting their own data. [#1486]
* Fix audit issue logging by default peer address [#1485]
2020-05-13 00:57:37 +00:00
* Bump minimum supported Rust version to 1.40
* Replace deprecated `net2` crate with `socket2`
[#1485]: https://github.com/actix/actix-web/pull/1485
[#1509]: https://github.com/actix/actix-web/pull/1509
2020-05-07 21:46:13 +00:00
## [3.0.0-alpha.2] - 2020-05-08
### Changed
* `{Resource,Scope}::default_service(f)` handlers now support app data extraction. [#1452]
* Implement `std::error::Error` for our custom errors [#1422]
* NormalizePath middleware now appends trailing / so that routes of form /example/ respond to /example requests. [#1433]
2020-05-07 21:46:13 +00:00
* Remove the `failure` feature and support.
[#1422]: https://github.com/actix/actix-web/pull/1422
[#1433]: https://github.com/actix/actix-web/pull/1433
[#1452]: https://github.com/actix/actix-web/pull/1452
[#1486]: https://github.com/actix/actix-web/pull/1486
2020-03-11 18:24:15 +00:00
## [3.0.0-alpha.1] - 2020-03-11
2020-02-23 08:33:28 +00:00
### Added
* Add helper function for creating routes with `TRACE` method guard `web::trace()`
* Add convenience functions `test::read_body_json()` and `test::TestRequest::send_request()` for testing.
2020-02-23 08:33:28 +00:00
### Changed
* Use `sha-1` crate instead of unmaintained `sha1` crate
2020-03-11 18:24:15 +00:00
* Skip empty chunks when returning response from a `Stream` [#1308]
2020-02-22 22:08:22 +00:00
* Update the `time` dependency to 0.2.7
2020-03-04 06:20:14 +00:00
* Update `actix-tls` dependency to 2.0.0-alpha.1
* Update `rustls` dependency to 0.17
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 11:44:22 +00:00
2020-03-11 18:24:15 +00:00
[#1308]: https://github.com/actix/actix-web/pull/1308
2019-12-25 16:21:00 +00:00
## [2.0.0] - 2019-12-25
### Changed
* Rename `HttpServer::start()` to `HttpServer::run()`
* Allow to gracefully stop test server via `TestServer::stop()`
* Allow to specify multi-patterns for resources
2019-12-20 11:36:48 +00:00
## [2.0.0-rc] - 2019-12-20
2019-12-16 11:22:26 +00:00
### Changed
* Move `BodyEncoding` to `dev` module #1220
* Allow to set `peer_addr` for TestRequest #1074
2019-12-20 11:45:35 +00:00
* Make web::Data deref to Arc<T> #1214
* Rename `App::register_data()` to `App::app_data()`
* `HttpRequest::app_data<T>()` returns `Option<&T>` instead of `Option<&Data<T>>`
### Fixed
* Fix `AppConfig::secure()` is always false. #1202
2019-12-15 16:51:14 +00:00
## [2.0.0-alpha.6] - 2019-12-15
### Fixed
* Fixed compilation with default features off
2019-12-13 06:16:43 +00:00
## [2.0.0-alpha.5] - 2019-12-13
### Added
* Add test server, `test::start()` and `test::start_with()`
2019-12-08 14:22:39 +00:00
## [2.0.0-alpha.4] - 2019-12-08
### Deleted
2020-09-30 10:07:35 +00:00
* Delete HttpServer::run(), it is not useful with async/await
2019-12-07 07:00:03 +00:00
## [2.0.0-alpha.3] - 2019-12-07
2019-12-05 17:35:43 +00:00
### Changed
* Migrate to tokio 0.2
2019-11-25 11:59:14 +00:00
## [2.0.0-alpha.1] - 2019-11-22
### Changed
2019-11-25 11:59:14 +00:00
* Migrated to `std::future`
* Remove implementation of `Responder` for `()`. (#1167)
2019-11-14 02:55:37 +00:00
## [1.0.9] - 2019-11-14
### Added
* Add `Payload::into_inner` method and make stored `def::Payload` public. (#1110)
### Changed
* Support `Host` guards when the `Host` header is unset (e.g. HTTP/2 requests) (#1129)
2019-11-14 02:55:37 +00:00
2019-09-25 09:39:09 +00:00
## [1.0.8] - 2019-09-25
### Added
* Add `Scope::register_data` and `Resource::register_data` methods, parallel to
`App::register_data`.
* Add `middleware::Condition` that conditionally enables another middleware
* Allow to re-construct `ServiceRequest` from `HttpRequest` and `Payload`
* Add `HttpServer::listen_uds` for ability to listen on UDS FD rather than path,
which is useful for example with systemd.
2019-09-25 04:28:41 +00:00
### Changed
2020-09-30 10:07:35 +00:00
* Make UrlEncodedError::Overflow more informative
2017-10-24 06:25:32 +00:00
2019-09-25 04:28:41 +00:00
* Use actix-testing for testing utils
2019-08-29 03:36:16 +00:00
## [1.0.7] - 2019-08-29
### Fixed
* Request Extensions leak #1062
## [1.0.6] - 2019-08-28
2019-07-19 05:07:52 +00:00
### Added
* Re-implement Host predicate (#989)
2020-09-30 10:07:35 +00:00
* Form implements Responder, returning a `application/x-www-form-urlencoded` response
2019-08-23 15:02:03 +00:00
* Add `into_inner` to `Data`
* Add `test::TestRequest::set_form()` convenience method to automatically serialize data and set
the header in test requests.
2019-07-19 09:47:44 +00:00
### Changed
* `Query` payload made `pub`. Allows user to pattern-match the payload.
* Enable `rust-tls` feature for client #1045
2019-08-13 18:03:24 +00:00
* Update serde_urlencoded to 0.6.1
* Update url to 2.1
2019-08-13 17:48:11 +00:00
2019-07-19 05:07:52 +00:00
2019-07-18 11:51:51 +00:00
## [1.0.5] - 2019-07-18
### Added
* Unix domain sockets (HttpServer::bind_uds) #92
* Actix now logs errors resulting in "internal server error" responses always, with the `error`
logging level
### Fixed
* Restored logging of errors through the `Logger` middleware
2019-07-17 06:07:12 +00:00
## [1.0.4] - 2019-07-17
2019-07-01 03:37:03 +00:00
### Added
* Add `Responder` impl for `(T, StatusCode) where T: Responder`
* Allow to access app's resource map via
`ServiceRequest::resource_map()` and `HttpRequest::resource_map()` methods.
2019-07-01 03:37:03 +00:00
### Changed
* Upgrade `rand` dependency version to 0.7
2019-06-28 08:36:20 +00:00
## [1.0.3] - 2019-06-28
### Added
* Support asynchronous data factories #850
### Changed
* Use `encoding_rs` crate instead of unmaintained `encoding` crate
2019-06-17 06:33:00 +00:00
## [1.0.2] - 2019-06-17
### Changed
2019-06-17 06:33:00 +00:00
* Move cors middleware to `actix-cors` crate.
* Move identity middleware to `actix-identity` crate.
2019-06-17 06:23:30 +00:00
## [1.0.1] - 2019-06-17
### Added
* Add support for PathConfig #903
* Add `middleware::identity::RequestIdentity` trait to `get_identity` from `HttpMessage`.
### Changed
* Move cors middleware to `actix-cors` crate.
2019-06-12 09:52:48 +00:00
* Move identity middleware to `actix-identity` crate.
* Disable default feature `secure-cookies`.
* Allow to test an app that uses async actors #897
2019-06-12 10:45:05 +00:00
* Re-apply patch from #637 #894
### Fixed
* HttpRequest::url_for is broken with nested scopes #915
2019-06-05 02:27:25 +00:00
## [1.0.0] - 2019-06-05
### Added
* Add `Scope::configure()` method.
* Add `ServiceRequest::set_payload()` method.
* Add `test::TestRequest::set_json()` convenience method to automatically
serialize data and set header in test requests.
2019-06-04 16:33:43 +00:00
* Add macros for head, options, trace, connect and patch http methods
### Changed
* Drop an unnecessary `Option<_>` indirection around `ServerBuilder` from `HttpServer`. #863
### Fixed
* Fix Logger request time format, and use rfc3339. #867
* Clear http requests pool on app service drop #860
2019-05-18 17:49:59 +00:00
## [1.0.0-rc] - 2019-05-18
2019-05-15 17:31:40 +00:00
### Add
2019-05-17 20:10:46 +00:00
* Add `Query<T>::from_query()` to extract parameters from a query string. #846
* `QueryConfig`, similar to `JsonConfig` for customizing error handling of query extractors.
### Changed
* `JsonConfig` is now `Send + Sync`, this implies that `error_handler` must be `Send + Sync` too.
2019-05-15 17:31:40 +00:00
### Fixed
* Codegen with parameters in the path only resolves the first registered endpoint #841
2019-05-12 17:49:21 +00:00
## [1.0.0-beta.4] - 2019-05-12
### Add
* Allow to set/override app data on scope level
### Changed
2019-05-10 21:45:30 +00:00
* `App::configure` take an `FnOnce` instead of `Fn`
2019-05-12 17:49:21 +00:00
* Upgrade actix-net crates
2019-05-18 16:54:23 +00:00
## [1.0.0-beta.3] - 2019-05-04
### Added
* Add helper function for executing futures `test::block_fn()`
### Changed
* Extractor configuration could be registered with `App::data()`
or with `Resource::data()` #775
* Route data is unified with app data, `Route::data()` moved to resource
level to `Resource::data()`
2019-05-04 15:42:27 +00:00
* CORS handling without headers #702
* Allow to construct `Data` instances to avoid double `Arc` for `Send + Sync` types.
2019-05-01 19:40:56 +00:00
### Fixed
* Fix `NormalizePath` middleware impl #806
### Deleted
* `App::data_factory()` is deleted.
2019-04-24 20:00:30 +00:00
## [1.0.0-beta.2] - 2019-04-24
### Added
2019-04-24 22:29:15 +00:00
* Add raw services support via `web::service()`
* Add helper functions for reading response body `test::read_body()`
2019-04-24 22:29:15 +00:00
* Add support for `remainder match` (i.e "/path/{tail}*")
2019-04-24 22:29:15 +00:00
* Extend `Responder` trait, allow to override status code and headers.
2019-04-24 22:42:34 +00:00
* Store visit and login timestamp in the identity cookie #502
### Changed
* `.to_async()` handler can return `Responder` type #792
2019-04-24 04:21:49 +00:00
### Fixed
* Fix async web::Data factory handling
2019-04-21 04:16:51 +00:00
## [1.0.0-beta.1] - 2019-04-20
### Added
2019-04-16 17:11:38 +00:00
* Add helper functions for reading test response body,
`test::read_response()` and test::read_response_json()`
2019-04-16 17:11:38 +00:00
* Add `.peer_addr()` #744
2019-04-20 18:18:04 +00:00
* Add `NormalizePath` middleware
2019-04-15 14:32:49 +00:00
### Changed
* Rename `RouterConfig` to `ServiceConfig`
* Rename `test::call_success` to `test::call_service`
* Removed `ServiceRequest::from_parts()` as it is unsafe to create from parts.
2019-04-20 00:23:17 +00:00
* `CookieIdentityPolicy::max_age()` accepts value in seconds
### Fixed
* Fixed `TestRequest::app_data()`
2019-04-14 15:09:32 +00:00
## [1.0.0-alpha.6] - 2019-04-14
### Changed
* Allow to use any service as default service.
* Remove generic type for request payload, always use default.
* Removed `Decompress` middleware. Bytes, String, Json, Form extractors
automatically decompress payload.
2019-04-13 23:35:25 +00:00
* Make extractor config type explicit. Add `FromRequest::Config` associated type.
2019-04-12 21:00:45 +00:00
## [1.0.0-alpha.5] - 2019-04-12
2019-04-11 03:47:28 +00:00
### Added
* Added async io `TestBuffer` for testing.
2019-04-12 21:00:45 +00:00
### Deleted
* Removed native-tls support
2019-04-11 03:47:28 +00:00
2019-04-08 06:42:05 +00:00
## [1.0.0-alpha.4] - 2019-04-08
### Added
* `App::configure()` allow to offload app configuration to different methods
* Added `URLPath` option for logger
2019-04-03 22:25:52 +00:00
* Added `ServiceRequest::app_data()`, returns `Data<T>`
* Added `ServiceFromRequest::app_data()`, returns `Data<T>`
### Changed
2019-04-07 21:43:07 +00:00
* `FromRequest` trait refactoring
* Move multipart support to actix-multipart crate
### Fixed
* Fix body propagation in Response::from_error. #760
2019-04-03 04:49:31 +00:00
## [1.0.0-alpha.3] - 2019-04-02
2019-04-01 03:43:00 +00:00
### Changed
* Renamed `TestRequest::to_service()` to `TestRequest::to_srv_request()`
* Renamed `TestRequest::to_response()` to `TestRequest::to_srv_response()`
2019-04-02 20:35:01 +00:00
* Removed `Deref` impls
2019-03-30 17:04:38 +00:00
### Removed
* Removed unused `actix_web::web::md()`
## [1.0.0-alpha.2] - 2019-03-29
2019-03-30 05:06:14 +00:00
### Added
* rustls support
### Changed
2019-03-30 05:06:14 +00:00
* use forked cookie
* multipart::Field renamed to MultipartField
2019-03-28 20:46:26 +00:00
## [1.0.0-alpha.1] - 2019-03-28
2019-03-24 23:17:59 +00:00
### Changed
2019-03-28 20:46:26 +00:00
* Complete architecture re-design.
2019-03-24 23:17:59 +00:00
* Return 405 response if no matching route found within resource #538