New version: 0.4.0.

This commit is contained in:
Sergio Benitez 2018-12-06 09:19:11 -08:00
parent 7fb6ba9be5
commit a4dcb0cf4c
20 changed files with 114 additions and 167 deletions

View File

@ -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

View File

@ -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/"

View File

@ -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.

View File

@ -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"]
//! ``` //! ```

View File

@ -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"]
//! ``` //! ```

View File

@ -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"]
//! ``` //! ```

View File

@ -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"] }

View File

@ -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

View File

@ -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" }

View File

@ -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"

View File

@ -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:

View 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

View File

@ -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
``` ```

View File

@ -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

View File

@ -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!`

View File

@ -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

View File

@ -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"]
``` ```

View File

@ -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`

View File

@ -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.

View File

@ -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