New version: 0.4.0-rc.2.

This commit is contained in:
Sergio Benitez 2018-11-30 20:21:51 -08:00
parent b405b181a3
commit 90a6749313
21 changed files with 175 additions and 27 deletions

View File

@ -1,3 +1,83 @@
# 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-rc.1 (Oct 31, 2018)
## New Features ## New Features

View File

@ -1,6 +1,6 @@
[package] [package]
name = "rocket_contrib_codegen" name = "rocket_contrib_codegen"
version = "0.4.0-rc.1" version = "0.4.0-rc.2"
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.1" version = "0.4.0-rc.2"
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/"
@ -36,8 +36,8 @@ redis_pool = ["databases", "redis", "r2d2_redis"]
[dependencies] [dependencies]
# Global dependencies. # Global dependencies.
rocket_contrib_codegen = { version = "0.4.0-rc.1", path = "../codegen", optional = true } rocket_contrib_codegen = { version = "0.4.0-rc.2", path = "../codegen", optional = true }
rocket = { version = "0.4.0-rc.1", path = "../../core/lib/" } rocket = { version = "0.4.0-rc.2", 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.1" //! version = "0.4.0-rc.2"
//! 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.1" //! version = "0.4.0-rc.2"
//! 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.1 //! version = 0.4.0-rc.2
//! 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.1" version = "0.4.0-rc.2"
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.1", path = "../http/" } rocket_http = { version = "0.4.0-rc.2", 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.1", path = "../lib" } rocket = { version = "0.4.0-rc.2", 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.1" //! rocket = "0.4.0-rc.2"
//! ``` //! ```
//! //!
//! 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.1" version = "0.4.0-rc.2"
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.1", path = "../lib" } rocket = { version = "0.4.0-rc.2", path = "../lib" }

View File

@ -1,6 +1,6 @@
[package] [package]
name = "rocket" name = "rocket"
version = "0.4.0-rc.1" version = "0.4.0-rc.2"
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.1", path = "../codegen" } rocket_codegen = { version = "0.4.0-rc.2", path = "../codegen" }
rocket_http = { version = "0.4.0-rc.1", path = "../http" } rocket_http = { version = "0.4.0-rc.2", 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.1" //! rocket = "0.4.0-rc.2"
//! ``` //! ```
//! //!
//! 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.1" ROCKET_VERSION="0.4.0-rc.2"
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.1 git checkout v0.4.0-rc.2
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.1" rocket = "0.4.0-rc.2"
rocket_codegen = "0.4.0-rc.1" rocket_codegen = "0.4.0-rc.2"
``` ```
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.1" rocket = "0.4.0-rc.2"
``` ```
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.1", default-features = false } rocket = { version = "0.4.0-rc.2", default-features = false }
``` ```
[`ring`]: https://github.com/briansmith/ring [`ring`]: https://github.com/briansmith/ring

View File

@ -215,7 +215,7 @@ databases, you'd write in `Cargo.toml`:
```toml ```toml
[dependencies.rocket_contrib] [dependencies.rocket_contrib]
version = "0.4.0-rc.1" version = "0.4.0-rc.2"
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.1", features = ["tls"] } rocket = { version = "0.4.0-rc.2", 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.1" version = "0.4.0-rc.2"
date = "Oct 31, 2018" date = "Nov 30, 2018"
############################################################################### ###############################################################################
# Top features: displayed in the header under the introductory text. # Top features: displayed in the header under the introductory text.

View File

@ -0,0 +1,48 @@
# Rocket's 2nd v0.4 Release Candidate
<p class="metadata"><strong>
Posted by <a href="https://sergio.bz">Sergio Benitez</a> on November 30, 2018
</strong></p>
After a successful and productive initial v0.4 release candidate, I am happy to
announce that the second release candidate for Rocket v0.4 is now available.
This release candidate fixes issues identified during the first release
candidate, introduces further features, and leverages upstream `rustc`
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:
```toml
[dependencies]
rocket = "0.4.0-rc.2"
```
Barring any major issues, of which none are expected, the general release of
Rocket v0.4 is planned for Wednesday, December 5th, when we'll post a full news
article covering the biggest features and changes in Rocket v0.4. Until then,
the [CHANGELOG] contains every feature addition, change, and improvement since
v0.4.0-rc.1 and v0.3, as well as information on migrating your applications to
v0.4. All documentation, including the [guide] and [API docs], has been updated
in full for the second release candidate.
We're excited for your feedback, and we look forward to seeing you again on
Wednesday, December 5th for the general release!
[GitHub issue tracker]: https://github.com/SergioBenitez/Rocket/issues
[API docs]: https://api.rocket.rs/v0.4/rocket/
[guide]: ../../guide
[CHANGELOG]: https://github.com/SergioBenitez/Rocket/tree/v0.4/CHANGELOG.md#version-040-rc2-nov-30-2018
## About Rocket
Rocket is a web framework for Rust with a focus on ease of use, expressibility,
and speed. Rocket makes it simple to write fast web applications without
sacrificing flexibility or type safety. All with minimal code.
Not already using Rocket? Join the tens of thousands of users and hundreds of
companies happily using Rocket today! Rocket's extensive documentation makes it
easy. Get started now by [reading through the guide](../../guide) or learning
more from [the overview](../../overview).

View File

@ -1,3 +1,23 @@
[[articles]]
title = "Rocket's 2nd v0.4 Release Candidate"
slug = "2018-11-30-version-0.4-rc-2"
author = "Sergio Benitez"
author_url = "https://sergio.bz"
date = "November 30, 2018"
snippet = """
After a successful and productive initial v0.4 release candidate, I am happy to
announce that the second release candidate for Rocket v0.4 is now available.
This release candidate fixes issues identified during the first release
candidate, introduces further features, and leverages upstream `rustc`
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].
[GitHub issue tracker]: https://github.com/SergioBenitez/Rocket/issues
"""
[[articles]] [[articles]]
title = "Rocket v0.4 Release Candidate" title = "Rocket v0.4 Release Candidate"
slug = "2018-10-31-version-0.4-rc" slug = "2018-10-31-version-0.4-rc"