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
Official
Newsletters
Tooling
Observations/Thoughts
- Monads and GATs in Nightly Rust
- Vanishing zeroes for geometric algebra in Rust
- On Generics and Associated Types
- Adaptive Request Concurrency. Resilient observability at scale.
- Rust compression libraries
- Rust makes cross compilation child's play
- Using the builder pattern to define test scenarios
- Measuring Memory Usage in Rust
- Saving time by switching users: Async support in Goose
- Why Rust is meant to replace C
Rust Walkthroughs
- Interior Mutability in Rust: Understanding The Cell Type
- Real-time video processing with Rust, FFmpeg and OpenCV
- Merge k sorted arrays in Rust
- Make A Language - Part Thirteen: Whitespace & Events
- Unit-testing a console app (a text editor)
- Rust and Async (on embedded devices)
- Avoiding Duplicating Strings in Rust
- [video] Introduction to Rust Part 2
Project Updates
Miscellaneous
- Safe Interoperability between Rust and C++ with CXX
- Expanding Fuchsia's open source model
- Miri can now detect data races
Crate of the Week
This week's crate is breadx, a X-windows protocol implementation in 100% safe and mutex-free Rust.
Thanks to Willi Kappler 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
279 pull requests were merged in the last week
- add wasm32 support to inline asm
- improve attribute message error spans
- chalk: always relate with Invariant to non-General inference vars
- fix perf regression caused by match exhaustiveness split
- pass around Symbols instead of Idents in doctree
- tweak diagnostics on shadowing lifetimes/labels
- avoid panic_bounds_check in
fmt::write
- fix incorrect
io::Take
's limit resulting fromio::copy
specialization std::io
: use sendfile for UnixStream- cargo: slightly optimize `cargo vendor
- cargo: add "--workspace" to update command
- rustdoc: JSON backend experimental impl
Rust Compiler Performance Triage
- 2020-12-08: 0 Regressions, 2 Improvements, 1 Mixed
Triage done by @simulacrum.
See the full report for more.
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
- RFC: Plan to make core and std's panic identical
- RFC: Add
target_abi
configuration - added secret types rfc
Tracking Issues & PRs
- [disposition: merge] rustdoc: stabilise --default-theme command line option
- [disposition: merge] Implement
From<char>
for u64 and u128. - [disposition: merge] Stabilize
unsafe_cell_get_mut
- [disposition: merge] Move
{f32,f64}::clamp
to core - [disposition: merge] Stabilize all stable methods of
Ipv4Addr
,Ipv6Addr
andIpAddr
as const - [disposition: merge] Acknowledge that
[CONST; N]
is stable - [disposition: merge] Deprecate atomic compare_and_swap method
- [disposition: merge] Stabilize
core::slice::fill
- [disposition: close] Made matches! more useful by adding mapping support
- [disposition: merge] passes: prohibit invalid attrs on generic params
- [disposition: merge] stabilize deque_range
- [disposition: close] Apply
unused_doc_comments
lint to inner items - [disposition: merge] Rename
overlapping_patterns
lint - [disposition: merge] Stabilize or_insert_with_key
- [disposition: close] Add built-in implementations of
Default
for function definition and… - [disposition: merge] Mark
-1
as an available niche for file descriptors - [disposition: merge] Stabilize the Wake trait
- [disposition: merge] Tracking issue for map_ok and map_err method for
Poll<Option<Result<T, E>>>
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Online
- December 10, Stuttgart, DE - Hack & Learn - Directions for 2021 - Rust Community Stuttgart
- December 10, San Diego, CA, US - San Diego Rust December 2020 Tele-Meetup - San Diego Rust
- December 10, Washington, DC, US - How oso built a runtime reflection system for Rust—Rust DC
- December 15, Russia - Russian Rust Online Meetup
- December 16, Vancouver, BC, US - Are Results just Checked Exceptions? - Vancouver Rust
North America
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
Tweet us at @ThisWeekInRust to get your job offers listed here!
- Software Engineer, Systems at PathAI (Boston, MA, US)
- Software Developer (Rust) at MeiliSearch (Remote)
- Backend Engineer - Rust at Kraken (Remote NA, SA, EMEA)
- Backend Engineer, Kraken Futures - Rust at Kraken (Remote)
- Rust Engineer, Desktop GUI - Cryptowatch at Kraken (Remote)
- Senior Backend Engineer - Rust at Kraken (Remote NA, SA, EMEA)
- Senior Banking Engineer - Rust at Kraken (Remote)
- Software Engineer - Trading Technology (Rust) at Kraken (Remote NA, SA, EMEA)
- Rust for Embedded Environments at Ockam (Remote)
- Messaging protocol architect in Elixir (and Rust) at Ockam (Remote)
- Senior Software Engineer (Rust & C++) at NZXT (Remote)
- Embedded Firmware Engineer in C & Rust at Astropad (Remote, US)
Quote of the Week
Writing rust for me is a gradual process of the compiler patiently guiding me towards the program I should have written in the first place, and at the end I take all the credit.
Thanks to Joshua Nelson for the suggestion.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.