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
- 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
{:#?}
pretty-printer flag. - Instance identity in C++ and Rust.
- A shifty riddle: Why is
std::ops::Shl::shl
not 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
This week's crate is rain, a framework for large-scale distributed computations. Thanks to Vikrant 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.
- 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)
- implement
#[repr(packed(n))]
(RFC #1399) - fix unsoundness bug in functions input references
- skip MIR encoding for cargo check
- proc_macro: avoid cached
TokenStream
more often - proc_macro: Generalize
FromIterator
impl - hygiene 2.0: avoid comparing fields by name
- fix derive(PartialOrd) and optimise final field operation
- update
?
repetition disambiguation - suggest
!
for erroneous identifiernot
- fix incorrect span in
&mut
suggestion - don't recurse into allocations, use a global table instead
- Fix ICE by disallowing
impl Trait
in unsupported position - chalkify: Implement lowering rule Implied-Bound-From-Trait
- don't abort const eval due to long running evals, just warn
- add
GlobalAlloc
trait + tweaks for initial stabilization - add
to_bytes
andfrom_bytes
to primitive integers - correctly print fractional part of a second
- stabilize
Option::filter
- stabilize
fetch_nand
- stabilize
take_set_limit
- move
Range
*::contains
to a single default impl onRangeBounds
- replace manual iterator exhaust with
for_each(drop)
- merge the
std_unicode
crate into thecore
crate - core: Remove panics from some
Layout
methods - cargo: include package metadata in
cargo metadata
- cargo: rustc cache
- rustdoc: add target features when extracting and running doctests
- rustdoc: port the -C option from rustc
New Contributors
- Alec Mocatta
- Chris Coulson
- Fabio B
- Hero
- Joshua Barretto
- Nikita Popov
- Steven Malis
Approved RFCs
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:box
and placementin
.
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:
New RFCs
Upcoming Events
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.
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
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.
Thanks to u/rushmorem and saethlin for the suggestion!