diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e35dc6a..6867c511 100644 --- 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` - and/or `UriDisplay` 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`.** - - * **`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 `` is now ``. 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` or `Form>`. `Form` + and `LenientForm` now implement `Deref`, 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>`.** @@ -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` or `Form>`. `Form` - and `LenientForm` now implement `Deref`, allowing for calls - to `.get()` to be removed. - - * **Query handling syntax has been completely revamped.** - - A query parameter of `` is now ``. 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`.** + + * **`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 index 9dfb1247..664dd34d 100644 --- 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 "] 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 index d8124977..20ed8114 100644 --- 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 "] 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 index 277ed758..49798b98 100644 --- 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 index 51b3006d..ef17a8e3 100644 --- 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 index f77f1538..93ac09ed 100644 --- 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 index 63bc0e06..46786398 100644 --- 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 "] 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 index 2df367b7..8265925d 100644 --- 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 index 39c0a793..7b254bf1 100644 --- 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 "] 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 index 7d407a96..19b9337f 100644 --- 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 "] 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 index 429c26e0..e0c9f6df 100644 --- 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 index 27beddfe..efee33b1 100755 --- 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 index aa6bf83d..d464f213 100644 --- 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 index 2985fc01..e405622d 100644 --- 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 index 14a21f3f..1df33ed0 100644 --- 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 index 26875809..41c8e158 100644 --- 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 index da3df46f..3e5110e1 100644 --- 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 index 43b1f78b..937f0b55 100644 --- 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 index 32fcd918..e2427c12 100644 --- 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 index a44ee082..f5bea22c 100644 --- 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