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

Rust 1.20.0 release post #192

Merged
merged 2 commits into from
Aug 31, 2017
Merged

Rust 1.20.0 release post #192

merged 2 commits into from
Aug 31, 2017

Conversation

steveklabnik
Copy link
Member

r? @rust-lang/core

I modified our slogan slightly to see how it feels; we can change it back if it's not great.

}
```

These are called "associated functions" becuase they are functions that are
Copy link
Contributor

Choose a reason for hiding this comment

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

because

Back in [Rust 1.14], we announced preliminary support for asm.js and wasm
with the help of Emscripten. Since then, LLVM has added its own support, and
so, we have [added native wasm support to Rust]! It's using the
`wasm32-experimental-emscripten` target.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think that's just what we decided to call it, not what the LLVM target is actually called.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, that was my intention. Any idea of how to word it better?

Copy link
Contributor

Choose a reason for hiding this comment

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

This new target is named wasm32-experimental-emscripten.

Copy link
Member

Choose a reason for hiding this comment

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

When mentioning this I think we'd just want to set expectations by saying that it's an experimental target and doesn't even have nightly support right now. Furthermore this isn't even using our LLVM's backend support for WebAssembly but rather we still ship IR to emscripten (AFAIK) and then emscripten uses LLVM's WebAssembly backend.

All in all this may not be worth calling out :(

#### Library stabilizations

There's nothing *super* exciting in libraries this release, just a number of solid
improvements and continued stabilizing of APIs.
Copy link
Contributor

@CryZe CryZe Aug 29, 2017

Choose a reason for hiding this comment

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

I think this section should mention unstable sort, which is often faster than stable sort and actually works with just libcore too, unlike slice::sort.

Copy link
Member Author

Choose a reason for hiding this comment

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

That wasn't in the release notes, can you link me to a PR?

Copy link
Contributor

@CryZe CryZe Aug 29, 2017

Choose a reason for hiding this comment

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

It is in the release notes:


The following APIs were also stabilized:
...

Copy link
Member Author

Choose a reason for hiding this comment

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

ah sorry, i see now. yeah, sounds good!

@nrc
Copy link
Member

nrc commented Aug 29, 2017

We should mention this minor breaking change- rust-lang/rust#43782 (also backported to beta, so it will be in 1.20 stable):

Doc test bug fix: when using include! and include_str! in documentation examples, the semantics of the path has changed for doc tests. The path is now relative to the current file (like using include! in regular code), it used to be relative to the directory outside the crate root.

Cargo has some nice upgrades this release. First of all, your crates.io
authentication token used to be stored in `~/.cargo/config`. As a configuration
file, this would often be stored with `644` permissions, that is, world-readable.
But it has a secret token in it. We've [moved the token] `~/.cargo/credentials`,
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 this should say "We've [moved the token] to ~/.cargo/credentials"... it's not quite the pittsburghese dropping of "to be" that i might let you get away with ;)

file, this would often be stored with `644` permissions, that is, world-readable.
But it has a secret token in it. We've [moved the token] `~/.cargo/credentials`,
so that it can be permissioned `600`, and hidden from other users on your system.
You'll get a warning if it's still in your `~/.cargo/config`.
Copy link
Member

Choose a reason for hiding this comment

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

This is not true, I just tried with rustc 1.21.0-beta.1/cargo 0.22.0-beta-- I had a token in both credentials and config and it used the ones in credentials but didn't print any warnings. There was some talk of warnings, but decided to not add them until this was stable, and I don't think that was ever implemented...?

Copy link
Member Author

Choose a reason for hiding this comment

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

oops; I must have read the wrong summary comment :(

Copy link
Member

Choose a reason for hiding this comment

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

Yeah once we make this stable release we'll start issuing warnings


### What's in 1.20.0 stable

In Rust, you can define traits, structs, and enums that have "associated functions":
Copy link
Member

Choose a reason for hiding this comment

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

Maybe "you can already define"? That way it's clear this isn't a new feature.

Copy link
Contributor

Choose a reason for hiding this comment

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

Oh yeah, that confused me as well.

We now [skip the main thread's manual stack guard on
Linux](https://github.com/rust-lang/rust/pull/43072), due to mitigations in
the kernel against [Stack
Clash](https://access.redhat.com/security/vulnerabilities/stackguard).
Copy link
Member

Choose a reason for hiding this comment

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

Perhaps more importantly than this we may want to mention the support for stack probes here, basically saying that you're guaranteed a segfault on stack overflow on x86/x86_64, rather than having the possibility of jumping over the guard page. (again still motivated by the stack clash stuff)

Copy link
Member Author

Choose a reason for hiding this comment

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

i wasn't sure if that was in this release or not since it didn't make the notes

@aturon
Copy link
Member

aturon commented Aug 30, 2017

LGTM modulo nits already posted.

}
```

much cleaner, and more versitile.
Copy link
Contributor

Choose a reason for hiding this comment

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

Typo: versatile

@steveklabnik
Copy link
Member Author

I believe I have addressed all review comments; please check it out before we :shipit: tomorrow!

@steveklabnik steveklabnik merged commit d42e013 into gh-pages Aug 31, 2017
@steveklabnik steveklabnik deleted the 1.20-announcement branch August 31, 2017 17:23
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.

8 participants