Rust 1.6 Announcement

Original author: Steve Klabnik
  • Transfer
Hello in 2016! We are pleased to announce the first release of Rust this year - 1.6. Rust is a system programming language aimed at safe work with memory, speed and parallel code execution.

As always, you can install Rust 1.6 from the corresponding page on our site, as well as see a detailed list of changes for version 1.6 on Github. This release includes 1,100 patches.

What is included in the stable version 1.6


This release includes a number of minor improvements, one major innovation and change to Crates.io .

Libcore stabilization


The biggest innovation in 1.6 is library stabilization libcore. The Rust standard library consists of two layers: a small base library libcoreand a complete standard library libstd, which is built on the basis of libcore. Itself is libcorecompletely platform independent and requires several external functions to be defined. The complete library is libstdbased on libcoreand adds support for memory allocation, I / O, and multithreading. When using Rust in embedded environments and when writing operating systems, they often give up libstdand use only libcore.

StabilizationlibcoreIs an important step towards being able to write the lowest level code on a stable version of Rust. However, the work is not finished yet. Stabilization will allow the ecosystem of libraries to grow around libcore, but its use in applications is not yet fully supported. Expect news from this area in future releases.

Library stabilization


About 30 library functions and methods are stabilized in 1.6. The most notable improvements include:

The drain()collection feature family . These methods allow you to move items from collections, while preserving the memory in which they are located, thereby reducing the need for memory allocation in some cases.

Several type implementations Fromfor converting between types from the standard library, mainly between integer numbers and floating-point numbers.

And finally, the method Vec::extend_from_slice()previously known as push_all(). It is significantly faster than the more general method extend().

You can also look at the detailed list of changes .

It is forbidden to use asterisks on Crates.io instead of dependency versions


If you support the container on Crates.io , you may have already noticed a warning: new containers can no longer use the template *as the version number in the dependencies. In other words, you can’t do this anymore:

[dependencies]
regex = "*"

Instead, you need to specify a particular version or range of versions , using one of the many restrictions on the version of the container semver: ^, ~or =.

An asterisk means that you can work with any version of this dependency. Most likely this is not true, and only adds unnecessary problems with compatibility in the ecosystem. A warning about banning an asterisk as a version has been displayed for quite some time when publishing a container on Crates.io , and now it will become a real mistake.

From translator


I want to thank defuz , Revertis , D101101 and the entire Russian-speaking Rust community for their help in translating.

Also popular now: