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
Observations/Thoughts
- Securing Rust's supply chain with an extended standard library
- Run Linux applications in hypervisor-isolated micro-VMs with Hyperlight
- [series] Apache Iggy's migration journey to clustering powered by Viewstamped Replication (part 3)
- I snuck into the Rust Foundation's secret meeting; here's what you need to know.
- Breaking a Rust actor cluster on purpose, and what it taught us
- Catching Panics in Production
- Skipping Cloud Vendor SDKs: How ScopeDB Accesses Object Storage with Apache OpenDAL
- Bringing Rust into Ubuntu at Scale: Interview with Jon Seager
- Rust Benchmarking: How to Detect Performance Regressions in CI
- [video] Code Matters: Reflections on Rust in the LLM Age — Bryan Cantrill | Rust NYC
- A Critique of GPUI
- Memory Safety Bugs in Rust Standard Library
- Rust Declarative Macros: Organization, Scoping, and Common Use-Cases
Rust Walkthroughs
- RSPHP Part 1: Bindings
- Pointer Provenance in Rust vs C++: Pointers Are Not Just Glorified Ints
- Tokio, channels and poisoned locks
- [video] RustCurious lesson 12: Lifetimes
Crate of the Week
This week's crate is iddqd, a library of maps where keys are borrowed from values.
Thanks to Miro for the 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, Cargo, Rustup or Rust language RFCs.
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.
- Klicky - Cover silence and signed sample boundaries in audio-normalization tests
- Octomind -
parallel = "true"in a workflow step fails with "missing fieldrole" - Octomind -
scheduleacceptswhen="13am"and fires at 13:00 - Octomind -
octomind configuresaves a pasted API key with spaces around it - Umbera - Fuzz target for pdf_strip_metadata
- Umbera - Add NIST ACVP known-answer tests for ML-KEM-1024
- sysknife - publish-mcp.yml runs an unpinned mcp-publisher with id-token: write, and pinned-dependencies.test.sh never reads that file
- sysknife - MCP plan and execute results do not name the host they came from
- sysknife - dev-stories.sh runs the stories against the sysknife on PATH, not the binary it builds
- Elpis - Add DeepSeek, Mistral or Groq as a built-in provider
- Elpis - Publish and maintain the elpis-bin package on the AUR
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 Bluesky 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 Bluesky or Mastodon!
Updates from the Rust Project
659 pull requests were merged in the last week
Compiler
- add enclosing item context when pointing at
FnMutbound - add
let_underscore_drop_guardlint - don't emit no-op
&T→&Treborrows - lint: do not emit
unreachable_codeon become with diverging callee - make inline attributes apply to the generated
pollin async fn - next solver unsize coercion diagnostics
- reborrow: Allow multiple lifetimes
- restore the fast path of
QueryTypeOp - reuse CanonicalVarKinds if no new variables were added
rustc_builtin_macroscleanup, part 9- skip
reachable_setcalculation during metadata encoding when unused - support mutable captures in move expressions
Library
Movetrait feature gateString::retain: convert only the untouched UTF-8 tail- add
BTreeMap::allocatorandBTreeSet::allocator - add
core::arch::{x86, x86_64}::x87_f80 - add
Discriminant::ord - add
LinkedList::allocator - drop array elements in order after a partial move
- expose
str::split_at_[mut_]uncheckedandOsStr::split_at_unchecked - implement
read_le/read_befor f16 and f128 - implement
bitandset_bitfor integral types - optimize memset/memcpy size
Cargo
config: Expose config merging, reading, and schemas in a crateschema: Expose SBOM typesdoc: do not suggest cargo fix for rustdoc warningsprofile: preserve inherited stripregistry: handle HTTP 410/451 for missing cratesschema: Improve deserialization errors and performanceparse: Trade remote manifest diagnostic quality for performance- clean
/outdir before compilation - dont strip if any transtive dep has debuginfo on
- strip host deps whose debuginfo was weakened already
Rustdoc
- Avoid re-HIR-ty-lowering tys & const args where possible
- frontend: Properly clear search state when sidebar link is clicked
- Allow
.to be used the same as:: in the search - Render
Derefmethods on aliased items - fix invalid clean of paths when they end with
self - improve performance by skipping unneeded intermediate JSON serializations
- make implementors collapseable if there is more than one line of docs
- suggest reference definitions for unresolved links
Rustfmt
- allow reading args from
@path - fix unclosed trailing block comments with
wrap_comments=trueornormalize_comments=true - formatting empty where clauses when there are return types
- remove each comment's leading whitespace in
comment::rewrite_comment
Clippy
while_let_loop: lint only wildcardbreakpatterns and special cases- add
is_lint_allowedtofuture_not_send - extend
assert_is_emptyto supportBinaryHeap - extend
unnecessary_to_ownedto covervec.contains(&str.to_string()) - fix
collapsible_matchsuggestion producing non-exhaustive match - fix false positives on
duplicated_attributes - improve
future_not_sendfor next-solver - rename
large_stack_framesand move it to suspicious
Rust-Analyzer
- disallow ZSTs in
ThinMap - complete trait
dynprefix in type location - offer on wildcard pattern for
destructure_struct_binding - add macOS, iOS, Android and musl to cfg completion
- add support for final associated functions
- do not complete dyn Trait in sized location
- do not suggest unreachable path of
structlit - don't complete transparent after
repr(align(...))orrepr(packed) - emit E0158 and E0532 for invalid value items in path patterns
- emit assoc item bound only with generics on builtin derive
- ensure r-a matches rustc coercion logic
- fix where clause position for assoc-type
- i28 should be i128 in completion
- ide-diagnostics: emit error E0220 for unresolved associated types
- match rustc-unicode locations in the rustc problem matcher
- nested cast before
<add parens forapply_demorgan - offer gen doc example on re-exported item
- out-of-bounds crash due to copypasta
- panic on
for<'a>on types using#[derive()] - implement hiding implicit drop hints for types without drop glue
- perf: micro-optimizations for lang items
Rust Compiler Performance Triage
A quiet week performance-wise. The only notable change was a major regression in #165335, which might get reverted.
Triage done by @Kobzol. Revision range: 4c46afa6..54d0b7ed
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) |
1.0% | [0.2%, 3.7%] | 163 |
| Regressions ❌ (secondary) |
1.2% | [0.0%, 4.6%] | 159 |
| Improvements ✅ (primary) |
-2.2% | [-3.9%, -0.3%] | 8 |
| Improvements ✅ (secondary) |
-0.7% | [-1.6%, -0.2%] | 10 |
| All ❌✅ (primary) | 0.8% | [-3.9%, 3.7%] | 171 |
6 Regressions, 5 Improvements, 3 Mixed; 6 of them in rollups 189 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:
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
- lexer: Update to Unicode 18
- s390x: replace -Ctarget-feature=+backchain with -Cforce-frame-pointers
- Stabilize
int_from_ascii
Rust RFCs
- RFC for limited crates.io self-service version deletion
- [disposition: close] Deprecate
std::env::{vars, args}
Cargo
- perf(compile)!: Switch dev profile to debug=lines-and-tables-only
- fix(trim-paths): sanitize absolute source paths in fingerprint
Leadership Council
No Items entered Final Comment Period this week for Compiler Team, Language Team, Language Reference 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 2026-11-11 - 2026-12-09 🦀
Virtual
- 2026-11-12 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2026-11-15 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-11-17 | Virtual | Rust 🦀 Maven
- 2026-11-17 | Virtual (London, UK) | Women in Rust
- 2026-11-17 | Virtual (Washington, DC, US) | Rust DC
- 2026-11-18 | Hybrid (Vancouver, CA) | Vancouver Rust
- 2026-11-19 | Virtual (Berlin, DE) | Rust Berlin
- 2026-11-24 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-11-26 | Virtual | betterCode() Rust
- 2026-12-01 | Virtual | Rust 🦀 Maven
- 2026-12-01 | Virtual (London, UK) | Women in Rust
- 2026-12-02 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2026-12-03 | Virtual (Berlin, DE) | Rust Berlin
- 2026-12-04 | Hybrid (Moscow, RU) | RustCon RU
- 2026-12-06 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-12-08 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-12-08 | Virtual (London, UK) | Women in Rust
Asia
- 2026-11-14 | Bengaluru, IN | Rust Bangalore
Europe
- 2026-11-12 | Frankfurt, DE | Rust Rhein-Main
- 2026-11-12 | Geneva, CH | Rust Geneva
- 2026-11-12 | Milano, MI, IT | Rust Language Milan
- 2026-11-17 | Leipzig, DE | Rust - Modern Systems Programming in Leipzig
- 2026-11-19 | Aarhus, DK | Rust Aarhus
- 2026-11-19 | Bergen, NO | Rust Bergen
- 2026-11-20 - 2026-11-21 | Augsburg, DE | Rust Meetup Augsburg
- 2026-11-24 | Basel, CH | Rust Basel
- 2026-11-25 | Amsterdam, NL | Rust Developers Amsterdam Group
- 2026-11-26 | Copenhagen, DK | Copenhagen Rust Community
- 2026-11-26 | London, UK | Rust London User Group
- 2026-11-26 | Manchester, UK | Rust Manchester
- 2026-11-26 | Stockholm, SE | Stockholm Rust
- 2026-12-01 | Paris, FR | Rust Paris
- 2026-12-02 | Frankfurt, DE | Rust Rhein-Main
- 2026-12-04 | Hybrid (Moscow, RU) | RustCon RU
North America
- 2026-11-12 | Lehi, UT, US | Utah Rust
- 2026-11-12 | San Diego, CA, US | San Diego Rust
- 2026-11-14 | Boston, MA, US | Boston Rust Meetup
- 2026-11-17 | Los Angeles, CA, US | Rust Los Angeles
- 2026-11-17 | San Francisco, CA, US | San Francisco Rust Study Group
- 2026-11-18 | Hybrid (Vancouver, CA) | Vancouver Rust
- 2026-11-18 | San Francisco, CA, US) | Bay Area Rust
- 2026-11-21 | Boston, MA, US | Boston Rust Meetup
- 2026-11-28 | Boston, MA, US | Boston Rust Meetup
- 2026-12-04 | New York, NY, US | Rust NYC
- 2026-12-04 | New York, NY, US | Women in Rust
Oceania
- 2026-11-12 | Brisbane City, AU | Rust Brisbane
- 2026-11-24 | Barton, AU | Canberra Rust User 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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
No, actually it is harder. Much harder. Your brain normally runs an error-correction pass on every word you read before that word reaches your conscious attention. This is why it's so easy to miss typos, but the correction doesn't just hide typos from you, it can replace entire phrases with what "ought" to be there. It takes continuous concentration to suppress this effect.
[…]
(Curly brace placement is of course also subject to the error filter, but curly braces go with large changes in indentation, and that's usually a big enough visual flag to get past the filter. In fact that's why Rust requires all blocks to be braced -- the experience with C was that people would think indented statements were braced when they weren't.)
– Zack Weinberg on rust-internals
Thanks to Michael Howell for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by:
- nellshamrell
- llogiq
- ericseppanen
- extrawurst
- U007D
- mariannegoldin
- bdillo
- opeolluwa
- bnchi
- KannanPalani57
- tzilist
Email list hosting is sponsored by The Rust Foundation