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
No papers/research projects this week.
Official
- [Inside] Rust Compiler April Steering Cycle
- [Inside] Lang team April update
- [Inside] Jacob Hoffman-Andrews joins the Rustdoc team
- [Foundation] Introducing Jane Lusby
- [Foundation] Introducing Shane Miller
Newsletters
Project/Tooling Updates
- rust-analyzer Changelog #73
- Knurling-rs changelog #23
- This Week in Ballista #11
- Welcoming Alice Ryhl as the first paid Tokio contributor
- Zellij: a Rusty terminal multiplexer releases a beta version
- faux: a struct mocking library - landing v0.1
- Otter - a game server for arbitrary board games. It is mainly written in Rust
- [audio] What's New in Rust 1.50 and 1.51
Observations/Thoughts
- Red & blue functions are actually a good thing
- Why Rust powers Temporal's new Core SDK
- Optimizing a sudoku solver in Rust
- My journey to understand rust-lang
- How I Implemented /dev/printerfact in Rust
- Why fnm was rewritten in Rust
- Running GraphQL on Lambda with Rust
- Runtime Alias Detection
- What's in the box?
- [video] An Overview of the Embedded Rust Ecosystem
Rust Walkthroughs
- Late Night Confessions — Building a Website Using Rust, Rocket, Diesel, and Askama - Part 1
- Tour of Rust's Standard Library Traits
- Learning Rust #3: crates.io & publishing your package
- Making an online multiplayer game in Rust with Nakama
- Creating a Sleek Masonry Gallery with React and WebAssembly
- The GPIO war: macro bunkers for typestate explosions (2)
- Using
std
in embedded Rust - Rust and TUI: Building a command-line interface in Rust
- Rust: Serde: Working with untyped JSON values
- [series] Writing NES Emulator in Rust
Miscellaneous
- rustc, iOS and an M1
- Microsoft Previews Rust For Windows
- Preparing Rustls for Wider Adoption
- Are We Yeet Yet?
- Run Rust RISC-V Firmware with BL602 IoT SDK
- [video] Stanford Seminar - The Soul of a New Machine: Rethinking the Computer
Crate of the Week
This week's crate is deltoid, another crate for delta-compressing Rust data structures.
Thanks to Joey Ezechiëls for the nomination
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.
No calls for participation this week
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
292 pull requests were merged in the last week
- detect when suggested paths enter extern crates more rigorously
- don't set fast-math for the SIMD operations we set it for previously
- add lint
deref_nullptr
detecting when a null ptr is dereferenced - fix suggestion for unsized function parameters
- suggest to borrow after failing to cast from
T
to*const/mut T
- stabilize
non-ascii-idents
- stabilize
is_subnormal
- stabilize
duration_zero
- stabilize
nonzero_leading_trailing_zeros
- stabilize
bufreader_seek_relative
- stabilize
BTree
{Map
,Set
}::retain
- fix aliasing violations in
thread_local_const_init
- fix
join_paths
error display - merge same condition branch in vec
spec_extend
- improve
vecdeque_binary_search
- regex: shrink size of
Inst
- cargo: don't re-use rustc cache when
RUSTC_WRAPPER
changes - clippy: split
is_diagnostic_assoc_item
- clippy: fix
single_match
- clippy: fix a false negative on
needless_return
- clippy: fix a false positive in
missing_const_for_fn
- clippy: fix false positive in
wrong_self_convention
lint - clippy: fix
redundant_pattern_matching
drop order - clippy: un-double
return
ontry_err
Rust Compiler Performance Triage
Another quiet week with very small changes to compiler performance.
Triage done by @rylev. Revision range: 5258a74..6df26f
1 Regressions, 0 Improvements, 1 Mixed
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation 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] RFC: Reserved prefixes in the 2021 edition
- [disposition: merge] add const-ub RFC
- [disposition: merge] Target tier policy
- [disposition: postpone] RFC: Custom DSTs
- [disposition: postpone] Enum variant types
Tracking Issues & PRs
- [disposition: merge] Cautiously add IntoIterator for arrays by value
- [disposition: merge] Stabilize Duration::MAX
- [disposition: merge] Stabilize
impl From<[(K, V); N]
> forHashMap
- [disposition: merge] Allow setting
target_family
to multiple values, and implementtarget_family="wasm"
- [disposition: close] Exiting a process calls exit() which isn’t thread-safe
- [disposition: merge] Stabilize
:pat_param
but leave :pat2021 gated - [disposition: merge] parser: Remove support for inner attributes on non-block expressions
- [disposition: merge] Update BARE_TRAIT_OBJECT and ELLIPSIS_INCLUSIVE_RANGE_PATTERNS to errors in Rust 2021
- [disposition: merge] Tracking Issue for vec_extend_from_within
- [disposition: merge] Tracking Issue for 'ordering helpers'
- [disposition: merge] Tracking issue for array::from_ref and array::from_mut
- [disposition: merge] Tracking Issue for {HashMap,BTreeMap}::into_{keys,values}
- [disposition: merge] Tracking issue for x86 bittest intrinsics
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Online
- April 21, Vancouver, BC, CA - Rust Study/Hack/Hang-out night - Vancouver Rust
- April 27, Berlin, DE - Rust and Tell - Rust Berlin
- April 27, London, UK - LDN Virtual Talks Apr 2021 - Red Badger Takeover - Rust London User Group
- April 27, Dallas, TX, US - Last Tuesday - Dallas Rust
- April 28, Online - Ockam Open Source Community Call - Live coding walkthrough of building end-to-end encrypted communication in Rust
- May 4, Buffalo, NY, US - Buffalo Rust User Group, Tues May 4th - Buffalo Rust Meetup
Europe
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
Grover GmbH
Massa Labs
Instaclustr
Subspace Labs
Paige
Luminovo
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
We feel that Rust is now ready to join C as a practical language for implementing the [Linux] kernel. It can help us reduce the number of potential bugs and security vulnerabilities in privileged code while playing nicely with the core kernel and preserving its performance characteristics.
– Wedson Almeida Filho on the Google Security Blog
Thanks to Jacob Pratt for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.