Hello and welcome to another issue of This Week in Rust! Rust is a programming language empowering everyone to build reliable and efficient software. 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
Foundation
Project/Tooling Updates
- rust-analyzer changelog #127
- Redox OS 0.7.0
- Plotters is back!
- Slint (UI crate) weekly update
- Fornjot (Code-CAD in Rust) - Weekly Dev Log - 2022-W16/W17 (Post-Vacation Edition)
- BonsaiDb (NoSQL Database) April Update: Dogfooding and Fixing Bugs
- This week in Databend #40: A Modern Cloud Data Warehouse for Everyone
- This week in Fluvio #31: the programmable streaming platform
Observations/Thoughts
- A shiny future with GATs
- C++ & Rust: Generics and Specialization
- The Better Alternative to Lifetime GATs
- Bugs that the Rust compiler catches for you
- Creating an Easy Mode for Rust
- [video] Async Rust: Portability and Interoperability - Nick Cameron - Rust Linz, April 2022
- [video] Rust for the Kubernetes Ecosystem - Deepu K Sasidharan - Rust Linz, April 2022
- [audio] Game Development with Rust and WebAssembly with Eric Smith
Rust Walkthroughs
- Patching Cargo Dependencies
- Building a crawler in Rust: Scraping and Parsing HTML
- Save 5 minutes web scraping with rust
- Building a WebAssembly-powered serverless platform
- Self-referential structs and alternatives
- [video] Getting good at SNES games through DLL injection
Research
- Stay Safe under Panic: Affine Rust Programming with Multiparty Session Types
- Rusty Links in Local Chains
Crate of the Week
This week's crate is shuttle, a rustic declarative deployment solution for and at your service.
Thanks to Nodar Daneliya for the self-suggestion!
Please 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.
- RustConf Call for Proposals is open
- maplibre-rs has several good first issues
- diesel.rs-website has several help wanted issues
Updates from the Rust Project
343 pull requests were merged in the last week
- add
do yeet
expressions to allow experimentation in nightly - enforce Copy bounds for repeat elements while considering lifetimes
- enforce static lifetimes in consts during late resolution
- ensure that
'_
and GAT yields errors - better error messages when collecting into
[T; n]
- erase type params when suggesting fully qualified path
- fix incorrect suggestion for trait bounds involving binary operators
- improve Error Messaging for Unconstructed Structs and Enum Variants in Generic Contexts
- recover suggestions to introduce named lifetime under NLL
- recover most
impl Trait
anddyn Trait
lifetime bound suggestions under NLL - suggest calling method on nested field when struct is missing method
- use the correct lifetime binder for elided lifetimes in path
- when encountering a binding that could be a const or unit variant, suggest the right path
- fix incremental perf regression unsafety checking
- support arrays of zeros in
Vec
's__rust_alloc_zeroed
optimization - make (
e
)println!
macros eagerly drop temporaries (for backport) - add
VecDeque::extend
fromvec::IntoIter
andslice::Iter
specializations - implement
str
to[u8]
conversion for refcounted containers - std: directly use pthread in UNIX parker implementation
- hashbrown: correct the implementation of
Debug
forValuesMut
andIntoValues
structures - hashbrown: fix underflow in
RawIterRange::size_hint
- stdarch: add stdsimd feature to
allow_internal_unstable
attribute in feature detect macros - stdarch: WASM simd128 pairwise/lane-wise
- codegen_gcc: add inline assembly
sym
operands as GCC input operands - cargo: add support for workspace inheritance
- clippy: extend
extra_unused_lifetimes
to handle impl lifetimes - clippy:
needless_late_init
: ignoreif let
,let mut
and significant drops - clippy:
redundant_closure
fix false positive on coerced closure - clippy: fix ICE in
cast_slice_different_sizes
- clippy: ignore
redundant_pub_crate
inuseless_attribute
- rust-analyzer: reload project on
.cargo/config
(.toml
) changes - rust-analyzer: make "inline type alias" work for
Self
in impls - rust-analyzer: diagnose unresolved derive macros
- rust-analyzer: provide Self in record literal completion
- rust-analyzer: fix outline mod completion with partial module name
- rust-analyzer: fix show
macro_rules
snippet in blocks
Rust Compiler Performance Triage
Performance overall improved in the last week, but some of this is due to fixing regressions from prior weeks. This week also brings an average of 4% improvement in memory usage across all profiles due to #95171 bumping the LLVM/clang used on x86_64-unknown-linux-gnu to compile C and C++ code linked into rustc.
Triage done by @simulacrum. Revision range: 1c988cfa..468492
Summary:
Regressions 😿 (primary) |
Regressions 😿 (secondary) |
Improvements 🎉 (primary) |
Improvements 🎉 (secondary) |
All 😿 🎉 (primary) |
|
---|---|---|---|---|---|
count | 13 | 1 | 78 | 29 | 91 |
mean | 0.8% | 0.3% | -0.9% | -0.8% | -0.7% |
max | 1.5% | 0.3% | -2.7% | -2.1% | -2.7% |
4 Regressions, 3 Improvements, 1 Mixed; 1 of them in rollups
52 artifact comparisons made in total
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
- No RFCs entered Final Comment Period this week.
Tracking Issues & PRs
- [disposition: merge] impl Read and Write for
VecDeque<u8>
- [disposition: merge] Make write/print macros eagerly drop temporaries
New and Updated RFCs
Upcoming Events
Rusty Events between 2022-05-04 - 2022-06-01 🦀
Virtual
- 2022-05-04 | Indianapolis, IN, US | Indy Rust
- 2022-05-04 | Philadelphia, PA, US | Rust Philly (Rust Philadelphia)
- 2022-05-05 | Charlottesville, VA, US | Charlottesville Rust Meetup
- 2022-05-09 | Philadelphia, PA, US | Rust Philly (Rust Philadelphia)
- 2022-05-10 | Berlin, DE | OpenTechSchool Berlin
- 2022-05-10 | Dallas, TX, US | Dallas Rust
- 2022-05-10 | Rostock, DE | Altow Academy
- 2022-05-10 | Saarbrücken, DE | Rust-Saar
- 2022-05-10 | Seattle, WA, US | Seattle Rust Meetup
- 2022-05-11 | Boulder, CO, US | Boulder Elixir and Rust
- 2022-05-11 | Malaysia, MY | Rust Malaysia Meetup
- 2022-05-12 | Nürnberg, DE | Rust Nurnberg DE
- 2022-05-12 | Stuttgart, DE | Rust Community Stuttgart
- 2022-05-17 | Washington, DC, US | Rust DC
- 2022-05-18 | Philadelphia, PA, US | Rust Philly (Rust Philadelphia)
- 2022-05-18 | Vancouver, BC, CA | Vancouver Rust
- 2022-05-24 | Berlin, DE | OpenTechSchool Berlin
- 2022-05-24 | San Francisco, CA, US | Rust Bay Area
- 2022-05-25 | Stuttgart, DE | Rust Community Stuttgart
- 2022-06-01 | Indianapolis, IN, US | Indy Rust
- 2022-06-01 | Philadelphia, PA, US | Rust Philly (Rust Philadelphia)
North America
- 2022-05-11 | Atlanta, GA, US | Rust ATL
- 2022-05-12 | Columbus, OH, US | Columbus Rust Society
- 2022-05-17 | San Francisco, CA, US | San Francisco Rust Study Group
- 2022-05-24 | San Francisco, CA, US | Rust Bay Area
Europe
- 2022-05-06 | Zurich, CH | Rust Zurich
- 2022-05-09 | Helsinki, FI | Finland Rust Meetup
- 2022-05-19 & 05-20 | Berlin, DE | Entwickler.de
- 2022-05-24 | Amsterdam, NL | Rust Developers Amsterdam Group]
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
Element
Meilisearch
Aembit
PropelAuth
ANIXE
Stockly
- Back-end developer (Rust, gRPC, PostgreSQL) (Paris, FR)
- Back-end developer - Engine (Rust, gRPC, PostgreSQL) (Paris, FR)
Parity
- Rust / Core Engineer - Parachains Engineering (Remote/Berlin/Lisbon/UK)
- Rust / Core Engineer - Parachains Protocol (Remote/Berlin/Lisbon/UK)
- Rust Engineer - General opening (Remote/Berlin/Lisbon/UK)
Kraken
- Engineering Manager - Rust - Core Backend (Remote)
- Site Reliability Engineer - Rust - Core Backend (Remote)
- Rust Engineer, Desktop GUI - Cryptowatch (Remote)
Rust Foundation
Tempus Ex
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
"Ah but logic errors can happen with all languages" yes and I'm sure trains occasionally run into trees as well, but cars are way more likely to. 🙃
Thanks to Jacques “erelde” Rimbault for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, andrewpollack, U007D, kolharsam, joelmarcey, mariannegoldin.
Email list hosting is sponsored by The Rust Foundation