Rust 1.3 introduces The Rustonomicon
Have you ever wanted to try your hand at the mysterious, consecrated craft of unsafe Rust programming? Well, there’s now a book for that. The core team behind one of the hottest new languages presents the first draft of The Rustonomicon.
Rust 1.3 is upon us and it’s shaping up to be a stable shipment. On top of the various performance improvements tagging along, version 1.3 introduces The Rustonomicon, a book cataloging “the Dark Arts of advanced and unsafe Rust programming”.
Currently in draft mode, the Rust core team state that it provides deep coverage of some of Rust’s “darker corners”. Developers interested in exploring the shadowy depths of the language can find themselves in for a treat:
This book digs into all the awful details that are necessary to understand in order to write correct Unsafe Rust programs. Due to the nature of this problem, it may lead to unleashing untold horrors that shatter your psyche into a billion infinitesimal fragments of despair.
The authors will be assuming a lot of prior knowledge of Rust and plan to delve into exception-safety, pointer aliasing, memory models, and a sprinkle of type-theory. While the team will take care to “occasionally give a refresher on the basics where appropriate”, readers are warned that it’ll be pretty deep.
Other than the book, Rust 1.3 gives us…
The big spin on Rust 1.3 is its API stability and performance upgrades within the standard library. There’s the newly stable
Duration API and enhancements can be seen for the
Hasher traits. A speed up of
Read::read_to_end comes thanks to improvements made to zero filling.
As for breaking changes, the new object lifetime defaults have been turned on after a cycle of warnings about the change. An undetermined solution for a known regression in how object lifetime elision is interpreted is still being highlighted.
Stability has been pimped a little for this release, but the team were quick to point out that the
#[prelude_import] attribute, an internal implementation detail, was accidentally stabilised previously. The change shouldn’t break any existing code.
Up to 900 changes and a collection of bugfixes make up version 1.3. Further details outlining the updates can be found in the release notes.