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
- Redox Summer of Code.
- Writing An NES Emulator with Rust and WebAssembly.
- Down a rusty rabbit hole. Discovering a series of quirks of the Rust compiler/language.
- The case for deadlines in timeout-centric APIs.
- Rust pattern: Rooting an Rc handle.
- Conway's Game of Life: A tutorial on implementing a game in Rust and WebAssembly.
- Safe intrusive collections with pinning.
- Rust memory safety revolution: Why, what, and how for complete beginners.
- A useful feature few Rust programmers know about. The
- Instance identity in C++ and Rust.
- A shifty riddle: Why is
std::ops::Shl::shlnot equal to
- Fearless Rust bloggers. A list of blogs from past This Week in Rust issues.
- Armstrong Publications released a Rust book Step Ahead with Rust for intermediate to advanced programmers.
- This week in Rust docs 101.
- The Embedded Working Group newsletter 3.
- CLI Working Group newsletter 2.
- IntelliJ Rust changelog 72. Now with support for macro expansion.
- [podcast] Rusty Spike Podcast - episode 25. Rust Reach, the Rust all hands, webassembly.studio, more wasm tools, async/await, and GStreamer.
From Rust All Hands in Berlin
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.
- Clippy has a lot of good first issues. If you are looking for something specific to get started with, here is one: Split up our UI-tests into smaller parts.
- rustc-guide is a project to write a short guide about how the rust compiler works, and it needs your help. There are some easier issues, issues which might require a bit of investigation/code reading, and issues which probably require some advanced knowledge or a lot of time.
- Help stabilize a subset of Macros 2.0!
- [good first issue] distinst: Optimize Partition Moving Algorithm. distinst is a distribution installer backend written in Rust.
- distinst: Reduce LUKS Device Detection Overhead.
- distinst: Use Entire Disk as LUKS / LVM Partition.
- [easy] tokei: Improve tokei's language test coverage.
- Get started with these beginner-friendly issues.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
143 pull requests were merged in the last week
- implement Euclidean modulo (RFC #2169)
- fix unsoundness bug in functions input references
- skip MIR encoding for cargo check
- proc_macro: avoid cached
- proc_macro: Generalize
- hygiene 2.0: avoid comparing fields by name
- fix derive(PartialOrd) and optimise final field operation
!for erroneous identifier
- fix incorrect span in
- don't recurse into allocations, use a global table instead
- Fix ICE by disallowing
impl Traitin unsupported position
- chalkify: Implement lowering rule Implied-Bound-From-Trait
- don't abort const eval due to long running evals, just warn
GlobalAlloctrait + tweaks for initial stabilization
from_bytesto primitive integers
- correctly print fractional part of a second
::containsto a single default impl on
- replace manual iterator exhaust with
- merge the
std_unicodecrate into the
- core: Remove panics from some
- cargo: include package metadata in
- cargo: rustc cache
- rustdoc: add target features when extracting and running doctests
- rustdoc: port the -C option from rustc
- Alec Mocatta
- Chris Coulson
- Fabio B
- Joshua Barretto
- Nikita Popov
- Steven Malis
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- Unapprove placement RFCs: 1228: Place left arrow syntax (
place <- expr) and RFC 809:
Final Comment Period
The community team is trying to improve outreach to meetup organisers. Please fill out their call for contact info if you are running or used to run a meetup.
- Apr 19. Cambridge, GB - Cambridge Rust Meetup.
- Apr 21. Chennai, IN - Monthly Meetup - April.
- Apr 22. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Apr 24. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- Apr 24. Dallas, US - Last Tuesday Meetup.
- Apr 25. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Apr 25. Rust Events Team Meeting.
- Apr 26. New York City, US - Rust NYC (Security).
- Apr 27. Darmstadt, DE - Rhein-Main Rust Meetup.
- Apr 29. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- May 1. Johannesburg, ZA - Monthly Meetup of the Johannesburg Rustaceans.
- May 2. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- May 2. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- May 2. Vancouver, CA - Rust Study/Hack/Hang-out night.
- May 2. Atlanta, US - Grab a beer with fellow Rustaceans.
- May 2. Indianapolis, US - Indy.rs - Actix Actor Framework.
- May 3. Utrecht, NL - Rust Workshop.
- May 27. Paris, FR - RustFest Paris 2018.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Rust is one of those friends that take some time to get along with, but that you'll finally want to engage with for a long term relationship.