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
- I made a NES emulator in Rust using generators.
- Where rustc spends its time.
- 2019 compiler roadmap progress.
- Update on const generics progress.
- Asynchronous destructors.
- A tiny, static, full-text search engine using Rust and WebAssembly.
- MicroRust: discover the world of microcontrollers through Rust on the BBC micro:bit.
- Dealing with process termination in Linux.
- The embedded WG's operating system tutorials rewrite added support for the Raspberry Pi 4.
- Adventures in motion control: simple automation sequences
- Programming Servo: shipping message-ports(via a detour into Spectre).
- Rotary encoders in embedded Rust.
Crate of the Week
This week's crate is grubbnet, a TCP client/server library for networked applications and games.
Thanks to Dooskington 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: Passing mutable references.
- rust-bindgen: Add --symbol-prefix flag.
- [good first issue] Spirit: Write a tutorial for Spirit. Spirit is a helper to make creating and configuring unix daemons easier.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
353 pull requests were merged in the last week
- Stabilize proc macros generating
macro_rules
items - Return
false
fromneeds_drop
for all zero-sized arrays - Optimize
LexicalResolve::expansion
- Remove custom
PartialEq
impls forLocalInternedString
- Optimize
BitIter
- Optimize dropck
- More symbol cleanups
- Avoid unnecessary arena allocations in
expand_pattern()
- Avoid unnecessary
TokenTree
toTokenStream
conversions - expand: Simplify expansion of derives
- Fix suggestion to constrain trait for method to be found
- syntax: add parser recovery for intersection- / and-patterns
p1 @ p2
- Reducing spurious unused lifetime warnings
- Bring attention to suggestions when the only difference is capitalization
- Use structured suggestion for restricting bounds
- Fix zero-size uninitialized boxes
- Add check for overlapping ranges to unreachable patterns lint
- Use more fine grained locks for the dep graph
- Fix
canonicalize_const_var
leaking inference variables - mir-opt: Improve SimplifyLocals pass so it can remove unused consts
- Improve error message for APIT with explicit generic arguments
- Remove unreachable unit tuple compare binop codegen
- Avoid ICE when
include!
is used by stdin crate - Implement
AsRef<[T]>
forList<T>
- hashbrown: Remove most
#[inline]
annotations - Always inline
mem::
{size_of
,align_of
} in debug builds - Avoid realloc in
CString::new
BTreeSet
symmetric_difference & union optimized- cargo: Allow
--all-features
in root of virtual workspace - rustup install: add
--profile
flag to override profile
Approved RFCs
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
Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.
RFCs
No RFCs are currently in final comment period.
Tracking Issues & PRs
- [disposition: merge] Tracking issue for todo! macro.
- [disposition: merge] Tracking issue for floats ↔ bytes conversions.
- [disposition: merge] Stabilize RFC 2451, re-rebalance coherence.
- [disposition: merge] [rustdoc] stabilize cfg(doctest).
- [disposition: merge] Stabilize nested self receivers in 1.40.0.
- [disposition: merge] Stabilize
Option::flatten
. - [disposition: merge] Stabilize
const_constructor
.
New RFCs
Upcoming Events
Africa
Asia Pacific
- Oct 26. Tokyo, JP - Rust.Tokyo 2019.
- Oct 26. Taipei, TW - Rust Taiwan Meetup.
- Oct 29. Sydney, AU - Rust Sydney - Meetup 18.
- Nov 4. Auckland, NZ - Rust AKL - Introduction to Rust (part 2 of 3).
Europe
- Oct 28. Zurich, CH - Rust Zurich - October Meetup: Claudia Saxer – 66 hours of Rust.
- Oct 28. Gouda, NL - Rust Nederland - Rust - Talks & Demos.
- Oct 28. London, GB - Rust London User Group - LDN Talks October 2019.
- Oct 30. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- Oct 30. Copenhagen, DK - Copenhagen Rust Hack Night #19.
- Nov 9 & 10. Barcelona, ES - RustFest Barcelona 2019.
North America
- Oct 28. Durham, NC, US - Triangle Rustaceans - Project Night & Lightning Talks.
- Oct 29. Dallas, TX, US - Dallas Rust - Last Tuesday.
- Oct 29. Chicago, IL, US - Chicago Rust Meetup - Entity Component Systems: An Intro To The Specs Crate Using Roguelikes.
- Oct 30. San Francisco, CA, US - Rust in Blockchain Workshop Day (SFBW)
- Oct 30. Santa Clara, CA, US - Rust Bay Area - [@ Intel Santa Clara] Security with Rust & SGX + Life of an Async fn.
- Oct 30. Vancouver, BC, CA - Vancouver Rust meetup.
- Nov 6. Indianapolis, IN, US - Indy.rs.
If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access.
Rust Jobs
- Rust Engineer at Provable, London, GB (Remote available).
- Rust Senior Developer at Token, Palo Alto, CA, US.
- Software Manager at Georg Fischer Signet, El Monte, CA, US.
- Associate Software Engineer at Georg Fischer Signet, El Monte, CA, US.
- Rust/Core Developer at Parity, Berlin, DE (Remote available).
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Rust helped me grasp concepts I should have known when writing C++
– Alexander Clarke on the Microsoft Security Response Center blog.
Thanks to mmmmib for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.