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.
Updates from Rust Community
News & Blog Posts
- Announcing Tokio. A Finagle inspired network application framework for Rust.
- Helping with the Rust errors. Step-by-step instructions on how to help with the new Rust error messages.
- Introduction to nom. A parsing framework written in Rust.
- Convenient and idiomatic conversions in Rust.
- Better Exception Messages. Part of the series Writing an OS in Rust.
- Writing a JPEG decoder in Rust. Part 1: Background.
- Extent of Intent. Llogiq considers no-ops for consistency's sake harmful.
- Rust code in mozilla-central now builds via cargo.
- imag usecases. imag usecases explained.
- [podcast] New Rustacean podcast episode 17. A deep dive on references and pointers in Rust.
New Crates & Project Updates
- [graph] Six months of rustc performance and memory usage.
- Tokamak 0.2.8 released. Now with Rustup support.
- Cargo nightly builds now support vendoring dependencies.
- Exar DB. An event store with streaming support.
- DUX. An X11 backlight manager.
- rst. A requirements tracking tool made for developers and stands for "Requirements, Specifications and Tests". There is also an introductory blog post.
- fdpass-rs. A high level library to send and receive file descriptors through UNIX socket in a safe way.
- This week in Servo 73.
- This week in Rust docs 16.
- This week in TiKV 2016-08-05.
- This week in Ruma 2016-08-07.
Crate of the Week
This week's Crate of the Week is Dylan Ede's rusttype, a pure Rust freetype replacement. Thanks mindtree for the suggestion.
Submit your suggestions for next week!
Call for Participation
Always wanted to contribute to open-source projects but didn't know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!
Some of these tasks may also have mentors available, visit the task page for more information.
- [easy] rust book: Script to lint for copypasta'd file paths that should be generic. Create a little script that will help the next version of the book have fewer errors!
- [easy] rust: Error code list which need to be updated to new format.
- [easy] rustup: Don't capture backtraces without RUST_BACKTRACE=1. An easy fix, done in two steps, first modifying error-chain, then upgrading it in rustup.
- [easy] rustup: Add command to install shell completions.
- [moderate] rust: improve error message when resolution via Deref actually required DerefMut. Good first type system bug.
- [hard] imag: implement bindings to lua/lisp (ketos)/rhai for the filter library
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
147 pull requests were merged in the last two weeks.
- Too many error description updates to report here
- MIR switched on by default (test it while it's hot!)
- MIR deaggregates struct access
- The LLVM Upgrade from Hell (A most epic MIR blocker)
- fix out-of-sync LLVM interface
- Auto-Upgrade outmoded LLVM intrinsics
- MinGW linking problems dodged
- Fix
panic=abort
vs. plugins TokenStream
s are now ropesTypeId
s are now unique cross-crate- Cross-Crate DefIds needed for MIR
- Break unsound code with unused type parameters (breaking change, if you didn't infer that already)
- Better warnings against shadowing types/imports
- Ignore deprecated items within deprecated items
- Unify inlined code caching (should need less RAM)
- Unmatched surrogates are now reported in lowercase (could break your code if you relied on uppercase – hopefully no one did)
impl From<Vec<char>>
andFrom<&[char]> for String
- Handle
RwLock
reader overflow - Cargo now supports local registry mirrors
- Cargo warns, not errs on duplicate targets
New Contributors
- Adam Medziński
- Alexander Altman
- Chris Stankus
- Christian Poveda
- Dominik Boehi
- Federico Ravasio
- Fran Guijarro
- Jakub Hlusička
- Jared Wyles
- Jonathan Giddy
- kc1212
- m4b
- Matthias Rabault
- Mikhail Modin
- mLuby
- Moritz Ulrich
- Nick Massey
- Oliver Forral
- Omer Sheikh
- Peter C. Norton
- Rahul Sharma
- Roy Brunton
- Ryan Scott
- Samuel Cormier-Iijima
- Shantanu Raj
- silenuss
- Terry Sun
- TheZoq2
- trixnz
- Vincent Prouillet
- William Lee
- Yojan Shrestha
- Yossi Konstantinovsky
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
No RFCs were approved this week.
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:
- Create a team responsible for documentation for the Rust project.
- Add extra access methods for atomic types.
- Dedicated strike team to resolve unsafe code guidelines.
- Add a compiler flag that emits crate dependencies on a best-effort basis.
- Specify Rust compatibility of nursery crates.
- RFC process for formatting style and Rustfmt defaults.
- Define a best practices procedure for making bug fixes in the compiler.
FusedIterator
marker trait anditer::Fuse
specialization.- Add a
literal
fragment specifier formacro_rules!
patterns that matches literal constants. - Clarify the relationships between various kinds of structs and variants.
New RFCs
- Allow crates to specify the version of Rust in which they are written.
- Support versioned dependencies on build tools, such as cargo.
- Add a 'thread lifetime, which denotes a thread-bounded region.
- Allow uncallable method impls to be omitted.
- Target bundles. Combine distribution of standard libraries and targets into bundles for targeting a particular platform.
Upcoming Events
- 8/10. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 8/10. Rust Boulder/Denver Monthly Meeting.
- 8/11. Columbus Rust Society.
- 8/12. Frankfurt/Germany Meetup.
- 8/15. Rust Paris.
- 8/17. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 8/17. Rust Los Angeles Meetup.
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
No jobs listed for this week.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
The
if let
construction is a neat thing Rust borrowed from Swift (perhaps "copied" would be more accurate, or "cloned" depending on your views on whether ideas have owners).
— Frank McSherry in a blog post.
Thanks to /u/vks_ and Brian Anderson for the suggestion.