Skip to content

Add announcement post for 1.16 #153

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 16, 2017
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 10 additions & 15 deletions _posts/2017-03-16-Rust-1.16.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,25 +41,25 @@ time: 0.049; rss: 34MB expansion
<snip>
```

There's a lot of them. However, you can think of this process in two big steps: first, `rustc` does
all of its safety checks, makes sure your syntax is correct, all that stuff. Second, once it's satisfied
that everything is in order, it produces the actual binary code that you end up executing.
There's a lot of them. However, you can think of this process in two big steps: first, `rustc` does
all of its safety checks, makes sure your syntax is correct, all that stuff. Second, once it's satisfied
that everything is in order, it produces the actual binary code that you end up executing.

It turns out that that second step takes a lot of time. And most of the time, it's not neccesary. That is,
when you're working on some Rust code, many developers will get into a workflow like this:
It turns out that that second step takes a lot of time. And most of the time, it's not neccesary. That is,
when you're working on some Rust code, many developers will get into a workflow like this:

1. Write some code.
2. Run `cargo build` to make sure it compiles.
3. Repeat 1-2 as needed.
4. Run `cargo test` to make sure your tests pass.
5. GOTO 1.

In step two, you never actually run your code. You're looking for feedback from the compiler, not to
actually run the binary. `cargo check` supports exactly this use-case: it runs all of the compiler's
checks, but doesn't produce the final binary.
In step two, you never actually run your code. You're looking for feedback from the compiler, not to
actually run the binary. `cargo check` supports exactly this use-case: it runs all of the compiler's
checks, but doesn't produce the final binary.

So how much speedup do you actually get? Like most performance related questions, the answer is "it
depends." Here are some very un-scientific benchmarks:
So how much speedup do you actually get? Like most performance related questions, the answer is "it
depends." Here are some very un-scientific benchmarks:

| | initial build | initial check | speedup | secondary build | secondary check | speedup |
|--------|---------------|---------------|---------|-----------------|-----------------|---------|
Expand Down Expand Up @@ -201,11 +201,6 @@ results in a significant improvement in these sorts of diagnostics.
[This now happens nearly everywhere]: https://github.com/rust-lang/rust/pull/38927
[some other related improvements]: https://github.com/rust-lang/rust/pull/38154

Finally, `Self` can now appear [in impl headers] and [in struct expressions].

[in impl headers]: https://github.com/rust-lang/rust/pull/38920
[in struct expressions]: https://github.com/rust-lang/rust/pull/39282

See the [detailed release notes][notes] for more.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@steveklabnik
My comment was only about impl headers, Self in struct expressions (Self { a: 10 }) is fully supported in 1.16


#### Library stabilizations
Expand Down