


























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 from the appropriate page on our website, and check out the detailed release notes for 1.6 on GitHub. About 1100 patches were landed in this release.
This release contains a number of small refinements, one major feature, and a change to Crates.io.
The largest new feature in 1.6 is that libcore is now stable! Rust’s
standard library is two-tiered: there’s a small core library, libcore, and
the full standard library, libstd, that builds on top of it. 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 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. This will allow for a library ecosystem to develop around
libcore, but applications are not fully supported yet. Expect to hear more
about this in future release notes.
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 for more.
If you maintain a crate on 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:
[dependencies]
regex = "*"
Instead, you must actually specify a specific version or range of
versions, 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.
We had 132 individuals contribute to 1.6. Thank you so much!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。