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
- Cargo's next few years.
- The steps towards rustc, the great optimiser.
- Salsa: Incremental recompilation.
- Collection of Rust hacks.
- Writing Neovim plugins in Rust.
- osaka.rs - rust async without the noise.
- Rust on iOS (and Android).
- Rust: regretless concurrency.
- Learning Rust via Advent of Code.
- Creating web-server .deb binary with rust.
- An introduction to the Rust programming language for Node developers.
Crate of the Week
This week's crate is log-derive, a procedural macro to log function outputs. Thanks to elichai2 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.
- TiKV: Set compile-time env vars in build script instead of Makefile.
- TiKV: Build with dylibs instead of statically.
- rustc: Implement RFC 2091 re implicit caller information - make 'unwrap' report a useful line number.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
157 pull requests were merged in the last week
- HirIdification: add key HirId methods
- don't panic when accessing enum variant ctor using
Self
in match - use LLVM intrinsics for saturating add/sub
- add MOVBE x86 CPU feature
- NVPTX target specification
- fix bug in integer range matching
- unused variable suggestions apply on all patterns
- add information to higher-ranked lifetimes conflicts error messages
- rustc: use multiple threads by default
- misc performance tweaks
- simplify
ConstValue::ScalarPair
- mark
str::trim*
functions as#[must_use]
- override
VecDeque
'sIter::try_fold
- introduce
into_raw_non_null
onRc
andArc
- implement
Weak::
{strong_count
,weak_count
} - rename
iter::unfold
toiter::from_fn
and remove explicit state - stabilize
std::error::Error::type_id
- stabilize
split_ascii_whitespace
- cargo: fix overlapping progress with stdout
- cargo: improve progress bar flickering
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: close] Make AcqRel universally usable as ordering mode.
- [disposition: close] Ghost Busting.
- [disposition: postpone] Accept semicolons as item-like.
- [disposition: postpone] Generic integers.
Tracking Issues & PRs
- [disposition: merge] Stabilize slice_sort_by_cached_key.
- [disposition: merge] deprecate before_exec in favor of unsafe pre_exec.
- [disposition: merge] Deprecate the unstable Vec::resize_default.
- [disposition: merge] Error on duplicate matcher bindings.
- [disposition: merge] Rename
MaybeUninit
toMaybeUninitialized
. - [disposition: merge] Tracking issue for std::iter::from_fn.
- [disposition: merge] Tracking issue for
time_checked_add
feature. - [disposition: merge] Unsized rvalues: implement boxed closure impls..
- [disposition: merge] Tracking issue for Range*::contains.
New RFCs
Upcoming Events
Online
Asia Pacific
Europe
- Feb 12. Villeurbanne, FR - TupperRust.
- Feb 18. Karlsruhe, DE - Karlsruhe Rust Hack and Learn.
- Feb 20. Berlin, DE - Berlin Rust Hack and Learn.
North America
- Feb 12. Seattle, US - Seattle Rust Meetup.
- Feb 12. Utah, US - Utah Rust monthly meetup.
- Feb 13. Ciudad de México, MX - Grupo de estudio RustMX - Sesión 1: Conceptos básicos.
- Feb 14. Columbus, US - Columbus Rust Society.
- Feb 20. Chicago, US - Chicago Rust Meetup - Property-Based Testing in Rust.
- Feb 20. Vancouver, CA - Vancouver Rust meetup.
- Feb 20. Sacramento, US - Sacramento Rust Inaugural 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
- Software Engineer at Discord, San Francisco, US.
- Network Engineer at NearProtocol, San Francisco, US.
- Navitia Software Engineer at Kisio Digital, Paris, FR.
- Rust web developer at Impero, Denmark/remote
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
This time, we have two quotes for the price of one:
The borrow checker breaks you down so that it can build you back up, stronger and more resilient than you once were. It also had me do all sorts of weird things like catch flies with chopsticks and scrub counters to a polish.
– /u/bkv on /r/rust
I always think of borrowck as an angel sitting on your shoulder, advising you not to sin against the rules of ownership and borrowing, so your design will be obvious and your code simple and fast.
– llogiq on /r/rust
Thanks to Christopher Durham for the suggestion!
Please submit your quotes for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.