-
Notifications
You must be signed in to change notification settings - Fork 292
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.8 release announcement #82
Merged
steveklabnik
merged 2 commits into
rust-lang:gh-pages
from
steveklabnik:1.8-announcement
Apr 14, 2016
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,256 @@ | ||
--- | ||
layout: post | ||
title: "Announcing Rust 1.8" | ||
author: The Rust Core Team | ||
--- | ||
|
||
The Rust team is happy to announce the latest version of Rust, 1.8. Rust is a | ||
systems programming language focused on safety, speed, and concurrency. | ||
|
||
As always, you can [install Rust 1.8][install] from the appropriate page on our | ||
website, and check out the [detailed release notes for 1.8][notes] on GitHub. | ||
About 1400 patches were landed in this release. | ||
|
||
[install]: https://www.rust-lang.org/install.html | ||
[notes]: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-180-2016-04-14 | ||
|
||
### What's in 1.8 stable | ||
|
||
There are two new features in Rust 1.8, as well as good news for Windows users! | ||
Additionally, work is underway to replace our `make`-based build system with | ||
one based on Cargo. | ||
|
||
The first feature is that the various “operator equals” operators, such as `+=` | ||
and `-=`, are now overloadable via various traits. This change was accepted in | ||
[RFC 953], and looks like this: | ||
|
||
```rust | ||
use std::ops:: AddAssign; | ||
|
||
#[derive(Debug)] | ||
struct Count { | ||
value: i32, | ||
} | ||
|
||
impl AddAssign for Count { | ||
fn add_assign(&mut self, other: Count) { | ||
self.value += other.value; | ||
} | ||
} | ||
|
||
fn main() { | ||
let mut c1 = Count { value: 1 }; | ||
let c2 = Count { value: 5 }; | ||
|
||
c1 += c2; | ||
|
||
println!("{:?}", c1); | ||
} | ||
``` | ||
|
||
[RFC 953]: https://github.com/rust-lang/rfcs/blob/master/text/0953-op-assign.md | ||
|
||
This will print out `Count { value: 6 }`. Like the other operator traits, an | ||
associated type allows you to use different types on each side of the operator, | ||
as well. See the RFC for more details. | ||
|
||
The second feature is very small, and comes from [RFC 218]. Before Rust 1.8, a | ||
`struct` with no fields did not have curly braces: | ||
|
||
```rust | ||
struct Foo; // works | ||
struct Bar { } // error | ||
``` | ||
|
||
[RFC 218]: https://github.com/rust-lang/rfcs/blob/master/text/0218-empty-struct-with-braces.md | ||
|
||
The second form is no longer an error. This was | ||
originally disallowed for consistency with other empty declarations, as well as | ||
a parsing ambiguity. However, that ambiguity is non-existent in post-1.0 Rust, | ||
and macro authors saw additional complexity due to needing a special-case. Also, | ||
users who do active development would sometimes switch between empty and | ||
non-empty versions of a struct, and the extra work and diffs involved was less | ||
than ideal. | ||
|
||
On the Windows front, 32-bit MSVC builds [now implement unwinding]. This moves | ||
`i686-pc-windows-msvc` to a Tier 1 platform. | ||
|
||
[now implement unwinding]: https://github.com/rust-lang/rust/pull/30448 | ||
|
||
Finally, we have used `make` to build Rust for a very long time. However, | ||
we already have a wonderful tool for building Rust programs: Cargo. In Rust | ||
1.8, [initial support landed] for a new build system that’s written in Rust, | ||
and based on Cargo. It is not yet the default, and there is much more work to | ||
do. We will talk about this in release notes more once it’s completely done, | ||
for now, please read the GitHub issue for more details. | ||
|
||
[initial support landed]: https://github.com/rust-lang/rust/pull/31123 | ||
|
||
#### Library stabilizations | ||
|
||
About 20 library functions and methods are now stable in 1.8. There are three | ||
major groups of changes: UTF-16 related string methods, various APIs related to | ||
time, and the various traits needed for operator overloading mentioned in the | ||
language section. | ||
|
||
Other notable improvements include: | ||
|
||
* `<[T]>::clone_from_slice()`, an efficient way to copy the data from one slice | ||
and put it into another slice. | ||
* Various convenience methods on `Ipv4Addr` and `Ipv6Addr`, such as `is_loopback()`, | ||
which returns `true` or `false` if the address is a loopback address according to | ||
RFC 6890. | ||
* Various improvements to `CString`, used for FFI. | ||
* checked, saturated, and overflowing operations for various numeric types. | ||
These aren’t counted in that ‘40’ number above, because there are a _lot_ of | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Isn’t the number 20 rather than 40? Or is 40 including all the new numeric types methods? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes, this was a typo. i've since fixed it |
||
them, but they all do the same thing. | ||
|
||
See the [detailed release notes][notes] for more. | ||
|
||
#### Cargo features | ||
|
||
There were a few updates to Cargo: | ||
|
||
* [`cargo init`](https://github.com/rust-lang/cargo/pull/2081) can be used to | ||
start a Cargo project in your current working directory, rather than making a | ||
new subdirectory like `cargo new`. | ||
* [`cargo metadata`](https://github.com/rust-lang/cargo/pull/2196) is another | ||
new subcommand for fetching metadata about a project. | ||
* `.cargo/config` now has [keys for `-v` and | ||
`--color`](https://github.com/rust-lang/cargo/pull/2397) | ||
* Cargo’s ability to have target-specific dependencies [was | ||
enhanced](https://github.com/rust-lang/cargo/pull/2328). | ||
|
||
|
||
See the [detailed release notes][notes] for more. | ||
|
||
### Contributors to 1.8 | ||
|
||
We had 126 individuals contribute to 1.8. Thank you so much! | ||
|
||
* Aaron Turon | ||
* Abhishek Chanda | ||
* Adolfo Ochagavía | ||
* Aidan Hobson Sayers | ||
* Alan Somers | ||
* Alejandro Wainzinger | ||
* Aleksey Kladov | ||
* Alex Burka | ||
* Alex Crichton | ||
* Amanieu d'Antras | ||
* Andrea Canciani | ||
* Andreas Linz | ||
* Andrew Cantino | ||
* Andrew Horton | ||
* Andrew Paseltiner | ||
* Andrey Cherkashin | ||
* Angus Lees | ||
* arcnmx | ||
* Ariel Ben-Yehuda | ||
* ashleysommer | ||
* Benjamin Herr | ||
* Валерий Лашманов | ||
* Björn Steinbrink | ||
* bors | ||
* Brian Anderson | ||
* Brian Bowman | ||
* Christian Wesselhoeft | ||
* Christopher Serr | ||
* Corey Farwell | ||
* Craig M. Brandenburg | ||
* Cyryl Płotnicki-Chudyk | ||
* Daniel J Rollins | ||
* Dave Huseby | ||
* David AO Lozano | ||
* David Henningsson | ||
* Devon Hollowood | ||
* Dirk Gadsden | ||
* Doug Goldstein | ||
* Eduard Burtescu | ||
* Eduard-Mihai Burtescu | ||
* Eli Friedman | ||
* Emanuel Czirai | ||
* Erick Tryzelaar | ||
* Evan | ||
* Felix S. Klock II | ||
* Florian Berger | ||
* Geoff Catlin | ||
* ggomez | ||
* gohyda | ||
* Gökhan Karabulut | ||
* Guillaume Gomez | ||
* ituxbag | ||
* James Miller | ||
* Jeffrey Seyfried | ||
* John Talling | ||
* Jonas Schievink | ||
* Jonathan S | ||
* Jorge Aparicio | ||
* Joshua Holmer | ||
* JP Sugarbroad | ||
* Kai Noda | ||
* Kamal Marhubi | ||
* Katze | ||
* Kevin Brothaler | ||
* Kevin Butler | ||
* Manish Goregaokar | ||
* Markus Westerlind | ||
* Marvin Löbel | ||
* Masood Malekghassemi | ||
* Matt Brubeck | ||
* Michael Huynh | ||
* Michael Neumann | ||
* Michael Woerister | ||
* mitaa | ||
* Ms2ger | ||
* Nathan Kleyn | ||
* nicholasf | ||
* Nick Cameron | ||
* Niko Matsakis | ||
* Noah | ||
* NODA, Kai | ||
* Novotnik, Petr | ||
* Oliver Middleton | ||
* Oliver Schneider | ||
* petevine | ||
* Philipp Oppermann | ||
* pierzchalski | ||
* Piotr Czarnecki | ||
* pravic | ||
* Pyfisch | ||
* Richo Healey | ||
* Ruud van Asseldonk | ||
* Scott Olson | ||
* Sean McArthur | ||
* Sebastian Wicki | ||
* Sébastien Marie | ||
* Seo Sanghyeon | ||
* Simonas Kazlauskas | ||
* Simon Sapin | ||
* srinivasreddy | ||
* Steve Klabnik | ||
* Steven Allen | ||
* Steven Fackler | ||
* Stu Black | ||
* Tang Chenglong | ||
* Ted Horst | ||
* Ticki | ||
* tiehuis | ||
* Tim Montague | ||
* Tim Neumann | ||
* Timon Van Overveldt | ||
* Tobias Bucher | ||
* Tobias Müller | ||
* Todd Lucas | ||
* Tom Tromey | ||
* Tshepang Lekhonkhobe | ||
* ubsan | ||
* Ulrik Sverdrup | ||
* Vadim Petrochenkov | ||
* vagrant | ||
* Valentin Lorentz | ||
* Varun Vats | ||
* vegai | ||
* vlastachu | ||
* Wangshan Lu | ||
* York Xiang |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I missed
std::time
the first time I read this, but it's a pretty major feature of this release, could that be highlighted a bit more?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm having a hard time coming up with a good summary, ideas?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm on rereading it's probably fine, so 👍 from me