Version 1.25 of the Rust systems programming language is now available, featuring an upgrade to its LLVM (Low-Level Virtual Machine) compiler infrastructure that improves support for the WebAssembly portable code format, which itself is designed to improve the performance of web applications.
The latest Rust version also has improvements for the Cargo package manager and library stabilizations.
Where to download Rust
You can install Rust using your terminal and entering the following command:
curl https://sh.rustup.rs -sSf | sh
What’s new in Rust 1.25
New Rust features from the LLVM upgrade
The Rust language has been upgraded to LLVM 6 from LLVM 4. This lets Rust keep abreast of the upstream WebAssembly back end and pick up new features when they land.
The LLVM upgrade also fixes some SIMD-related compilation errors. For internet of thigs (IoT) development, LLVM 6 brings Rust closer to supporting the AVR microntroller family, leveraged in the Arduino Uno board. Rust, Mozilla claims, can improve security and reliability of IoT devices and is much better at this than the C/C++ languages commonly used to write microcontroller firmware. AVR support is due soon.
New Rust features from the Cargo CLI changes
For the Cargo command-line interface,
cargo new will default to generating a binary rather than a library. Rust’s developers said they try to keep the CLI stable but that this change was important and unlikely to result in breakage. They said that
cargo new accepts two flags:
--lib, for building libraries
--bin, to build binaries or executables
In previous versions of Cargo, developers who did not pass one of these flags would default to
--lib. This was done because each binary often depends on other libraries, thus making the library case more common. But this behavior is actually incorrect, because each library is depended on by many binaries. Also, some community members found the default surprising.
Other new features in Rust 1.25
Other features in Rust 1.25 include:
- Library stabilizations include a std::p
tr::NonNull<T>type, which is nonnull and covariant.
libcorehas gained the
timemodule, with the
Durationtype that had only been available in
- Checkouts of Git dependenices from the Cargo database folder should be quicker, due to the use of hard links. Cargo caches Git repositories in a few locations.
- Nested imports groups provide a new way to write
usestatements, which can reduce repetition and foster clarity.