Rocket

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit a4dcb0cf4cfd28671bbc8f101a99dfa1a74668b9
parent 7fb6ba9be5dc2c3f032b5d1006d25587bb1543c7
Author: Sergio Benitez <sb@sergio.bz>
Date:   Thu,  6 Dec 2018 09:19:11 -0800

New version: 0.4.0.

Diffstat:
MCHANGELOG.md | 223++++++++++++++++++++++++++++++-------------------------------------------------
Mcontrib/codegen/Cargo.toml | 2+-
Mcontrib/lib/Cargo.toml | 6+++---
Mcontrib/lib/src/databases.rs | 2+-
Mcontrib/lib/src/lib.rs | 2+-
Mcontrib/lib/src/templates/mod.rs | 2+-
Mcore/codegen/Cargo.toml | 6+++---
Mcore/codegen/src/lib.rs | 2+-
Mcore/http/Cargo.toml | 4++--
Mcore/lib/Cargo.toml | 6+++---
Mcore/lib/src/lib.rs | 2+-
Mscripts/config.sh | 2+-
Msite/guide/1-quickstart.md | 2+-
Msite/guide/10-pastebin.md | 4++--
Msite/guide/2-getting-started.md | 2+-
Msite/guide/4-requests.md | 2+-
Msite/guide/6-state.md | 2+-
Msite/guide/9-configuration.md | 2+-
Msite/index.toml | 4++--
Msite/news/2018-11-30-version-0.4-rc-2.md | 4++--
20 files changed, 114 insertions(+), 167 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md @@ -1,84 +1,4 @@ -# Version 0.4.0-rc.2 (Nov 30, 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) +# Version 0.4.0 (Dec 06, 2018) ## New Features @@ -92,6 +12,8 @@ This release includes the following new features: * Introduced custom stateful handlers via [`Handler`]. * Introduced [transforming] data guards via [`FromData::transform()`]. * 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 `Responder`]. * 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 strings. * 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 [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 @@ -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 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.** Change instances of `Json(json!(..))` to `json!` and change the 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.** 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.** 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 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`].** Ensure matches on `LaunchErrorKind` include or ignore the `Bind` variant. @@ -238,29 +204,10 @@ applications when applicable. 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.** 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: TryInto<Uri<'static>>`.** @@ -277,11 +224,6 @@ applications when applicable. 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 [`JsonError`].** @@ -293,29 +235,13 @@ applications when applicable. Change _implementations_, not uses, of `FromData` to `FromDataSimple`. 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`].** 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` - * `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` + Destruct using `LaunchErrorKind::Collision(..)` to ignore the vector. * **[`Request::get_param()`] and [`Request::get_segments()`] are indexed by _segment_, not dynamic parameter.** @@ -339,8 +265,18 @@ applications when applicable. `status::NoContent` with `Status::NoContent`. Replace `status::Reset` with `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`.** + 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.** * **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 [`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 +[`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 @@ -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 week by default. * 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`. * Response bodies are reliably stripped on `HEAD` requests. * 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 (`image/tiff`), AAC (`audio/aac`), Calendar (`text/calendar`), MPEG (`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`), `.aac` (`AAC`), `.ics` (`Calendar`), `.bin` (`Binary`), `.mpg` (`MPEG`), `.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 `println!`. * Routing has been optimized by caching routing metadata. - * All macros, derives, and attributes are individually documented in - [`rocket_codegen`]. + * [`Form`] and [`LenientForm`] can be publicly constructed. + * 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 `handlebars` dependency was updated to `1.0`. * 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::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 +[`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 diff --git a/contrib/codegen/Cargo.toml b/contrib/codegen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rocket_contrib_codegen" -version = "0.4.0-rc.2" +version = "0.4.0" authors = ["Sergio Benitez <sb@sergio.bz>"] description = "Procedural macros for the Rocket contrib libraries." documentation = "https://api.rocket.rs/v0.4/rocket_contrib/" diff --git a/contrib/lib/Cargo.toml b/contrib/lib/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rocket_contrib" -version = "0.4.0-rc.2" +version = "0.4.0" authors = ["Sergio Benitez <sb@sergio.bz>"] description = "Community contributed libraries for the Rocket web framework." documentation = "https://api.rocket.rs/v0.4/rocket_contrib/" @@ -37,8 +37,8 @@ mongodb_pool = ["databases", "mongodb", "r2d2-mongodb"] [dependencies] # Global dependencies. -rocket_contrib_codegen = { version = "0.4.0-rc.2", path = "../codegen", optional = true } -rocket = { version = "0.4.0-rc.2", path = "../../core/lib/" } +rocket_contrib_codegen = { version = "0.4.0", path = "../codegen", optional = true } +rocket = { version = "0.4.0", path = "../../core/lib/" } log = "0.4" # Serialization and templating dependencies. diff --git a/contrib/lib/src/databases.rs b/contrib/lib/src/databases.rs @@ -32,7 +32,7 @@ //! //! ```toml //! [dependencies.rocket_contrib] -//! version = "0.4.0-rc.2" +//! version = "0.4.0" //! default-features = false //! features = ["diesel_sqlite_pool"] //! ``` diff --git a/contrib/lib/src/lib.rs b/contrib/lib/src/lib.rs @@ -33,7 +33,7 @@ //! //! ```toml //! [dependencies.rocket_contrib] -//! version = "0.4.0-rc.2" +//! version = "0.4.0" //! default-features = false //! features = ["json"] //! ``` diff --git a/contrib/lib/src/templates/mod.rs b/contrib/lib/src/templates/mod.rs @@ -9,7 +9,7 @@ //! //! ```toml //! [dependencies.rocket_contrib] -//! version = 0.4.0-rc.2 +//! version = 0.4.0 //! default-features = false //! features = ["handlebars_templates", "tera_templates"] //! ``` diff --git a/core/codegen/Cargo.toml b/core/codegen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rocket_codegen" -version = "0.4.0-rc.2" +version = "0.4.0" authors = ["Sergio Benitez <sb@sergio.bz>"] description = "Procedural macros for the Rocket web framework." documentation = "https://api.rocket.rs/v0.4/rocket_codegen/" @@ -17,7 +17,7 @@ proc-macro = true [dependencies] indexmap = "1.0" 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" [build-dependencies] @@ -25,5 +25,5 @@ yansi = "0.5" version_check = "0.1.3" [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"] } diff --git a/core/codegen/src/lib.rs b/core/codegen/src/lib.rs @@ -22,7 +22,7 @@ //! //! ```toml //! [dependencies] -//! rocket = "0.4.0-rc.2" +//! rocket = "0.4.0" //! ``` //! //! And to import all macros, attributes, and derives via `#[macro_use]` in the diff --git a/core/http/Cargo.toml b/core/http/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rocket_http" -version = "0.4.0-rc.2" +version = "0.4.0" authors = ["Sergio Benitez <sb@sergio.bz>"] description = """ Types, traits, and parsers for HTTP requests, responses, and headers. @@ -36,4 +36,4 @@ features = ["server"] optional = true [dev-dependencies] -rocket = { version = "0.4.0-rc.2", path = "../lib" } +rocket = { version = "0.4.0", path = "../lib" } diff --git a/core/lib/Cargo.toml b/core/lib/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rocket" -version = "0.4.0-rc.2" +version = "0.4.0" authors = ["Sergio Benitez <sb@sergio.bz>"] description = """ 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"] [dependencies] -rocket_codegen = { version = "0.4.0-rc.2", path = "../codegen" } -rocket_http = { version = "0.4.0-rc.2", path = "../http" } +rocket_codegen = { version = "0.4.0", path = "../codegen" } +rocket_http = { version = "0.4.0", path = "../http" } yansi = "0.5" log = "0.4" toml = "0.4.7" diff --git a/core/lib/src/lib.rs b/core/lib/src/lib.rs @@ -47,7 +47,7 @@ //! //! ```toml //! [dependencies] -//! rocket = "0.4.0-rc.2" +//! rocket = "0.4.0" //! ``` //! //! Then, add the following to the top of your `main.rs` file: diff --git a/scripts/config.sh b/scripts/config.sh @@ -24,7 +24,7 @@ function relative() { } # Full and major version of Rocket -ROCKET_VERSION="0.4.0-rc.2" +ROCKET_VERSION="0.4.0" ROCKET_MAJOR_VERSION="0.4" CURRENT_RELEASE=true diff --git a/site/guide/1-quickstart.md b/site/guide/1-quickstart.md @@ -15,7 +15,7 @@ For instance, the following set of commands runs the `hello_world` example: ```sh git clone https://github.com/SergioBenitez/Rocket cd Rocket -git checkout v0.4.0-rc.2 +git checkout v0.4.0 cd examples/hello_world cargo run ``` diff --git a/site/guide/10-pastebin.md b/site/guide/10-pastebin.md @@ -43,8 +43,8 @@ Then add the usual Rocket dependencies to the `Cargo.toml` file: ```toml [dependencies] -rocket = "0.4.0-rc.2" -rocket_codegen = "0.4.0-rc.2" +rocket = "0.4.0" +rocket_codegen = "0.4.0" ``` And finally, create a skeleton Rocket application to work off of in diff --git a/site/guide/2-getting-started.md b/site/guide/2-getting-started.md @@ -50,7 +50,7 @@ Now, add Rocket as a dependency in your `Cargo.toml`: ``` [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!` diff --git a/site/guide/4-requests.md b/site/guide/4-requests.md @@ -510,7 +510,7 @@ so that you depend on `rocket` as follows: ```toml [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 diff --git a/site/guide/6-state.md b/site/guide/6-state.md @@ -218,7 +218,7 @@ databases, you'd write in `Cargo.toml`: ```toml [dependencies.rocket_contrib] -version = "0.4.0-rc.2" +version = "0.4.0" default-features = false features = ["diesel_sqlite_pool"] ``` diff --git a/site/guide/9-configuration.md b/site/guide/9-configuration.md @@ -279,7 +279,7 @@ dependency in your `Cargo.toml` file: ``` [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` diff --git a/site/index.toml b/site/index.toml @@ -3,8 +3,8 @@ ############################################################################### [release] -version = "0.4.0-rc.2" -date = "Nov 30, 2018" +version = "0.4.0" +date = "Dec 06, 2018" ############################################################################### # Top features: displayed in the header under the introductory text. diff --git a/site/news/2018-11-30-version-0.4-rc-2.md b/site/news/2018-11-30-version-0.4-rc-2.md @@ -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 general release. We encourage all users to migrate their applications to the 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 [dependencies] -rocket = "0.4.0-rc.2" +rocket = "0.4.0" ``` Barring any major issues, of which none are expected, the general release of