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.
Updates from Rust Community
- 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
- 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
- OS in Rust: Custom target to build kernel for bare metal: Part-3
- OS in Rust: Building kernel for custom target: Part-4
- [video] Introduction to Rust Part 2
- 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!
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
- fix incorrect
io::Take's limit resulting from
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.
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.
- RFC: Plan to make core and std's panic identical
- RFC: Add
- added secret types rfc
- [disposition: merge] rustdoc: stabilise --default-theme command line option
- [disposition: merge] Implement
From<char>for u64 and u128.
- [disposition: merge] Stabilize
- [disposition: merge] Move
- [disposition: merge] Stabilize all stable methods of
- [disposition: merge] Acknowledge that
[CONST; N]is stable
- [disposition: merge] Deprecate atomic compare_and_swap method
- [disposition: merge] Stabilize
- [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_commentslint to inner items
- [disposition: merge] Rename
- [disposition: merge] Stabilize or_insert_with_key
- [disposition: close] Add built-in implementations of
Defaultfor function definition and…
- [disposition: merge] Mark
-1as an available niche for file descriptors
- [disposition: merge] Stabilize the Wake trait
- [disposition: merge] Tracking issue for map_ok and map_err method for
No new RFCs were proposed this week.
- 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
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.