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 a pull request. Want to get involved? We love contributions.
Updates from Rust Community
News & Blog Posts
- Rust's type system is Turing-complete: An exploration of type-level programming in Rust. A response to Rust's type system is not Turing complete challenge.
- Targeting the web with Rust. A demo web app that implements CPU bound portions in Rust (compiled to wasm/asm.js) while using existing web technologies to handle user facing pieces.
- Gentle intro to type-level recursion in Rust: From zero to HList sculpting.
- Math with distances in Rust: safety and correctness across units.
- Exploring dynamic dispatch in Rust.
- Running Rust on the ARM Cortex M3.
- Little tour of multiple iterators implementation in Rust.
- How to use Hyper HTTP library asynchronously.
- Building a parallel ECS in Rust. The development story of
specscommemorating the 0.8 version release.
- Map of a lifetime.
flat_mapvs. nested loops.
- Reference iterators in Rust.
- ripgrep 0.5.0 released with UTF-16 support. ripgrep is a line oriented search tool that combines the usability of The Silver Searcher with the raw speed of GNU grep.
- Rust now beats C++ in many benchmarks in The Computer Language Benchmarks Game and is on par in others.
- This week in Rust docs 47.
- Parsing into an AST. Part of the series - Writing an interpreter in Rust.
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.
- Crossbeam project is looking for new maintainers.
- The Underhanded Rust Contest.
- [medium] notify-rust: Implement icons and images. notify-rust let's you send desktop notifications on Linux and BSD.
- tempdir: TempDir affected by remove_dir_all unreliability on windows.
- [easy] servo: Looking for something to work on.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
142 pull requests were merged in the last week.
- 1.16 release notes (merged prematurely)
- beta backports
- handle procedural macros during
- export attributes in
- rustc: exit quickly on only
save-analysisnow works in the presence of type errors
- fix ICE on constant enums
- fix incorrect span label formatting
- fix const expressions with macros
syntax::ItemKind::MacroDef, nix unnamed macros (breaking change)
- update syntax for
- spans for individual path segments
- fix obligation cause body mismatch
- No more StorageLive for the
- no more MIR pass plugins (even if there ever was one)
- MIR inlining
- placement-in for
- reduce adaptive
- fix rustdoc display of associated consts
- improve rustdoc sidebar style
- decimate the old
- rustbuild: fix compiler docs
- rustbuild now copies instead of links
- crates.io now uses Diesel
- Fabjan Sukalia
- Gibson Fahnestock
- Joel Gallant
- Jonas Bushart
- Joshua Horwitz
- Paul Daniel Faria
- Petr Hosek
- Tobias Schottdorf
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
Final Comment Period
- [disposition: merge] Add unstable sort to libcore.
- [disposition: merge] Write to standard error with
- [disposition: merge] Include the
- [disposition: merge] extend
?to operate over other types.
- [disposition: close] Add variable-length arrays to the language.
- [disposition: merge] Extend entry API to work on borrowed keys.
- [disposition: merge] Deprecate anonymous parameters.
- Allow the name (qualifier) of an enum variant to be elided in expressions and patterns whenever it can be inferred.
Style RFCs are part of the process for deciding on style guidelines for the Rust community and defaults for Rustfmt. The process is similar to the RFC process, but we try to reach rough consensus on issues (including a final comment period) before progressing to PRs. Just like the RFC process, all users are welcome to comment and submit RFCs. If you want to help decide what Rust code should look like, come get involved!
PRs in final comment period:
Issues in final comment period:
Other significant issues:
- Mar 15. Rust Meetup Hamburg - Rust/Ethereum Meetup.
- Mar 15. Rust Los Angeles - Rust LA Monthly Meetup - Hack Night.
- Mar 15. Rust Dublin - Rust Lightning Talks.
- Mar 15. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Mar 15. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Mar 16. Rust - Modern Systems Programming in Leipzig.
- Mar 16. Thompson Rivers University, BC Canada - Get Rusty.
- Mar 21. Rust Paris Meetup #36.
- Mar 22. OpenTechSchool Berlin - Rust Hack and Learn.
- Mar 22. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Mar 22. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Mar 23. Rust release triage.
- Mar 29. GNOME+Rust Hackfest 2017, Mexico City.
- Mar 29. South Florida Rust Meetup: Intro to Ownership and Borrowing Part 3.
- Mar 29. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Mar 29. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Mar 31. Underhanded Rust Contest Submission Deadline.
- Apr 30. RustFest 2017 - Kyiv, Ukraine.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
In #rustlang, None is always an Option<_>.
Thanks to Johan Sigfrids for the suggestion.