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
Newsletters
Project/Tooling Updates
Observations/Thoughts
- The Unreasonable Effectiveness of Fuzzing for Porting Programs
- So you want to serialize some DER?
- Why I Switched from Flutter + Rust to Rust + egui
- Weird expressions in rust
- Migrating off legacy Tokio at scale
- Driving the Rust Compiler to Compile Single Files as Shellcode
- Counter Service: How we rewrote it in Rust
- Defending Democracies With Rust
- Rust: A language that grows with you, your career and your projects
- [video playlist] Scientific Computing in Rust 2025
Rust Walkthroughs
- Porting GPU shaders to Rust 30x faster with AI
- Bitwise DNA Compression in Rust: Small Footprint with Fast Reverse Complements
- Writing a basic Linux device driver when you know nothing about Linux drivers or USB
- Rewriting Kafka in Rust Async: Insights and Lessons Learned in Rust
- The Complete Rust Security Handbook
Crate of the Week
This week's crate is primitive_fixed_point_decimal, a crate of real fixed-point decimal types.
Thanks to Wu Bingzheng 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.
RFCs
Rust
Rustup
If you are a feature implementer and would like your RFC to appear on the above list, add the new 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.
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.
- Continuwuity - Default room ACLs
- Continuwuity - Ability to entirely disable typing and read receipts
- Continuwuity - bug: appservice users are not created on registration
- Continuwuity - Invite filtering / disable invites per account
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.
No Calls for papers or presentations were submitted this week.
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
448 pull requests were merged in the last week
Compiler
- perf: Cache the canonical instantiation of param-envs
- asyncDrop trait without sync Drop generates an error
- stabilize
generic_arg_infer
- skip no-op drop glue
Library
- add
trim_prefix
andtrim_suffix
methods for bothslice
andstr
types - allow comparisons between
CStr
, CString, and Cow<CStr>
- allow storing
format_args!()
in variable - impl
Default
forarray::IntoIter
- change
core::iter::Fuse
'sDefault
impl to do what its docs say it does - let String pass
#[track_caller]
to its Vec calls - safer implementation of RepeatN
- use a distinct
ToString
implementation foru128
andi128
Cargo
- cargo:
feat(toml)
: Parse support for multiple build scripts - cargo: feat: introduce perma unstable
--compile-time-deps
option forcargo build
- cargo: fix potential deadlock in
CacheState::lock
Rustdoc
- avoid a few more allocations in
write_shared.rs
- rustdoc-json: keep empty generic args if parenthesized
- rustdoc: make srcIndex no longer a global variable
Clippy
- use jemalloc for Clippy
- perf: Don't spawn so many compilers (3/2) (19m → 250k)
Sugg
: do not parenthesize a double unary operatoror_fun_call
: lint more methods- add missing space when expanding a struct-like variant
- check MSRV before suggesting applying
const
to a function - emit lint about redundant closure on the closure node itself
- fix
branches_sharing_code
suggests misleadingly when in assignment - fix
clippy::question_mark
on let-else with cfg - fix
exhaustive_structs
false positive on structs with default valued field - fix
manual_ok_err
suggests wrongly with references - fix
non_copy_const
ICE - fix
wildcard_enum_match_arm
suggests wrongly with raw identifiers - fix false positive of
borrow_deref_ref
- fix suggestion-causes-error of
empty_line_after_outer_attr
- new lint:
manual_is_multiple_of
Rust-Analyzer
- rust-analyzer: add
fn parent(self, db) → GenericDef
tohir::TypeParam
- rust-analyzer: cleanup
folding_ranges
and support more things - rust-analyzer: do not default to 'static for trait object lifetimes
- rust-analyzer: closure capturing for let exprs
- rust-analyzer: fix cargo project manifest not pointing to the workspace root
- rust-analyzer: in "Wrap return type" assist, don't wrap exit points if they already have the right type
- rust-analyzer: respect
.cargo/config.toml build.target-dir
- rust-analyzer: temporarily disable
+
typing handler as it moves the cursor position - rust-analyzer: use
ROOT
hygiene forargs
inside newformat_args!
expansion - rust-analyzer: hide imported privates if private editable is disabled
- rust-analyzer: mimic rustc's new
format_args!
expansion
Rust Compiler Performance Triage
A week dominated by the landing of a large patch implementing RFC#3729 which unfortunately introduced rather sizeable performance regressions (avg of ~1% instruction count on 111 primary benchmarks). This was deemed worth it so that the patch could land and performance could be won back in follow up PRs.
Triage done by @rylev. Revision range: 45acf54e..42245d34
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) |
1.1% | [0.2%, 9.1%] | 123 |
Regressions ❌ (secondary) |
1.0% | [0.1%, 4.6%] | 86 |
Improvements ✅ (primary) |
-3.8% | [-7.3%, -0.3%] | 2 |
Improvements ✅ (secondary) |
-2.3% | [-18.5%, -0.2%] | 44 |
All ❌✅ (primary) | 1.0% | [-7.3%, 9.1%] | 125 |
2 Regressions, 4 Improvements, 10 Mixed; 7 of them in rollups 40 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
- Use lld by default on x86_64-unknown-linux-gnu stable
- Allow #[must_use] on associated types to warn on unused values in generic contexts
- Fix proc_macro::Ident 's handling of $crate
- Ensure non-empty buffers for large vectored I/O
Rust RFCs
No Items entered Final Comment Period this week for Cargo, 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
- No New or Updated RFCs were created this week.
Upcoming Events
Rusty Events between 2025-06-25 - 2025-07-23 🦀
Virtual
- 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
- 2025-07-17 | Virtual (Berlin, DE) | Rust Berlin
- 2025-07-20 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-07-22 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-07-22 | Virtual (London, GB) | Women in Rust
Asia
- 2025-06-28 | Bangalore/Bengaluru, IN | Rust Bangalore
- 2025-07-02 | Seoul, KR | Seoul Rust (Programming Language) Meetup
Europe
- 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-01 | Paris, FR | Stockly
- 2025-07-02 | Basel, CH | Rust Basel
- 2025-07-02 | Frankfurt, DE | Rust Rhein-Main
- 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 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
- 2025-07-15 | London, UK | London Rust Project Group
North America
- 2025-06-25 | Austin, TX, US | Rust ATX
- 2025-06-26 | Chicago, IL, US | Chicago Rust Meetup
- 2025-06-26 | Los Angeles, CA, US | Rust Los Angeles
- 2025-06-26 | Los Angeles (Chino Hills), CA, US | Vara Network
- 2025-06-26 | México City, MX | Rust MX
- 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
- 2025-07-17 | Nashville, TN, US | Music City Rust Developers
- 2025-07-17 | Redmond, WA, US | Seattle Rust User Group
- 2025-07-23 | Austin, TX, US | Rust ATX
Oceania
- 2025-06-30 | Collingwood, VI, AU | Rust Melbourne
- 2025-07-01 | Christchurch, NZ | Christchurch Rust Meetup Group
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
Our experience is that no matter how many safeguards you put on code, there’s no cure-all that prevents bad programming. Of course, to take the contrary argument, seat belts don’t stop all traffic fatalities, but you could just choose not to have accidents. So we do have seat belts. If Rust can prevent some mistakes or malicious intent, maybe it’s worth it even if it isn’t perfect.
Thanks to Kill The Mule 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