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.
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
- 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
specs
commemorating the 0.8 version release. - Map of a lifetime.
flat_map
vs. 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
This week's crate of the week is µtest, a testing framework for embedded software. Thanks to nasa42 for the suggestion.
Submit your suggestions and votes 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.
- 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
save-analysis
- export attributes in
save-analysis
- rustc: exit quickly on only
--emit dep-info
save-analysis
now works in the presence of type errors- fix ICE on constant enums
- fix incorrect span label formatting
- fix const expressions with macros
- fix
personality_fn
within compiler_builtins - new
syntax::ItemKind::MacroDef
, nix unnamed macros (breaking change) - update syntax for
pub(restricted)
- spans for individual path segments
- fix obligation cause body mismatch
- No more StorageLive for the
!
type - no more MIR pass plugins (even if there ever was one)
- MIR inlining
- placement-in for
HashMap
,VecDeque
- reduce adaptive
HashMap
size overhead OsString::shrink_to_fit
- fix rustdoc display of associated consts
- improve rustdoc sidebar style
- decimate the old
configure
script further - rustbuild: fix compiler docs
- rustbuild now copies instead of links
- crates.io now uses Diesel
New Contributors
- CrazyMerlyn
- Fabjan Sukalia
- Gibson Fahnestock
- Joel Gallant
- Jonas Bushart
- Joshua Horwitz
- madseagames
- Paul Daniel Faria
- Petr Hosek
- Tobias Schottdorf
Approved RFCs
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
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:
- [disposition: merge] Add unstable sort to libcore.
- [disposition: merge] Write to standard error with
eprint!
andeprintln!
. - [disposition: merge] Include the
ManuallyDrop
wrapper incore::mem
. - [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.
New RFCs
Style RFCs
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:
Upcoming Events
- 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.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email the Rust Community Team for access.
Rust Jobs
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.