Skip to content
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

1.18.0 announcement #173

Merged
merged 3 commits into from
Jun 8, 2017
Merged

1.18.0 announcement #173

merged 3 commits into from
Jun 8, 2017

Conversation

steveklabnik
Copy link
Member

r? @rust-lang/core

As part of the transition plan, [a new flag has been added to
`rustdoc`](https://github.com/rust-lang/rust/pull/40338), `--enable-commonmark`.
This will use the new parser instead of the old one. Please give it a try! There's
no scenario we know of where tweaking your markdown gets identical results on both
Copy link
Member

Choose a reason for hiding this comment

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

It seems like this is missing a negation I think? Presumably it's possible to write some text that renders the same with CommonMark and Hoedown.


- [`Child::try_wait`] is a non-blocking form of `Child::wait`.
- [`HashMap::retain`] and [`HashSet::retain`] bring the `retain` API `Vec<T>` has to these two hash data structures.
- [`PeekMut::pop`] lets you pop stuff off of a `BinaryHeap<T>`
Copy link
Member

Choose a reason for hiding this comment

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

You could pop stuff off of BinaryHeap already - this lets you pop the top element off of the heap after you've already looked at/messed with it without needing to reorder the heap twice.

> ./foo
4
> rustc foo.rs -Z fuel=foo=0
optimization-fuel-exhausted: Reorder fields of "Suboptimal"
Copy link
Member

Choose a reason for hiding this comment

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

Will this work on stable? It seems like we don't really want to publicize -Z options... though there's probably no alternative right now.

Copy link
Member

Choose a reason for hiding this comment

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

I think -Z will work on stable 1.18, but stop working on stable 1.19, when this PR gets into stable.

You can also specify a path, like this:

```rust
pub(a::b::c) foo;
Copy link
Member

Choose a reason for hiding this comment

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

The syntax is pub(in a::b::c). That was a last minute change before stabilization. pub(crate) is fine.


### What's in 1.18.0 stable

Rust 1.18.0 is similar to many of our releases: no big bombshells, just a number
Copy link
Member

Choose a reason for hiding this comment

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

nit, and this is totally a personal pet peeve of mine that you can feel free to ignore, can we not use war-related phrases? suggestion: "no big surprises"?

Copy link
Member

Choose a reason for hiding this comment

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

I would just drop this altogether. On the train system, this is the default! Incremental improvement over time. Making a note of it like this feels unnecessarily defensive.

of improvements, cleanups, and new features.

One of the largest changes is a long time coming: core team members Carol
Nichols and Steve Klabnik have been writing a new edition of "The Rust
Copy link
Member

Choose a reason for hiding this comment

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

❤️

contributors in total. This release [includes the first draft of the second
edition in our online documentation](https://doc.rust-lang.org/stable/book/).
19 out of 20 chapters have a draft; the draft of chapter 20 will land in the
Rust 1.19. When the book is done, a print version will be made available through
Copy link
Member

Choose a reason for hiding this comment

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

s/in the Rust 1.19./in Rust 1.19./ or /in the Rust 1.19 release./

[No Starch Press](https://www.nostarch.com/Rust), if you'd like a paper copy.
While first drafts of the chapters are available, we're still working with the
editors at No Starch to improve the text, so there's more to do, but we wanted
to start getting a wider audience now. The new edition is a complete re-write
Copy link
Member

Choose a reason for hiding this comment

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

The "While first drafts" sentence feels kinda long, maybe split it in two? Or shorten to just "We're still working with the editors at No Starch to improve the text, but we wanted to start getting a wider audience now"?

Copy link
Member

Choose a reason for hiding this comment

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

"The new edition" -> I'd start a new paragraph with that sentence.

from the ground up, using the last two years of knowledge we've gained from
teaching people Rust. You'll find brand-new explanations for a lot of Rust's
core concepts, new projects to build, and all kinds of other good stuff. Please
check it out and let us know what you think!
Copy link
Member

Choose a reason for hiding this comment

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

Should we include a link to the rust-lang/book repo again here? Or the new issue form in that repo?

We've been planning this for a while; previous versions of Rust included this
optimization on the nightly channel, but some people wrote unsafe code that
assumed the exact details of the representation. We rolled it back while we fixed
all instances of this that we know about, but if you find some code breaks due to
Copy link
Member

Choose a reason for hiding this comment

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

What kind of code would break because of this? What does breaking look like? How do I fix it? This is a little scary to me without it, even though I probably don't have this problem ;)

Is there someplace we can link that would go into more details on the potential breakage?

Copy link
Member

Choose a reason for hiding this comment

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

just changed this to "let us know so we can help you fix it" esp since aturon recommended removing all the fuel stuff

> rustc foo.rs
> ./foo
4
> rustc foo.rs -Z fuel=foo=0
Copy link
Member

Choose a reason for hiding this comment

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

Is this an unstable flag that isn't supposed to be used on stable? (I might be confused about this)

Is foo here the module path?

Are there docs/PR/RFC/issue on this flag we can link to here?

Copy link
Member

Choose a reason for hiding this comment

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

now moot

As part of the transition plan, [a new flag has been added to
`rustdoc`](https://github.com/rust-lang/rust/pull/40338), `--enable-commonmark`.
This will use the new parser instead of the old one. Please give it a try! There's
no scenario we know of where tweaking your markdown gets identical results on both
Copy link
Member

Choose a reason for hiding this comment

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

. . . . is this sentence supposed to say "There's no scenario we know of where tweaking your markdown doesn't get identical results on both parsers...?" If not, I'm confused about why we're stating this in this way? Does "tweaking your markdown" mean I change the markdown text I've written, or does it mean "tweaking your markdown parser"?

#### Cargo features

Cargo has [added support](https://github.com/rust-lang/cargo/pull/3842) for the Pijul VCS,
which is written in Rust. `cargo new my-awesome-project --vcs=pijul` will get you going!
Copy link
Member

Choose a reason for hiding this comment

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

ooooooh coool!!!!!

Cargo has [added support](https://github.com/rust-lang/cargo/pull/3842) for the Pijul VCS,
which is written in Rust. `cargo new my-awesome-project --vcs=pijul` will get you going!

To suppliment the `--all` flag, Cargo now has [several new
Copy link
Member

Choose a reason for hiding this comment

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

s/suppliment/supplement/ ❤️

Copy link
Member

@aturon aturon left a comment

Choose a reason for hiding this comment

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

Left a bunch of nits. This is a great release!


### What's in 1.18.0 stable

Rust 1.18.0 is similar to many of our releases: no big bombshells, just a number
Copy link
Member

Choose a reason for hiding this comment

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

I would just drop this altogether. On the train system, this is the default! Incremental improvement over time. Making a note of it like this feels unnecessarily defensive.

[No Starch Press](https://www.nostarch.com/Rust), if you'd like a paper copy.
While first drafts of the chapters are available, we're still working with the
editors at No Starch to improve the text, so there's more to do, but we wanted
to start getting a wider audience now. The new edition is a complete re-write
Copy link
Member

Choose a reason for hiding this comment

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

"The new edition" -> I'd start a new paragraph with that sentence.

is made public. Using the `crate` keyword like the example above means that
`bar` would be public to the entire crate, but not outside of it. This makes it
easier to declare APIs that are "public to your crate", but not exposed to your
users. This was *possible* with the current module system, but often very awkward.
Copy link
Member

Choose a reason for hiding this comment

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

s/current/existing/

This struct is properly aligned; the `u16` lies on a two byte boundary, and so does
the entire struct. No padding is needed. This gives us `1 + 1 + 2 = 4 bytes`.

When designing Rust, stuff like this is why we left the details here undefined.
Copy link
Member

Choose a reason for hiding this comment

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

Little too much "stuff" "here" "thing" :-)

into `Optimal` automatically. And if you check the sizes of `Suboptimal` and
`Optimal` on Rust 1.18.0, you'll see that they both have a size of four bytes.

We've been planning this for a while; previous versions of Rust included this
Copy link
Member

Choose a reason for hiding this comment

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

s/this/this change/

> consumed. When the optimizer runs out of fuel, further rewrites are
> suppressed.

Currently, this is the only optimization that uses the "fuel" concept. By
Copy link
Member

Choose a reason for hiding this comment

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

We should nix the stuff about the fuel flag.

parsers.

Finally, compiling `rustc` itself is now [15%-20% faster](https://github.com/rust-lang/rust/pull/41469). Each commit message in this PR
goes over the details, but the short of it is that there were some inefficient
Copy link
Member

Choose a reason for hiding this comment

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

The "but the short of it" doesn't add anything and should be dropped.

@steveklabnik steveklabnik merged commit f2e01c7 into gh-pages Jun 8, 2017
@steveklabnik steveklabnik deleted the 1.18-announcement branch October 12, 2017 22:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants