Skip to content

Commit 8387cba

Browse files
committed
1.6 release announcement
1 parent 34f54d7 commit 8387cba

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

_posts/2016-01-21-Rust-1.6.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
---
2+
layout: post
3+
title: "Announcing Rust 1.6"
4+
author: The Rust Core Team
5+
---
6+
7+
Hello 2016! We’re happy to announce the first Rust release of the year, 1.6.
8+
Rust is a systems programming language focused on safety, speed, and
9+
concurrency.
10+
11+
As always, you can [install Rust 1.6][install] from the appropriate page on our
12+
website, and check out the [detailed release notes for 1.6][notes] on GitHub.
13+
About 1100 patches were landed in this release.
14+
15+
[install]: http://www.rust-lang.org/install.html
16+
[notes]: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-160-2016-01-21
17+
18+
### What's in 1.6 stable
19+
20+
This release contains a number of small refinements, one major feature, and
21+
a change to [Crates.io](https://crates.io).
22+
23+
#### libcore stabilization
24+
25+
The largest new feature in 1.6 is that [`libcore`] is now stable! Rust’s standard
26+
library is two-tiered: `libcore` contains a lot of functionality, but more important
27+
is what it does _not_ contain: significant dependencies. `libcore` is completely
28+
platform agnostic, and requires only a handful of external symbols to be defined.
29+
Rust’s `libstd` builds on top of `libcore`, adding support for memory allocation,
30+
I/O, and concurrency. Applications using Rust in the embedded space, as well as
31+
those writing operating systems, often eschew `libstd`, using only `libcore`.
32+
33+
[`libcore`]: http://doc.rust-lang.org/nightly/core/
34+
35+
`libcore` being stabilized is a major step towards being able to write the lowest
36+
levels of software using stable Rust. There’s still future work to be done, however,
37+
so expect to hear more about this in future release notes.
38+
39+
#### Library stabilizations
40+
41+
About 30 library functions and methods are now stable in 1.6. Notable
42+
improvements include:
43+
44+
The `drain()` family of functions on collections. These methods let you move
45+
elements out of a collection while allowing them to retain their backing
46+
memory, reducing allocation in certain situations.
47+
48+
A number of implementations of `From` for converting between standard library
49+
types, mainly between various integral and floating-point types.
50+
51+
Finally, `Vec::extend_from_slice()`, which was previously known as
52+
`push_all()`. This method has a significantly faster implementation than the
53+
more general `extend()`.
54+
55+
See the detailed release notes linked above for more.
56+
57+
#### Crates.io disallows wildcards
58+
59+
If you maintain a crate on [Crates.io](https://crates.io), you might have seen
60+
a warning: newly uploaded crates are no longer allowed to use a wildcard when
61+
describing their dependencies. In other words, this is not allowed:
62+
63+
```toml
64+
[dependencies]
65+
regex = "*"
66+
```
67+
68+
Instead, you must actually specify a specific version or range of versions,
69+
using one of the `semver` crate’s various options: `^`, `~`, or `=`.
70+
71+
A wildcard dependency means that you work with any possible version of your
72+
dependency. This is highly unlikely to be true, and causes unnecessary breakage
73+
in the ecosystem. We’ve been advertising this change as a warning for some time;
74+
now it’s time to turn it into an error.
75+
76+
### Contributors to 1.6
77+
78+
TODO

0 commit comments

Comments
 (0)