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
- Writing an OS in Rust: Advanced paging.
- Embedding WebAssembly in your Rust application.
- Lock-free Rust: Crossbeam in 2019.
- Performance of Rust's match vs. lookup tables.
- Librsvg's GObject boilerplate is in Rust now.
- Enjoy a slice of QUIC, and Rust. Quiche is an implementation of the QUIC transport protocol, by Cloudflare.
- Exporting Serde types to TypeScript.
Crate of the Week
This week's crate is typetag, a small crate to allow for serde trait objects. Thanks to Christopher Durham 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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
186 pull requests were merged in the last week
- enable RISC-V atomic compare and swap
- recover from parse errors in literal struct fields and incorrect float literals
- merge visitors in AST validation
- resolve: Fix span arithmetics in the import conflict error
- fix race condition when emitting stored diagnostics
- don't ICE when logging unusual types
- combine all builtin early lints
- add suggestion for moving type declaration before associated type bindings in generic arguments
- add suggestion for incorrect field syntax
- suggest removing leading left angle brackets
- add error for trailing angle brackets
- print visible name for types as well as modules
- use structured suggestion instead of notes
- explain type mismatch cause pointing to return type when it is
impl Trait
- when using value after move, point at span of local
- conditionally skip two passes if their related attributes were not found
- fix evaluating trivial drop glue in constants
- const_eval: predetermine the layout of all locals when pushing a stack frame
- fix memory leak in
P::filter_map
- get rid of the fake stack frame for reading from constants
- add intrinsic to create an integer bitmask from a vector mask
- un-deprecate
mem::zeroed
- make
MutexGuard
'sDebug
implementation more useful - make
str
indexing generic onSliceIndex
- small perf improvement for
fmt
- add signed
num::NonZeroI*
types - std: stabilize fixed-width integer atomics
- use pinning for generators to make trait safe
- implement
optimize(size)
andoptimize(speed)
attributes - cargo: make incremental compilation the default for all profiles
- rustdoc: fix ICE from loading proc-macro stubs
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
- [disposition: merge] stabilize
std::task
andstd::future::Future
. - [disposition: postpone] RFC for anonymous variant types, a minimal ad-hoc sum type.
Tracking Issues & PRs
- [disposition: merge] Deprecate the unstable Vec::resize_default.
- [disposition: merge] Error on duplicate matcher bindings.
- [disposition: merge] syntax: Remove warning for unnecessary path disambiguators.
- [disposition: merge] Automatically open an issue when a tool breaks.
- [disposition: merge] [WIP] Unsized rvalues: implement boxed closure impls..
- [disposition: merge] Tracking issue for Range*::contains.
New RFCs
- RFC for a formalized notion on where to enforce reference propertes in MIR.
- proc-macro-attribute-recursion.
Upcoming Events
Online
Africa
Asia Pacific
Europe
- Jan 31. Helsinki, FI - Helsinki Rust meetup.
- Jan 31. Copenhagen, DK - [cph.rs] Copenhagen Rust Hack Night #12 .
- Jan 31. Oslo, NO - Rust Oslo - Hack & Learn.
- Jan 31. Torino, IT - Turin Rust meetup.
- Feb 3. Bruxelles, BG - Rust Dev Room @ FOSDEM.
- Feb 6. Berlin, DE - Berlin Rust Hack and Learn.
North America
- Jan 31. Phoenix, US - Phoenix Rust: Games.
- Feb 6. Atlanta, US - Rust Atlanta Meetup.
- Feb 6. Vancouver, CA - Vancouver Rust meetup.
- Feb 7. Indianapolis, US - Indy.rs.
- Feb 12. Seattle, US - Seattle Rust Meetup.
- Feb 12. Utah, US - Utah Rust monthly meetup.
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
- Senior Embedded Systems Engineer at SpanIO, San Francisco, US.
- Senior Software Engineer at Prevoty, Los Angeles, US.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Rust is kind of nice in that it lets you choose between type erasure and monomorphization, or between heap-allocation and stack-allocation, but the downside is that you have to choose.
– Brook Heisler on discord (login needed, sorry!)
Thanks to scottmcm for the suggestion!
Please submit your quotes for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.