Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us an email! Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.
This week's edition was edited by: nasa42, brson, and llogiq.
Updates from Rust Community
News & Blog Posts
- Announcing Rust 1.6.
- Rust, BigData and my laptop.
- [pdf]You can't spell trust without Rust. Analysis of the semantics and expressiveness of Rust’s type system.
- Libmacro - an API for procedural macros to interact with the compiler.
- Rust and the Blub Paradox. And the follow-up.
- [video] Ferris Makes Emulators. Live stream of Ferris developing a N64 emulator in Rust (also on Twitch).
Notable New Crates & Project Updates
- Are we concurrent yet?
- GFX epic rewrite for the Pipeline State Objects paradigm has landed, described on the blog.
- Herbie. A rustc plugin to check for numerical instability.
- Dynamo. A rusty dynamically typed scripting language.
- rust-vnc. An implementation of VNC protocol, client state machine and a client.
Updates from Rust Core
129 pull requests were merged in the last week.
See the triage digest and subteam reports for more details.
Notable changes
- Implement RFC 1252 expanding the OpenOptions structure.
- Book: First draft of 'ownership'.
- Cargo: Add convenience syntax to install current crate.
- Cargo: Introduce cargo metadata subcommand.
- Cargo: Implement
cargo init
. - Cargo: Emit a warning when manifest specifies empty dependency constraints.
- Change name when outputting staticlibs on Windows.
- Make
btree_set::{IntoIter, Iter, Range}
covariant. - Avoid bounds checking at
slice::binary_search
. std::sync::mpsc
: Addfmt::Debug
stubs.- resolve: Fix variant namespacing.
New Contributors
- Adrian Heine
- Andrea Bedini
- Guillaume Bonnet
- Kamal Marhubi
- Keith Yeung
- Marc Bowes
- Martin
- mopp
- Olaf Buddenhagen
- Paul Dicker
- Peter Kolloch
- Stephen (Ziyun) Li
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- Amendment to RFC 550: Add
[
to the FOLLOW(ty) in macro future-proofing rules. - Amendment to RFC 1192: Amend
RangeInclusive
to use an enum.
Final Comment Period
Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now. This week's FCPs are:
- Trait-based exception handling.
- Improve Cargo target-specific dependencies.
- Add a
IndexAssign
trait that allows overloading "indexed assignment" expressions likea[b] = c
. - Allow eliding more type parameters.
- Add an
alias
attribute to#[link]
and-l
.
New RFCs
- Add compiler support for generic atomic operations.
- Translate undefined generic intrinsics to an LLVM
unreachable
and a lint.
Upcoming Events
- 1/27. OpenTechSchool Berlin: Rust Hack and Learn.
- 1/28. Tokyo Rust Meetup #2.
- 2/3. Rust Berlin: Leaf and Collenchyma.
- 2/3. Rust Meetup in Cologne / Germany.
- 2/8. Seattle Rust Meetup.
- 2/12. Embedded Rust Workshop Frankfurt.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email Erick Tryzelaar or Brian Anderson for access.
fn work(on: RustProject) -> Money
- Rust Engineer at MaidSafe.
- Research Engineer - Servo at Mozilla.
- Senior Research Engineer - Rust at Mozilla.
- PhD and postdoc positions at MPI-SWS.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Crate of the Week
This week's Crate of the Week is racer which powers code completion in all Rust development environments.
Thanks to Steven Allen for the suggestion.
Submit your suggestions for next week!
Quote of the Week
Memory errors are fundamentally state errors, and Rust's move semantics, borrowing, and aliasing XOR mutating help enormously for me to reason about how my program changes state as it executes, to avoid accidental shared state and side effects at a distance. Rust more than any other language I know enables me to do compiler driven design. And internalizing its rules has helped me design better systems, even in other languages.
— desiringmachines on /r/rust.
Thanks to dikaiosune for the suggestion.