Category: This Week in Rust
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? Tag us at @thisweekinrust.bsky.social on Bluesky or @ThisWeekinRust on mastodon.social, or send us a pull request. Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub and archives can be viewed at this-week-in-rust.org. If you find any errors in this week's issue, please submit a PR.
Want TWIR in your inbox? Subscribe here.
Updates from Rust Community
Official
Foundation
Newsletters
Project/Tooling Updates
- rust-analyzer changelog #290
- Linebender in May 2025
- bzip2 crate switches from C to 100% rust
- Hypershell: A Type-Level DSL for Shell-Scripting in Rust
- Slint 1.12 Released with WGPU Support, iOS Port, and Figma Variables Integration
- Glues v0.7.0 – TUI Note-Taking App with a New Theme Engine & Color Palettes
Observations/Thoughts
- retrobootstrapping rust for some reason
- The plight of the misunderstood memory ordering
- Don't you dare to sort your struct fields when using ?Sized
- [audio] Tembo with Adam Hendel
- [audio] Rust at Work - conversation with Eli Shalom and Igal Tabachnik of Eureka Labs
- [video] sans-io: meh
- [video] Guillaume Gomez - Rustdoc as a case study of developer tooling
- [video] 10th Bevy Meetup - Tristan - From zero to demo: a newcomer's experience learning Bevy
Rust Walkthroughs
- Putting seat calculations in Dutch election software to the (fuzz) test
- Datalog in Rust
- [video] Driving an LED matrix using async embedded Rust - moxi Ep2
Research
Miscellaneous
- Making GNOME’s GdkPixbuf Image Loading Safer
- May 2025 Jobs Report
- Rust social status update 2025.06
- How Rolldown Works: Symbol Linking, CJS/ESM Resolution, and Export Analysis Explained
Crate of the Week
This week's crate is RobustMQ, a next-generation, high-performance, multi-protocol message queue.
Thanks to Yu Liu for the self-suggestion!
Please submit your suggestions and votes for next week!
Calls for Testing
An important step for RFC implementation is for people to experiment with the implementation and give feedback, especially before stabilization.
If you are a feature implementer and would like your RFC to appear in this list, add a
call-for-testing
label to your RFC along with a comment providing testing instructions and/or
guidance on which aspect(s) of the feature need testing.
- No calls for testing were issued this week by Rust, Rust language RFCs, Cargo or Rustup.
Let us know if you would like your feature to be tracked as a part of this list.
Call for Participation; projects and speakers
CFP - Projects
Always wanted to contribute to open-source projects but did not 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 or through a PR to TWiR or by reaching out on X (formerly Twitter) or Mastodon!
CFP - Events
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a PR to TWiR or by reaching out on X (formerly Twitter) or Mastodon!
Updates from the Rust Project
461 pull requests were merged in the last week
Compiler
- cache
param_env
canonicalization - early linting: avoid redundant calls to
check_id
- move fast reject into inner
- use
MixedBitSet
for borrows-in-scope dataflow analysis - miri: add flag to suppress float non-determinism
- miri: we can use apfloat's
mul_add
now
Library
- stabilize
"file_lock"
feature - stabilize keylocker
- add
Vec::peek_mut
- added
Clone
implementation forChunkBy
- faster
fmt::Display
of 128-bit integers, without unsafe pointer - add
bit_width
for unsigned integer types - remove unneeded lifetime bound from signature of
BTreeSet::extract_if
Cargo
- add custom completer for
cargo remove <TAB>
- highlight the correct words
- refactor: replace InternedString with Cow in IndexPackage
Rustdoc
Rustfmt
Clippy
- Optimize 3rd heaviest func, (81b → 10m)
- add lint for broken doc links
- docs: add link to
span_lint
in diagnostics.rs - docs: make
unbuffered_bytes
docs more consistent - fix FP of
identity_op
when encounteringDefault::default()
- fix
collapsible_else_if
FP on conditionally compiled stmt - fix
needless_doctest_main
panic when doctest is invalid - fix
unit_arg
suggests wrongly forDefault::default
- fix suggestion-causes-error of
manual_swap
- fixes
manual_flatten
removes the useless if let - remove
ClippyCtfe
pass - remove unneeded lifetime
#### Rust-Analyzer
ItemTree
'sItemVisibilities
has no identity, so deduplicate- add support for excluding imports from symbol search
- cleanup incremental tests and verify query executions
- add the quickfix for increasing visibility of a private field to the private-field diagnostic
- in "Fill match arms", allow users to prefer
Self
to theenum
name when possible - insert required parentheses when typing
+
in dyn trait type - show what cargo metadata is doing in status
- copy lockfiles into target directory before invoking
cargo metadata
- do not force descend into derives for goto IDE features
- fix comparison of proc macros
- fix completion with some attribute macros
- fix proc macro server handling of strings with minuses
- hide dyn inlay hints for incomplete
impl
s - never make type mismatch diagnostic stable, even when there is a fix
- reload workspaces when cargo configs change
- support spans with proc macro servers from before the ast id changes
- generate annotations for macro defined items if their name is in the input
- idiomatic salsa use for
enum
variants query - improve completions in if / while expression conditions
- optimize
pub(crate)
andpub(self)
visibility resolution - perf: bring back
EMPTY
item tree deduplication - provide better incrementality when items are changed
- simplify and optimize
ItemTree
- turn
BlockId
into a#[salsa::tracked]
- use
ThinVec
inItemScope
in a couple places
Rust Compiler Performance Triage
Relatively quiet week, with a few improvements to benchmarks leveraging the new trait solver.
Triage done by @kobzol. Revision range: c31cccb7..45acf54e
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
0.3% | [0.1%, 0.5%] | 14 |
Regressions ❌ (secondary) |
0.3% | [0.1%, 0.5%] | 52 |
Improvements ✅ (primary) |
-0.5% | [-4.8%, -0.1%] | 68 |
Improvements ✅ (secondary) |
-4.3% | [-56.5%, -0.1%] | 85 |
All ❌✅ (primary) | -0.4% | [-4.8%, 0.5%] | 82 |
3 Regressions, 7 Improvements, 4 Mixed; 4 of them in rollups 51 artifact comparisons made in total
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.
Tracking Issues & PRs
Rust
Cargo
Rust RFCs
No Items entered Final Comment Period this week for Language Reference, Language Team or Unsafe Code Guidelines.
Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.
New and Updated RFCs
Upcoming Events
Rusty Events between 2025-06-18 - 2025-07-16 🦀
Virtual
- 2025-06-18 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2025-06-19 | Hybrid (Redmond, WA, US) | Seattle Rust User Group
- 2025-06-19 | Virtual (Berlin, DE) | Rust Berlin
- 2025-06-19 | Virtual (Girona, ES) | Rust Girona
- 2025-06-22 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-06-24 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-06-24 | Virtual (London, UK) | Women in Rust
- 2025-06-25 | Virtual (Lima, PE)| Perú Rust User Group
- 2025-06-26 | Virtual (Girona, ES) | Rust Girona
- 2025-06-26 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2025-06-29 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-07-02 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2025-07-03 | Virtual (Berlin, DE) | Rust Berlin
- 2025-07-03 | Virtual (Rotterdam, NL) | Bevy Game Development
- 2025-07-05 | Virtual (Kampala, UG) | Rust Circle Meetup
- 2025-07-06 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-07-08 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-07-13 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-07-15 | Virtual (London, UK) | Women in Rust
- 2025-07-15 | Virtual (Washington, DC, US) | Rust DC
- 2025-07-16 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Asia
- 2025-06-28 | Bangalore/Bengaluru, IN | Rust Bangalore
- 2025-07-02 | Seoul, KR | Seoul Rust (Programming Language) Meetup
Europe
- 2025-06-18 | Stockholm, SE | Stockholm Rust
- 2025-06-19 | Aarhus, DK | Rust Aarhus
- 2025-06-19 | Edinburgh, UK | Rust and Friends
- 2025-06-20 | Edinburgh, UK | Rust and Friends
- 2025-06-23 | London, UK | Rust London User Group
- 2025-06-24 | Manchester, UK | Rust Manchester
- 2025-06-25 | London, UK | London Rust Project Group
- 2025-06-25 | Paris, FR | Systematic Paris Region
- 2025-06-26 | Barcelona, ES | BcnRust
- 2025-06-26 | Copenhagen, DK | Copenhagen Rust Community
- 2025-06-26 | Paris, FR | Rust Paris
- 2025-06-30 | Zagreb, HR | impl Zagreb for Rust
- 2025-07-01 | Gdansk, PL | Rust Gdansk
- 2025-07-02 | Basel, CH | Rust Basel
- 2025-07-02 | London, UK | Oxford Rust Meetup Group
- 2025-07-02 | Posnan, PL | Rust Poland
- 2025-07-05 | Stockholm, SE | Stockholm Rust
- 2025-07-08 | London, UK | London Rust Project Group
- 2025-07-09 | Girona, ES | Rust Girona
- 2025-07-09 | Reading, UK | Reading Rust Workshop
- 2025-07-15 | London, UK | London Rust Project Group
North America
- 2025-06-18 | Hybrid (Vancouver, BC, CA) | Vancouver Rust
- 2025-06-19 | Hybrid (Redmond, WA, US) | Seattle Rust User Group
- 2025-06-19 | México City, MX | Rust MX
- 2025-06-19 | Nashville, TN, US | Music City Rust Developers
- 2025-06-19 | Redmond, WA, US | Seattle Rust User Group
- 2025-06-20 | Boston, MA, US | Boston Rust Meetup
- 2025-06-25 | Austin, TX, US | Rust ATX
- 2025-06-26 | Los Angeles, CA, US | Rust Los Angeles
- 2025-06-26 | Los Angeles (Chino Hills), CA, US | Vara Network
- 2025-06-26 | Spokane, WA, US | Spokane Rust
- 2025-06-28 | Boston, MA, US | Boston Rust Meetup
- 2025-07-03 | Montréal, QC, CA | Rust Montréal
- 2025-07-03 | Saint Louis, MO, US | STL Rust
- 2025-07-06 | Boston, MA, US | Boston Rust Meetup
- 2025-07-09 | Phoenix, AZ, US | Desert Rust
- 2025-07-15 | San Francisco, CA, US | San Francisco Rust Study Group
Oceania
- 2025-06-24 | Barton, AC, AU | Canberra Rust User Group
- 2025-06-30 | Collingwood, VI, AU | Rust Melbourne
South America
- 2025-07-12 | São Paulo, BR | Rust São Paulo 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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
But after a few weeks, it compiled and the results surprised us. The code was 10x faster than our carefully tuned Kotlin implementation – despite no attempt to make it faster. To put this in perspective, we had spent years incrementally improving the Kotlin version from 2,000 to 3,000 transactions per second (TPS). The Rust version, written by Java developers who were new to the language, clocked 30,000 TPS.
This was one of those moments that fundamentally shifts your thinking. Suddenly, the couple of weeks spent learning Rust no longer looked like a big deal, when compared with how long it’d have taken us to get the same results on the JVM. We stopped asking, “Should we be using Rust?” and started asking “Where else could Rust help us solve our problems?”
– Dr. Werner Vogels on his blog
Thanks to Brian Kung for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, U007D, joelmarcey, mariannegoldin, bennyvasquez, bdillo
Email list hosting is sponsored by The Rust Foundation