mirror of https://github.com/rwf2/Rocket.git
New version: 0.4.0.
This commit is contained in:
parent
7fb6ba9be5
commit
a4dcb0cf4c
223
CHANGELOG.md
223
CHANGELOG.md
|
@ -1,84 +1,4 @@
|
||||||
# Version 0.4.0-rc.2 (Nov 30, 2018)
|
# Version 0.4.0 (Dec 06, 2018)
|
||||||
|
|
||||||
## New Features
|
|
||||||
|
|
||||||
This release includes the following new features:
|
|
||||||
|
|
||||||
* Introduced the [`SpaceHelmet`] security and privacy headers fairing.
|
|
||||||
* Private cookies are gated behind a `private-cookies` feature.
|
|
||||||
* Applications can launch without a working directory.
|
|
||||||
* `Option` and `Result` types can be used in `uri!` expressions.
|
|
||||||
* Added [`State::from()`] for constructing `State` values.
|
|
||||||
|
|
||||||
[`SpaceHelmet`]: https://api.rocket.rs/v0.4/rocket_contrib/helmet/index.html
|
|
||||||
[`State::from()`]: https://api.rocket.rs/v0.4/rocket/struct.State.html#method.from
|
|
||||||
|
|
||||||
## Breaking Changes
|
|
||||||
|
|
||||||
This release includes several breaking changes. These changes are listed below
|
|
||||||
along with a short note about how to handle the breaking change in existing
|
|
||||||
applications when applicable.
|
|
||||||
|
|
||||||
* **Minimum required nightly is `2018-11-23`.**
|
|
||||||
|
|
||||||
Update to `nightly-2018-11-23` or later before updating to `rc.2`.
|
|
||||||
|
|
||||||
* **[`UriDisplay`] is parameterized by a [`UriPart`].**
|
|
||||||
|
|
||||||
When implementing `UriDisplay`, decide whether the value is to be displayed
|
|
||||||
in the path part, query part, or both of a URI. Implement `UriDisplay<Path>`
|
|
||||||
and/or `UriDisplay<Query>` appropriately.
|
|
||||||
|
|
||||||
* **[`UriDisplay`] derive was removed in favor of [`UriDisplayQuery`] and
|
|
||||||
[`UriDisplayPath`].**
|
|
||||||
|
|
||||||
To mimic the previous behavior, derive `UriDisplayQuery`.
|
|
||||||
|
|
||||||
* **[`Config::root()`] returns an `Option<&Path>` instead of an `&Path`.**
|
|
||||||
|
|
||||||
For the previous behavior, use `config.root().unwrap()`.
|
|
||||||
|
|
||||||
* **[`Config`] constructors return a `Config` instead of a `Result<Config>`.**
|
|
||||||
|
|
||||||
* **`ConfigError::BadCWD`, `Config.config_path` were removed.**
|
|
||||||
|
|
||||||
[`UriDisplay`]: https://api.rocket.rs/v0.4/rocket/http/uri/trait.UriDisplay.html
|
|
||||||
[`UriPart`]: https://api.rocket.rs/v0.4/rocket/http/uri/trait.UriPart.html
|
|
||||||
[`UriDisplayPath`]: https://api.rocket.rs/v0.4/rocket_codegen/derive.UriDisplayPath.html
|
|
||||||
[`UriDisplayQuery`]: https://api.rocket.rs/v0.4/rocket_codegen/derive.UriDisplayQuery.html
|
|
||||||
[`Config`]: https://api.rocket.rs/v0.4/rocket/struct.Config.html
|
|
||||||
[`Config::root()`]: https://api.rocket.rs/v0.4/rocket/struct.Config.html#method.root
|
|
||||||
|
|
||||||
## Fixes
|
|
||||||
|
|
||||||
Several issues in the first release candidate were addressed in this release:
|
|
||||||
|
|
||||||
* Characters in URIs are properly percent-encoded ([#808]).
|
|
||||||
* Generated variables are properly spanned and prefixed ([#817], [#839]).
|
|
||||||
* [`Client`] regained `Sync` ([#814]).
|
|
||||||
|
|
||||||
[#808]: https://github.com/SergioBenitez/Rocket/issues/808
|
|
||||||
[#817]: https://github.com/SergioBenitez/Rocket/issues/817
|
|
||||||
[#839]: https://github.com/SergioBenitez/Rocket/issues/839
|
|
||||||
[#814]: https://github.com/SergioBenitez/Rocket/issues/814
|
|
||||||
|
|
||||||
## General Improvements
|
|
||||||
|
|
||||||
In addition to new features, Rocket saw the following improvements:
|
|
||||||
|
|
||||||
* Console coloring uses default terminal colors instead of white.
|
|
||||||
* Console coloring is consistent across all messages.
|
|
||||||
* `i128` and `u128` now implement [`FromParam`], [`FromFormValue`].
|
|
||||||
* [`Form`] and [`LenientForm`] can be publicly constructed.
|
|
||||||
* Added ZIP (`application/zip`) as a known media type.
|
|
||||||
* The `base64` dependency was updated to `0.10`.
|
|
||||||
* Private, hidden `http` types are no longer visible in the rustdocs.
|
|
||||||
|
|
||||||
[`FromParam`]: https://api.rocket.rs/v0.4/rocket/request/trait.FromParam.html
|
|
||||||
[`FromFormValue`]: https://api.rocket.rs/v0.4/rocket/request/trait.FromFormValue.html
|
|
||||||
[`Data`]: https://api.rocket.rs/v0.4/rocket/struct.Data.html
|
|
||||||
|
|
||||||
# Version 0.4.0-rc.1 (Oct 31, 2018)
|
|
||||||
|
|
||||||
## New Features
|
## New Features
|
||||||
|
|
||||||
|
@ -92,6 +12,8 @@ This release includes the following new features:
|
||||||
* Introduced custom stateful handlers via [`Handler`].
|
* Introduced custom stateful handlers via [`Handler`].
|
||||||
* Introduced [transforming] data guards via [`FromData::transform()`].
|
* Introduced [transforming] data guards via [`FromData::transform()`].
|
||||||
* Introduced revamped [query string handling].
|
* Introduced revamped [query string handling].
|
||||||
|
* Introduced the [`SpaceHelmet`] security and privacy headers fairing.
|
||||||
|
* Private cookies are gated behind a `private-cookies` default feature.
|
||||||
* Added [derive for `FromFormValue`].
|
* Added [derive for `FromFormValue`].
|
||||||
* Added [derive for `Responder`].
|
* Added [derive for `Responder`].
|
||||||
* Added [`Template::custom()`] for customizing templating engines including
|
* Added [`Template::custom()`] for customizing templating engines including
|
||||||
|
@ -116,7 +38,11 @@ This release includes the following new features:
|
||||||
* [Default rankings] range from -6 to -1, differentiating on static query
|
* [Default rankings] range from -6 to -1, differentiating on static query
|
||||||
strings.
|
strings.
|
||||||
* Added [`Request::get_query_value()`] for retrieving a query value by key.
|
* Added [`Request::get_query_value()`] for retrieving a query value by key.
|
||||||
|
* Applications can launch without a working directory.
|
||||||
|
* Added [`State::from()`] for constructing `State` values.
|
||||||
|
|
||||||
|
[`SpaceHelmet`]: https://api.rocket.rs/v0.4/rocket_contrib/helmet/index.html
|
||||||
|
[`State::from()`]: https://api.rocket.rs/v0.4/rocket/struct.State.html#method.from
|
||||||
[Typed URIs]: https://rocket.rs/v0.4/guide/responses/#typed-uris
|
[Typed URIs]: https://rocket.rs/v0.4/guide/responses/#typed-uris
|
||||||
[ORM agnostic database support]: https://rocket.rs/v0.4/guide/state/#databases
|
[ORM agnostic database support]: https://rocket.rs/v0.4/guide/state/#databases
|
||||||
[`Template::custom()`]: https://api.rocket.rs/v0.4/rocket_contrib/templates/struct.Template.html#method.custom
|
[`Template::custom()`]: https://api.rocket.rs/v0.4/rocket_contrib/templates/struct.Template.html#method.custom
|
||||||
|
@ -180,19 +106,69 @@ This release includes many breaking changes. These changes are listed below
|
||||||
along with a short note about how to handle the breaking change in existing
|
along with a short note about how to handle the breaking change in existing
|
||||||
applications when applicable.
|
applications when applicable.
|
||||||
|
|
||||||
* **[`LaunchErrorKind::Collision`] contains a vector of the colliding routes.**
|
* **Route and catcher attributes respect function privacy.**
|
||||||
|
|
||||||
Destruct using `LaunchErrorKind::Collision(..)` to ignore the vector.
|
To mount a route or register a catcher outside of the module it is declared,
|
||||||
|
ensure that the handler function is marked `pub` or `crate`.
|
||||||
|
|
||||||
|
* **Query handling syntax has been completely revamped.**
|
||||||
|
|
||||||
|
A query parameter of `<param>` is now `<param..>`. Consider whether your
|
||||||
|
application benefits from the revamped [query string handling].
|
||||||
|
|
||||||
|
* **The `#[error]` attribute and `errors!` macro were removed.**
|
||||||
|
|
||||||
|
Use `#[catch]` and `catchers!` instead.
|
||||||
|
|
||||||
|
* **`Rocket::catch()` was renamed to [`Rocket::register()`].**
|
||||||
|
|
||||||
|
Change calls of the form `.catch(errors![..])` to
|
||||||
|
`.register(catchers![..])`.
|
||||||
|
|
||||||
|
* **The `#[catch]` attribute only accepts functions with 0 or 1 argument.**
|
||||||
|
|
||||||
|
Ensure the argument to the catcher, if any, is of type `&Request`.
|
||||||
|
|
||||||
* **[`json!`] returns a [`JsonValue`], no longer needs wrapping.**
|
* **[`json!`] returns a [`JsonValue`], no longer needs wrapping.**
|
||||||
|
|
||||||
Change instances of `Json(json!(..))` to `json!` and change the
|
Change instances of `Json(json!(..))` to `json!` and change the
|
||||||
corresponding type to `JsonValue`.
|
corresponding type to `JsonValue`.
|
||||||
|
|
||||||
|
* **All environments default to port 8000.**
|
||||||
|
|
||||||
|
Manually configure a port of `80` for the `stage` and `production`
|
||||||
|
environments for the previous behavior.
|
||||||
|
|
||||||
|
* **Release builds default to the production environment.**
|
||||||
|
|
||||||
|
Manually set the environment to `debug` with `ROCKET_ENV=debug` for the
|
||||||
|
previous behavior.
|
||||||
|
|
||||||
|
* **[`Form`] and [`LenientForm`] lost a lifetime parameter, `get()` method.**
|
||||||
|
|
||||||
|
Change a type of `Form<'a, T<'a>>` to `Form<T>` or `Form<T<'a>>`. `Form<T>`
|
||||||
|
and `LenientForm<T>` now implement `Deref<Target = T>`, allowing for calls
|
||||||
|
to `.get()` to be removed.
|
||||||
|
|
||||||
* **[`ring`] was updated to 0.13.**
|
* **[`ring`] was updated to 0.13.**
|
||||||
|
|
||||||
Ensure all transitive dependencies to `ring` refer to version `0.13`.
|
Ensure all transitive dependencies to `ring` refer to version `0.13`.
|
||||||
|
|
||||||
|
* **`Uri` was largely replaced by [`Origin`].**
|
||||||
|
|
||||||
|
In general, replace the type `Uri` with `Origin`. The `base` and `uri`
|
||||||
|
fields of [`Route`] are now of type [`Origin`]. The `&Uri` guard is now
|
||||||
|
`&Origin`. [`Request::uri()`] now returns an [`Origin`].
|
||||||
|
|
||||||
|
* **All items in [`rocket_contrib`] are namespaced behind modules.**
|
||||||
|
|
||||||
|
* `Json` is now `json::Json`
|
||||||
|
* `MsgPack` is now `msgpack::MsgPack`
|
||||||
|
* `MsgPackError` is now `msgpack::Error`
|
||||||
|
* `Template` is now `templates::Template`
|
||||||
|
* `UUID` is now `uuid::Uuid`
|
||||||
|
* `Value` is replaced by `json::JsonValue`
|
||||||
|
|
||||||
* **TLS certificates require the `subjectAltName` extension.**
|
* **TLS certificates require the `subjectAltName` extension.**
|
||||||
|
|
||||||
Ensure that your TLS certificates contain the `subjectAltName` extension
|
Ensure that your TLS certificates contain the `subjectAltName` extension
|
||||||
|
@ -215,16 +191,6 @@ applications when applicable.
|
||||||
Use [`Request::real_ip()`] or [`Request::client_ip()`] to retrieve the IP
|
Use [`Request::real_ip()`] or [`Request::client_ip()`] to retrieve the IP
|
||||||
address from the "X-Real-IP" header if it is present.
|
address from the "X-Real-IP" header if it is present.
|
||||||
|
|
||||||
* **Release builds default to the production environment.**
|
|
||||||
|
|
||||||
Manually set the environment to `debug` with `ROCKET_ENV=debug` for the
|
|
||||||
previous behavior.
|
|
||||||
|
|
||||||
* **All environments default to port 8000.**
|
|
||||||
|
|
||||||
Manually configure a port of `80` for the `stage` and `production`
|
|
||||||
environments for the previous behavior.
|
|
||||||
|
|
||||||
* **[`Bind`] variant was added to [`LaunchErrorKind`].**
|
* **[`Bind`] variant was added to [`LaunchErrorKind`].**
|
||||||
|
|
||||||
Ensure matches on `LaunchErrorKind` include or ignore the `Bind` variant.
|
Ensure matches on `LaunchErrorKind` include or ignore the `Bind` variant.
|
||||||
|
@ -238,29 +204,10 @@ applications when applicable.
|
||||||
|
|
||||||
Use `Uuid` instead of `UUID`.
|
Use `Uuid` instead of `UUID`.
|
||||||
|
|
||||||
* **The `#[error]` attribute and `errors!` macro were removed.**
|
|
||||||
|
|
||||||
Use `#[catch]` and `catchers!` instead.
|
|
||||||
|
|
||||||
* **`Rocket::catch()` was renamed to [`Rocket::register()`].**
|
|
||||||
|
|
||||||
Change calls of the form `.catch(errors![..])` to
|
|
||||||
`.register(catchers![..])`.
|
|
||||||
|
|
||||||
* **The `#[catch]` attribute only accepts functions with 0 or 1 argument.**
|
|
||||||
|
|
||||||
Ensure the argument to the catcher, if any, is of type `&Request`.
|
|
||||||
|
|
||||||
* **`LocalRequest::cloned_dispatch()` was removed.**
|
* **`LocalRequest::cloned_dispatch()` was removed.**
|
||||||
|
|
||||||
Chain calls to `.clone().dispatch()` for the previous behavior.
|
Chain calls to `.clone().dispatch()` for the previous behavior.
|
||||||
|
|
||||||
* **`Uri` was largely replaced by [`Origin`].**
|
|
||||||
|
|
||||||
In general, replace the type `Uri` with `Origin`. The `base` and `uri`
|
|
||||||
fields of [`Route`] are now of type [`Origin`]. The `&Uri` guard is now
|
|
||||||
`&Origin`. [`Request::uri()`] now returns an [`Origin`].
|
|
||||||
|
|
||||||
* **[`Redirect`] constructors take a generic type of `T:
|
* **[`Redirect`] constructors take a generic type of `T:
|
||||||
TryInto<Uri<'static>>`.**
|
TryInto<Uri<'static>>`.**
|
||||||
|
|
||||||
|
@ -277,11 +224,6 @@ applications when applicable.
|
||||||
|
|
||||||
Ensure matches on `ConfigError` include or ignore the `Missing` variant.
|
Ensure matches on `ConfigError` include or ignore the `Missing` variant.
|
||||||
|
|
||||||
* **Route and catcher attributes respect function privacy.**
|
|
||||||
|
|
||||||
To mount a route or register a catcher outside of the module it is declared,
|
|
||||||
ensure that the handler function is marked `pub` or `crate`.
|
|
||||||
|
|
||||||
* **The [`FromData`] impl for [`Json`] now returns an error of type
|
* **The [`FromData`] impl for [`Json`] now returns an error of type
|
||||||
[`JsonError`].**
|
[`JsonError`].**
|
||||||
|
|
||||||
|
@ -293,29 +235,13 @@ applications when applicable.
|
||||||
Change _implementations_, not uses, of `FromData` to `FromDataSimple`.
|
Change _implementations_, not uses, of `FromData` to `FromDataSimple`.
|
||||||
Consider whether your implementation could benefit from [transformations].
|
Consider whether your implementation could benefit from [transformations].
|
||||||
|
|
||||||
* **[`Form`] and [`LenientForm`] lost a lifetime parameter, `get()` method.**
|
|
||||||
|
|
||||||
Change a type of `Form<'a, T<'a>>` to `Form<T>` or `Form<T<'a>>`. `Form<T>`
|
|
||||||
and `LenientForm<T>` now implement `Deref<Target = T>`, allowing for calls
|
|
||||||
to `.get()` to be removed.
|
|
||||||
|
|
||||||
* **Query handling syntax has been completely revamped.**
|
|
||||||
|
|
||||||
A query parameter of `<param>` is now `<param..>`. Consider whether your
|
|
||||||
application benefits from the revamped [query string handling].
|
|
||||||
|
|
||||||
* **[`FormItems`] iterates over values of type [`FormItem`].**
|
* **[`FormItems`] iterates over values of type [`FormItem`].**
|
||||||
|
|
||||||
Map using `.map(|item| item.key_value())` for the previous behavior.
|
Map using `.map(|item| item.key_value())` for the previous behavior.
|
||||||
|
|
||||||
* **All items in [`rocket_contrib`] are namespaced behind modules.**
|
* **[`LaunchErrorKind::Collision`] contains a vector of the colliding routes.**
|
||||||
|
|
||||||
* `Json` is now `json::Json`
|
Destruct using `LaunchErrorKind::Collision(..)` to ignore the vector.
|
||||||
* `MsgPack` is now `msgpack::MsgPack`
|
|
||||||
* `MsgPackError` is now `msgpack::Error`
|
|
||||||
* `Template` is now `templates::Template`
|
|
||||||
* `UUID` is now `uuid::Uuid`
|
|
||||||
* `Value` is replaced by `json::JsonValue`
|
|
||||||
|
|
||||||
* **[`Request::get_param()`] and [`Request::get_segments()`] are indexed by
|
* **[`Request::get_param()`] and [`Request::get_segments()`] are indexed by
|
||||||
_segment_, not dynamic parameter.**
|
_segment_, not dynamic parameter.**
|
||||||
|
@ -339,8 +265,18 @@ applications when applicable.
|
||||||
`status::NoContent` with `Status::NoContent`. Replace `status::Reset` with
|
`status::NoContent` with `Status::NoContent`. Replace `status::Reset` with
|
||||||
`Status::ResetContent`.
|
`Status::ResetContent`.
|
||||||
|
|
||||||
|
* **[`Config::root()`] returns an `Option<&Path>` instead of an `&Path`.**
|
||||||
|
|
||||||
|
For the previous behavior, use `config.root().unwrap()`.
|
||||||
|
|
||||||
* **[`Status::new()`] is no longer `const`.**
|
* **[`Status::new()`] is no longer `const`.**
|
||||||
|
|
||||||
|
Construct a `Status` directly.
|
||||||
|
|
||||||
|
* **[`Config`] constructors return a `Config` instead of a `Result<Config>`.**
|
||||||
|
|
||||||
|
* **`ConfigError::BadCWD`, `Config.config_path` were removed.**
|
||||||
|
|
||||||
* **[`Json`] no longer has a default value for its type parameter.**
|
* **[`Json`] no longer has a default value for its type parameter.**
|
||||||
|
|
||||||
* **Using `data` on a non-payload method route is a warning instead of error.**
|
* **Using `data` on a non-payload method route is a warning instead of error.**
|
||||||
|
@ -389,6 +325,8 @@ applications when applicable.
|
||||||
[`rocket_contrib`]: https://api.rocket.rs/v0.4/rocket_contrib/index.html
|
[`rocket_contrib`]: https://api.rocket.rs/v0.4/rocket_contrib/index.html
|
||||||
[`MsgPack`]: https://api.rocket.rs/v0.4/rocket_contrib/msgpack/struct.MsgPack.html
|
[`MsgPack`]: https://api.rocket.rs/v0.4/rocket_contrib/msgpack/struct.MsgPack.html
|
||||||
[`Status::new()`]: https://api.rocket.rs/v0.4/rocket/http/struct.Status.html#method.new
|
[`Status::new()`]: https://api.rocket.rs/v0.4/rocket/http/struct.Status.html#method.new
|
||||||
|
[`Config`]: https://api.rocket.rs/v0.4/rocket/struct.Config.html
|
||||||
|
[`Config::root()`]: https://api.rocket.rs/v0.4/rocket/struct.Config.html#method.root
|
||||||
|
|
||||||
## General Improvements
|
## General Improvements
|
||||||
|
|
||||||
|
@ -401,6 +339,8 @@ In addition to new features, Rocket saw the following improvements:
|
||||||
* Private cookies are set to `HttpOnly` and are given an expiration date of 1
|
* Private cookies are set to `HttpOnly` and are given an expiration date of 1
|
||||||
week by default.
|
week by default.
|
||||||
* A [Tera templates example] was added.
|
* A [Tera templates example] was added.
|
||||||
|
* All macros, derives, and attributes are individually documented in
|
||||||
|
[`rocket_codegen`].
|
||||||
* Invalid client requests receive a response of `400` instead of `500`.
|
* Invalid client requests receive a response of `400` instead of `500`.
|
||||||
* Response bodies are reliably stripped on `HEAD` requests.
|
* Response bodies are reliably stripped on `HEAD` requests.
|
||||||
* Added a default catcher for `504: Gateway Timeout`.
|
* Added a default catcher for `504: Gateway Timeout`.
|
||||||
|
@ -423,7 +363,8 @@ In addition to new features, Rocket saw the following improvements:
|
||||||
* Added FLAC (`audio/flac`), Icon (`image/x-icon`), WEBA (`audio/webm`), TIFF
|
* Added FLAC (`audio/flac`), Icon (`image/x-icon`), WEBA (`audio/webm`), TIFF
|
||||||
(`image/tiff`), AAC (`audio/aac`), Calendar (`text/calendar`), MPEG
|
(`image/tiff`), AAC (`audio/aac`), Calendar (`text/calendar`), MPEG
|
||||||
(`video/mpeg`), TAR (`application/x-tar`), GZIP (`application/gzip`), MOV
|
(`video/mpeg`), TAR (`application/x-tar`), GZIP (`application/gzip`), MOV
|
||||||
(`video/quicktime`), MP4 (`video/mp4`) as known media types.
|
(`video/quicktime`), MP4 (`video/mp4`), ZIP (`application/zip`) as known
|
||||||
|
media types.
|
||||||
* Added `.weba` (`WEBA`), `.ogv` (`OGG`), `.mp4` (`MP4`), `.mpeg4` (`MP4`),
|
* Added `.weba` (`WEBA`), `.ogv` (`OGG`), `.mp4` (`MP4`), `.mpeg4` (`MP4`),
|
||||||
`.aac` (`AAC`), `.ics` (`Calendar`), `.bin` (`Binary`), `.mpg` (`MPEG`),
|
`.aac` (`AAC`), `.ics` (`Calendar`), `.bin` (`Binary`), `.mpg` (`MPEG`),
|
||||||
`.mpeg` (`MPEG`), `.tar` (`TAR`), `.gz` (`GZIP`), `.tif` (`TIFF`), `.tiff`
|
`.mpeg` (`MPEG`), `.tar` (`TAR`), `.gz` (`GZIP`), `.tif` (`TIFF`), `.tiff`
|
||||||
|
@ -433,8 +374,11 @@ In addition to new features, Rocket saw the following improvements:
|
||||||
* Generated code now logs through logging infrastructures as opposed to using
|
* Generated code now logs through logging infrastructures as opposed to using
|
||||||
`println!`.
|
`println!`.
|
||||||
* Routing has been optimized by caching routing metadata.
|
* Routing has been optimized by caching routing metadata.
|
||||||
* All macros, derives, and attributes are individually documented in
|
* [`Form`] and [`LenientForm`] can be publicly constructed.
|
||||||
[`rocket_codegen`].
|
* Console coloring uses default terminal colors instead of white.
|
||||||
|
* Console coloring is consistent across all messages.
|
||||||
|
* `i128` and `u128` now implement [`FromParam`], [`FromFormValue`].
|
||||||
|
* The `base64` dependency was updated to `0.10`.
|
||||||
* The `log` dependency was updated to `0.4`.
|
* The `log` dependency was updated to `0.4`.
|
||||||
* The `handlebars` dependency was updated to `1.0`.
|
* The `handlebars` dependency was updated to `1.0`.
|
||||||
* The `tera` dependency was updated to `0.11`.
|
* The `tera` dependency was updated to `0.11`.
|
||||||
|
@ -451,6 +395,9 @@ In addition to new features, Rocket saw the following improvements:
|
||||||
[`Config::root_relative()`]: https://api.rocket.rs/v0.4/rocket/struct.Config.html#method.root_relative
|
[`Config::root_relative()`]: https://api.rocket.rs/v0.4/rocket/struct.Config.html#method.root_relative
|
||||||
[`Config::tls_enabled()`]: https://api.rocket.rs/v0.4/rocket/struct.Config.html#method.tls_enabled
|
[`Config::tls_enabled()`]: https://api.rocket.rs/v0.4/rocket/struct.Config.html#method.tls_enabled
|
||||||
[`rocket_codegen`]: https://api.rocket.rs/v0.4/rocket_codegen/index.html
|
[`rocket_codegen`]: https://api.rocket.rs/v0.4/rocket_codegen/index.html
|
||||||
|
[`FromParam`]: https://api.rocket.rs/v0.4/rocket/request/trait.FromParam.html
|
||||||
|
[`FromFormValue`]: https://api.rocket.rs/v0.4/rocket/request/trait.FromFormValue.html
|
||||||
|
[`Data`]: https://api.rocket.rs/v0.4/rocket/struct.Data.html
|
||||||
|
|
||||||
## Infrastructure
|
## Infrastructure
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rocket_contrib_codegen"
|
name = "rocket_contrib_codegen"
|
||||||
version = "0.4.0-rc.2"
|
version = "0.4.0"
|
||||||
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
||||||
description = "Procedural macros for the Rocket contrib libraries."
|
description = "Procedural macros for the Rocket contrib libraries."
|
||||||
documentation = "https://api.rocket.rs/v0.4/rocket_contrib/"
|
documentation = "https://api.rocket.rs/v0.4/rocket_contrib/"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rocket_contrib"
|
name = "rocket_contrib"
|
||||||
version = "0.4.0-rc.2"
|
version = "0.4.0"
|
||||||
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
||||||
description = "Community contributed libraries for the Rocket web framework."
|
description = "Community contributed libraries for the Rocket web framework."
|
||||||
documentation = "https://api.rocket.rs/v0.4/rocket_contrib/"
|
documentation = "https://api.rocket.rs/v0.4/rocket_contrib/"
|
||||||
|
@ -37,8 +37,8 @@ mongodb_pool = ["databases", "mongodb", "r2d2-mongodb"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# Global dependencies.
|
# Global dependencies.
|
||||||
rocket_contrib_codegen = { version = "0.4.0-rc.2", path = "../codegen", optional = true }
|
rocket_contrib_codegen = { version = "0.4.0", path = "../codegen", optional = true }
|
||||||
rocket = { version = "0.4.0-rc.2", path = "../../core/lib/" }
|
rocket = { version = "0.4.0", path = "../../core/lib/" }
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
|
|
||||||
# Serialization and templating dependencies.
|
# Serialization and templating dependencies.
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
//!
|
//!
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! [dependencies.rocket_contrib]
|
//! [dependencies.rocket_contrib]
|
||||||
//! version = "0.4.0-rc.2"
|
//! version = "0.4.0"
|
||||||
//! default-features = false
|
//! default-features = false
|
||||||
//! features = ["diesel_sqlite_pool"]
|
//! features = ["diesel_sqlite_pool"]
|
||||||
//! ```
|
//! ```
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
//!
|
//!
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! [dependencies.rocket_contrib]
|
//! [dependencies.rocket_contrib]
|
||||||
//! version = "0.4.0-rc.2"
|
//! version = "0.4.0"
|
||||||
//! default-features = false
|
//! default-features = false
|
||||||
//! features = ["json"]
|
//! features = ["json"]
|
||||||
//! ```
|
//! ```
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
//!
|
//!
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! [dependencies.rocket_contrib]
|
//! [dependencies.rocket_contrib]
|
||||||
//! version = 0.4.0-rc.2
|
//! version = 0.4.0
|
||||||
//! default-features = false
|
//! default-features = false
|
||||||
//! features = ["handlebars_templates", "tera_templates"]
|
//! features = ["handlebars_templates", "tera_templates"]
|
||||||
//! ```
|
//! ```
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rocket_codegen"
|
name = "rocket_codegen"
|
||||||
version = "0.4.0-rc.2"
|
version = "0.4.0"
|
||||||
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
||||||
description = "Procedural macros for the Rocket web framework."
|
description = "Procedural macros for the Rocket web framework."
|
||||||
documentation = "https://api.rocket.rs/v0.4/rocket_codegen/"
|
documentation = "https://api.rocket.rs/v0.4/rocket_codegen/"
|
||||||
|
@ -17,7 +17,7 @@ proc-macro = true
|
||||||
[dependencies]
|
[dependencies]
|
||||||
indexmap = "1.0"
|
indexmap = "1.0"
|
||||||
quote = "0.6.1"
|
quote = "0.6.1"
|
||||||
rocket_http = { version = "0.4.0-rc.2", path = "../http/" }
|
rocket_http = { version = "0.4.0", path = "../http/" }
|
||||||
devise = "0.2"
|
devise = "0.2"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
|
@ -25,5 +25,5 @@ yansi = "0.5"
|
||||||
version_check = "0.1.3"
|
version_check = "0.1.3"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
rocket = { version = "0.4.0-rc.2", path = "../lib" }
|
rocket = { version = "0.4.0", path = "../lib" }
|
||||||
compiletest_rs = { version = "0.3", features = ["stable"] }
|
compiletest_rs = { version = "0.3", features = ["stable"] }
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
//!
|
//!
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! [dependencies]
|
//! [dependencies]
|
||||||
//! rocket = "0.4.0-rc.2"
|
//! rocket = "0.4.0"
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! And to import all macros, attributes, and derives via `#[macro_use]` in the
|
//! And to import all macros, attributes, and derives via `#[macro_use]` in the
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rocket_http"
|
name = "rocket_http"
|
||||||
version = "0.4.0-rc.2"
|
version = "0.4.0"
|
||||||
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
||||||
description = """
|
description = """
|
||||||
Types, traits, and parsers for HTTP requests, responses, and headers.
|
Types, traits, and parsers for HTTP requests, responses, and headers.
|
||||||
|
@ -36,4 +36,4 @@ features = ["server"]
|
||||||
optional = true
|
optional = true
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
rocket = { version = "0.4.0-rc.2", path = "../lib" }
|
rocket = { version = "0.4.0", path = "../lib" }
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rocket"
|
name = "rocket"
|
||||||
version = "0.4.0-rc.2"
|
version = "0.4.0"
|
||||||
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
authors = ["Sergio Benitez <sb@sergio.bz>"]
|
||||||
description = """
|
description = """
|
||||||
Web framework for nightly with a focus on ease-of-use, expressibility, and speed.
|
Web framework for nightly with a focus on ease-of-use, expressibility, and speed.
|
||||||
|
@ -23,8 +23,8 @@ tls = ["rocket_http/tls"]
|
||||||
private-cookies = ["rocket_http/private-cookies"]
|
private-cookies = ["rocket_http/private-cookies"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rocket_codegen = { version = "0.4.0-rc.2", path = "../codegen" }
|
rocket_codegen = { version = "0.4.0", path = "../codegen" }
|
||||||
rocket_http = { version = "0.4.0-rc.2", path = "../http" }
|
rocket_http = { version = "0.4.0", path = "../http" }
|
||||||
yansi = "0.5"
|
yansi = "0.5"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
toml = "0.4.7"
|
toml = "0.4.7"
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
//!
|
//!
|
||||||
//! ```toml
|
//! ```toml
|
||||||
//! [dependencies]
|
//! [dependencies]
|
||||||
//! rocket = "0.4.0-rc.2"
|
//! rocket = "0.4.0"
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! Then, add the following to the top of your `main.rs` file:
|
//! Then, add the following to the top of your `main.rs` file:
|
||||||
|
|
|
@ -24,7 +24,7 @@ function relative() {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Full and major version of Rocket
|
# Full and major version of Rocket
|
||||||
ROCKET_VERSION="0.4.0-rc.2"
|
ROCKET_VERSION="0.4.0"
|
||||||
ROCKET_MAJOR_VERSION="0.4"
|
ROCKET_MAJOR_VERSION="0.4"
|
||||||
CURRENT_RELEASE=true
|
CURRENT_RELEASE=true
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ For instance, the following set of commands runs the `hello_world` example:
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/SergioBenitez/Rocket
|
git clone https://github.com/SergioBenitez/Rocket
|
||||||
cd Rocket
|
cd Rocket
|
||||||
git checkout v0.4.0-rc.2
|
git checkout v0.4.0
|
||||||
cd examples/hello_world
|
cd examples/hello_world
|
||||||
cargo run
|
cargo run
|
||||||
```
|
```
|
||||||
|
|
|
@ -43,8 +43,8 @@ Then add the usual Rocket dependencies to the `Cargo.toml` file:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rocket = "0.4.0-rc.2"
|
rocket = "0.4.0"
|
||||||
rocket_codegen = "0.4.0-rc.2"
|
rocket_codegen = "0.4.0"
|
||||||
```
|
```
|
||||||
|
|
||||||
And finally, create a skeleton Rocket application to work off of in
|
And finally, create a skeleton Rocket application to work off of in
|
||||||
|
|
|
@ -50,7 +50,7 @@ Now, add Rocket as a dependency in your `Cargo.toml`:
|
||||||
|
|
||||||
```
|
```
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rocket = "0.4.0-rc.2"
|
rocket = "0.4.0"
|
||||||
```
|
```
|
||||||
|
|
||||||
Modify `src/main.rs` so that it contains the code for the Rocket `Hello, world!`
|
Modify `src/main.rs` so that it contains the code for the Rocket `Hello, world!`
|
||||||
|
|
|
@ -510,7 +510,7 @@ so that you depend on `rocket` as follows:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rocket = { version = "0.4.0-rc.2", default-features = false }
|
rocket = { version = "0.4.0", default-features = false }
|
||||||
```
|
```
|
||||||
|
|
||||||
[`ring`]: https://github.com/briansmith/ring
|
[`ring`]: https://github.com/briansmith/ring
|
||||||
|
|
|
@ -218,7 +218,7 @@ databases, you'd write in `Cargo.toml`:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[dependencies.rocket_contrib]
|
[dependencies.rocket_contrib]
|
||||||
version = "0.4.0-rc.2"
|
version = "0.4.0"
|
||||||
default-features = false
|
default-features = false
|
||||||
features = ["diesel_sqlite_pool"]
|
features = ["diesel_sqlite_pool"]
|
||||||
```
|
```
|
||||||
|
|
|
@ -279,7 +279,7 @@ dependency in your `Cargo.toml` file:
|
||||||
|
|
||||||
```
|
```
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rocket = { version = "0.4.0-rc.2", features = ["tls"] }
|
rocket = { version = "0.4.0", features = ["tls"] }
|
||||||
```
|
```
|
||||||
|
|
||||||
TLS is configured through the `tls` configuration parameter. The value of `tls`
|
TLS is configured through the `tls` configuration parameter. The value of `tls`
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
[release]
|
[release]
|
||||||
version = "0.4.0-rc.2"
|
version = "0.4.0"
|
||||||
date = "Nov 30, 2018"
|
date = "Dec 06, 2018"
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Top features: displayed in the header under the introductory text.
|
# Top features: displayed in the header under the introductory text.
|
||||||
|
|
|
@ -13,11 +13,11 @@ contributions for improved diagnostics and stability. As before, this is an
|
||||||
opportunity to discover issues with Rocket v0.4 and its documentation before its
|
opportunity to discover issues with Rocket v0.4 and its documentation before its
|
||||||
general release. We encourage all users to migrate their applications to the
|
general release. We encourage all users to migrate their applications to the
|
||||||
second release candidate and report any issues to the [GitHub issue tracker].
|
second release candidate and report any issues to the [GitHub issue tracker].
|
||||||
To update to `v0.4.0-rc.2`, manually update `rocket` in your `Cargo.toml` file:
|
To update to `v0.4.0`, manually update `rocket` in your `Cargo.toml` file:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rocket = "0.4.0-rc.2"
|
rocket = "0.4.0"
|
||||||
```
|
```
|
||||||
|
|
||||||
Barring any major issues, of which none are expected, the general release of
|
Barring any major issues, of which none are expected, the general release of
|
||||||
|
|
Loading…
Reference in New Issue