From d510061f731cb662362cc5947728207c1f68c9db Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Mon, 29 Oct 2018 08:55:34 -0400 Subject: [PATCH 1/3] initial draft of 'testing rust 2018' --- _posts/2018-10-29-help-test-rust-2018.md | 131 +++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 _posts/2018-10-29-help-test-rust-2018.md diff --git a/_posts/2018-10-29-help-test-rust-2018.md b/_posts/2018-10-29-help-test-rust-2018.md new file mode 100644 index 000000000..addbbc524 --- /dev/null +++ b/_posts/2018-10-29-help-test-rust-2018.md @@ -0,0 +1,131 @@ +--- +title: "Help test Rust 2018" +--- + +Back in July, we talked about ["Rust 2018"]. In short, we're adding a new +concept to Rust, "Editions." Editions are a way of showing larger progress +than our six-week release cycle, and will happen on a roughly three-year +cycle. Rust 1.0 was "Rust 2015," and Rust 1.31 will be "Rust 2018." + +We've been [testing Rust 2018 for a while already], and things are looking +pretty good! We have just under six weeks until Rust 1.31 ships, and so +we'd appreciate it if you could give the beta a try. + +There's two ways to try out Rust 2018: updating an existing project, and +starting a new one. For full details, please check out the [Edition Guide], +but the rest of this post is a quickstart to make it even easier. In +addition, we have some new lints we'd like you to try; they're described at +the very end of the post. + +If anything goes wrong, or is confusing, please [file an issue] and let us +know. We want to make sure this is an extra-awesome release! Thank you for +helping us make Rust even better. <3 + +["Rust 2018"]: https://blog.rust-lang.org/2018/07/27/what-is-rust-2018.html +[testing Rust 2018 for a while already]: https://internals.rust-lang.org/t/rust-2018-release-schedule-and-extended-beta/8076 +[Edition Guide]: https://rust-lang-nursery.github.io/edition-guide/ +[file an issue]: https://github.com/rust-lang/rust/issues/new + +## Setup: install Rust beta + +First things first, you'll need to install the beta release channel of Rust. +With Rustup, it's as easy as: + +```console +$ rustup install beta +``` + +To use this channel of Rust instead of your default, you can append a `+beta` +to any `rustc` or cargo commands: + +```console +$ rustc +beta --version +$ cargo +beta build +``` + +This lets you stick to stable as the default, while using beta for your +experiments. + +## Start a new project + +To start a new project with Rust 2018: + +```console +$ cargo +beta new my-sample-project +``` + +Nothing changes! Well, something changed. Check out `Cargo.toml`: + +```toml +[package] +name = "my-sample-project" +version = "0.1.0" +authors = ["Your Name "] +edition = "2018" + +[dependencies] +``` + +That new `edition = "2018"` key/value pair means you're working with Rust 2018. +If it doesn't exist, it's the same as `edition = "2015"`, so all +existing projects keep working. + +## Convert an existing project + +You can also convert an existing project to Rust 2018. Remember, none of your +dependencies need to be updated for this to work; Rust 2018 and 2015 +interoperate seamlessly! + +The first step is to run `cargo fix`: + +```console +$ cargo fix --edition +``` + +This will check your code, and automatically fix any issues that it can. +`cargo fix` is still pretty new, and so it can't always fix your code +automatically. If `cargo fix` can't fix something, it will print the warning +that it cannot fix to the console. If you see one of these warnings, you'll +have to update your code manually. See the corresponding section of the +edition guide for help, and if you have problems, please seek help at the +user's forums. + +Keep running `cargo fix --edition` until you have no more warnings. + +Congrats! Your code is now valid in both Rust 2015 and Rust 2018! + +Once this is done, you can commit to Rust 2018 by updating +your `Cargo.toml`: + +```toml +[package] +name = "my-sample-project" +version = "0.1.0" +authors = ["Your Name "] +edition = "2018" + +[dependencies] +``` + +See that `edition = "2018"`? That's what opts you in to the new features. +Set it, `cargo +beta build`, and you should be good to go! + +## Writing idiomatic code + +We have some new lints that suggest using certain idioms in your Rust 2018 +code. We don't have them turned on by default yet. To see what your code would +look like, you can use `cargo fix`: + +```console +$ cargo +beta fix --edition-idioms +``` + +If things look great, or things look terrible, please let us know! We hope to make +these lints warn by default after gaining some experience with them and working +out the bugs. + +> The `--edition-idioms` flag applies only to the "current crate"; if you want +> to run it against a workspace is necessary to use a workaround with `RUSTFLAGS` +> in order to execute it in all the workspace members. +> +> $ RUSTFLAGS='-Wrust_2018_idioms' cargo fix --all From 16232b0fda6311d3b28b39e29866f1d74a85c06c Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Tue, 30 Oct 2018 09:42:58 -0400 Subject: [PATCH 2/3] do some review feedback --- _posts/2018-10-29-help-test-rust-2018.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/_posts/2018-10-29-help-test-rust-2018.md b/_posts/2018-10-29-help-test-rust-2018.md index addbbc524..8ccf3f38c 100644 --- a/_posts/2018-10-29-help-test-rust-2018.md +++ b/_posts/2018-10-29-help-test-rust-2018.md @@ -2,10 +2,13 @@ title: "Help test Rust 2018" --- -Back in July, we talked about ["Rust 2018"]. In short, we're adding a new -concept to Rust, "Editions." Editions are a way of showing larger progress -than our six-week release cycle, and will happen on a roughly three-year -cycle. Rust 1.0 was "Rust 2015," and Rust 1.31 will be "Rust 2018." +Back in July, we talked about ["Rust 2018"]. In short, we are launching a +cycle of long-term milestones called "Editions". Editions are a way to +capture the progress delivered incrementally by our ordinary six-week release +cycle -- and focus Rust libraries, tooling, and documentation cohesively +around it. Editions will be selected roughly every three years: Rust 1.0 was +"Rust 2015" and Rust 1.31 will be "Rust 2018". Each edition has a theme; +Rust 2015's was "stability", and Rust 2018's is "productivity." We've been [testing Rust 2018 for a while already], and things are looking pretty good! We have just under six weeks until Rust 1.31 ships, and so @@ -29,7 +32,7 @@ helping us make Rust even better. <3 ## Setup: install Rust beta First things first, you'll need to install the beta release channel of Rust. -With Rustup, it's as easy as: +With [Rustup], it's as easy as: ```console $ rustup install beta @@ -46,6 +49,8 @@ $ cargo +beta build This lets you stick to stable as the default, while using beta for your experiments. +[Rustup]: https://www.rust-lang.org/en-US/install.html + ## Start a new project To start a new project with Rust 2018: From bf3ec50d0db26c46cd6f1e03da8c22bc0d52ebd7 Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Tue, 30 Oct 2018 10:12:59 -0400 Subject: [PATCH 3/3] remove idiom lints --- _posts/2018-10-29-help-test-rust-2018.md | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/_posts/2018-10-29-help-test-rust-2018.md b/_posts/2018-10-29-help-test-rust-2018.md index 8ccf3f38c..a36ca4d6c 100644 --- a/_posts/2018-10-29-help-test-rust-2018.md +++ b/_posts/2018-10-29-help-test-rust-2018.md @@ -113,24 +113,4 @@ edition = "2018" ``` See that `edition = "2018"`? That's what opts you in to the new features. -Set it, `cargo +beta build`, and you should be good to go! - -## Writing idiomatic code - -We have some new lints that suggest using certain idioms in your Rust 2018 -code. We don't have them turned on by default yet. To see what your code would -look like, you can use `cargo fix`: - -```console -$ cargo +beta fix --edition-idioms -``` - -If things look great, or things look terrible, please let us know! We hope to make -these lints warn by default after gaining some experience with them and working -out the bugs. - -> The `--edition-idioms` flag applies only to the "current crate"; if you want -> to run it against a workspace is necessary to use a workaround with `RUSTFLAGS` -> in order to execute it in all the workspace members. -> -> $ RUSTFLAGS='-Wrust_2018_idioms' cargo fix --all +Set it, `cargo +beta build`, and you should be good to go! \ No newline at end of file