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.
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
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
TokenStreams are now ropes
TypeIds 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)
From<&[char]> for String
- Cargo now supports local registry mirrors
- Cargo warns, not errs on duplicate targets
- Adam Medziński
- Alexander Altman
- Chris Stankus
- Christian Poveda
- Dominik Boehi
- Federico Ravasio
- Fran Guijarro
- Jakub Hlusička
- Jared Wyles
- Jonathan Giddy
- Matthias Rabault
- Mikhail Modin
- Moritz Ulrich
- Nick Massey
- Oliver Forral
- Omer Sheikh
- Peter C. Norton
- Rahul Sharma
- Roy Brunton
- Ryan Scott
- Samuel Cormier-Iijima
- Shantanu Raj
- Terry Sun
- Vincent Prouillet
- William Lee
- Yojan Shrestha
- Yossi Konstantinovsky
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
- 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.
FusedIteratormarker trait and
- Add a
literalfragment specifier for
macro_rules!patterns that matches literal constants.
- Clarify the relationships between various kinds of structs and variants.
- 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.
- 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.
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
if letconstruction 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).