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.6 release announcement #77

Merged
merged 3 commits into from
Jan 21, 2016
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
78 changes: 78 additions & 0 deletions _posts/2016-01-21-Rust-1.6.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
layout: post
title: "Announcing Rust 1.6"
author: The Rust Core Team
---

Hello 2016! We’re happy to announce the first Rust release of the year, 1.6.
Rust is a systems programming language focused on safety, speed, and
concurrency.

As always, you can [install Rust 1.6][install] from the appropriate page on our
website, and check out the [detailed release notes for 1.6][notes] on GitHub.
About 1100 patches were landed in this release.

[install]: http://www.rust-lang.org/install.html
[notes]: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-160-2016-01-21

### What's in 1.6 stable

This release contains a number of small refinements, one major feature, and
a change to [Crates.io](https://crates.io).

#### libcore stabilization

The largest new feature in 1.6 is that [`libcore`] is now stable! Rust’s standard
library is two-tiered: `libcore` contains a lot of functionality, but more important
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 you want to say: "... is two-tiered: there's a small core library, libcore, and the full standard library, libstd, that builds on top of it`."

is what it does _not_ contain: significant dependencies. `libcore` is completely
platform agnostic, and requires only a handful of external symbols to be defined.
Rust’s `libstd` builds on top of `libcore`, adding support for memory allocation,
I/O, and concurrency. Applications using Rust in the embedded space, as well as
those writing operating systems, often eschew `libstd`, using only `libcore`.

[`libcore`]: http://doc.rust-lang.org/nightly/core/

`libcore` being stabilized is a major step towards being able to write the lowest
levels of software using stable Rust. There’s still future work to be done, however,
Copy link
Member

Choose a reason for hiding this comment

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

Let's be a bit more specific about this: we can say that this step is enough to build a stable library ecosystem around libcore, but a bit more work is needed before stable Rust supports applications at the libcore level.

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 was also thinking about the float issue, but yeah, this is still better 👍

so expect to hear more about this in future release notes.

#### Library stabilizations

About 30 library functions and methods are now stable in 1.6. Notable
improvements include:

The `drain()` family of functions on collections. These methods let you move
elements out of a collection while allowing them to retain their backing
memory, reducing allocation in certain situations.

A number of implementations of `From` for converting between standard library
types, mainly between various integral and floating-point types.

Finally, `Vec::extend_from_slice()`, which was previously known as
`push_all()`. This method has a significantly faster implementation than the
more general `extend()`.

See the detailed release notes linked above for more.
Copy link
Member

Choose a reason for hiding this comment

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

Just make this a link :-)


#### Crates.io disallows wildcards

If you maintain a crate on [Crates.io](https://crates.io), you might have seen
a warning: newly uploaded crates are no longer allowed to use a wildcard when
describing their dependencies. In other words, this is not allowed:

```toml
[dependencies]
regex = "*"
```

Instead, you must actually specify a specific version or range of versions,
Copy link
Member

Choose a reason for hiding this comment

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

A link to the docs page on this would be great.

using one of the `semver` crate’s various options: `^`, `~`, or `=`.

A wildcard dependency means that you work with any possible version of your
dependency. This is highly unlikely to be true, and causes unnecessary breakage
in the ecosystem. We’ve been advertising this change as a warning for some time;
now it’s time to turn it into an error.

### Contributors to 1.6

TODO