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 on X (formerly Twitter) 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
- Comparing Rust Actor Libraries: Actix, Coerce, Kameo, Ractor, and Xtra
- Improve Rust Compile Time by 108X
- Branchless UTF-8 Encoding
- The hunt for error -22
- Automatic Server Reloading in Rust on Change: What is listenfd/systemfd?
- Investigating a Strange Out-of-Memory Error
- Comparing 13 Rust Crates for Extracting Text from HTML
- Typesafe Frontend Routing in Rust/Leptos
- Interview with passionate Rust Developer Radu Marias
- Introducing RealtimeSanitizer for Rust
- The HARM Stack (HTMX, Axum/AlpineJS, Rust, Maud) Considered Unharmful
- Type Inference in Rust and C++
- Path canonicalization is unergonomic
- [video] Rust is not Complicated - An architects perspective
Rust Walkthroughs
- A Gentle Introduction to WebAssembly in Rust (2025 Edition)
- Adding A New Fake To The Fake Crate
- Streaming Audio Apis: The Axum Server
- Prototyping in Rust
Miscellaneous
- 2024 in review - seanmonstar
- "We never update unless forced to" — cargo-semver-checks 2024 Year in Review
- Year in review: 2024 highlights and a peek at 2025 - Graphite
- Why Rust is not a functional language
- How I think about Zig and Rust
- [video] Breaking Rust’s memory safety with 1 line of code
- [audio] Crates We Love | Oxide and Friends
Crate of the Week
This week's crate is resvg, an SVG rendering library.
Thanks to David Mason 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. The following RFCs would benefit from user testing before moving forward:
RFCs
- No calls for testing were issued this week.
Rust
- No calls for testing were issued this week.
Rustup
- No calls for testing were issued this week.
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.
- rama - first version of rama-unix
- rama - add web Router service to rama-http
- rama - add full-stack rama benchmarks
- rama - add rama to "the-benchmarker"
- rama - add rama server benchmark to sharkbench
- rama - add rama to TechEmpower's FrameworkBenchmark
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
397 pull requests were merged in the last week
cfg_match
: Adjust syntaxrustc_resolve
: use structured fields in traces- add Profile Override for Non-Git Sources
- add cache to
AmbiguityCausesVisitor
- add gpu-kernel calling convention
- add license-metadata.json to rustc-src tarball
- allow coercing safe-to-call
target_feature
functions to safe fn pointers - always force non-trimming of path in
unreachable_patterns
lint - cleanup promoteds move check
- consider more erroneous layouts as
LayoutError::ReferencesError
to suppress spurious errors - consolidate ad-hoc MIR lints into real pass-manager-based MIR lints
- const traits: remove some known-bug that do not seem to make sense
- const-eval: detect more pointers as definitely not-null
- convert
struct FromBytesWithNulError
intoenum
- coverage: completely overhaul counter assignment, using node-flow graphs
- detect if-else chains with a missing final else in type errors
- disallow
A { .. }
ifA
has no fields - do not consider traits that have unsatisfied const conditions to be conditionally const
- don't skip argument parsing when running
rustc
with no arguments - eagerly mono drop for structs with lifetimes
- encode constraints that hold at all points as logical edges in location-sensitive polonius
- enforce syntactical stability of const traits in HIR
- fix ICE in resolving associated items as non-bindings
- fix overflows in the implementation of
overflowing_literals
lint's help - fix suggestion to convert dereference of raw pointer to ref
- for purely return-type based searches, deprioritize clone-like functions
- fully de-stabilize all custom inner attributes
- further improve
panic_immediate_abort
by removing rtprintpanic! messages - implement
use
associated items of traits - improve
DispatchFromDyn
andCoerceUnsized
impl validation - leak check in
impossible_predicates
to avoid monomorphizing impossible instances - location-sensitive polonius prototype: endgame
- make
missing_abi
lint warn-by-default - make sure to scrape region constraints from deeply normalizing type outlives assumptions in borrowck
- make sure we actually use the right trivial lifetime substs when eagerly monomorphizing drop for ADTs
- make sure we can produce
ConstArgHasWrongType
errors for valtree consts - methods of const traits are const
- mir borrowck: cleanup late-bound region handling
- new solver: prefer trivial builtin impls
- only treat plain literal patterns as short
- outline panicking code for
LocalKey::with
- Replace extern "rust-intrinsic" with
#[rustc_intrinsic]
across the codebase - prefer lower
TraitUpcasting
candidates in selection - provide structured suggestion for
#![feature(..)]
in more cases - reexport likely/unlikely in
std::hint
- respect --sysroot for rustc -vV and -Cpasses=list
- stable Hash: Ignore all HirIds that just identify the node itself
- treat other items as functions for the purpose of type-based search
- treat safe
target_feature
functions as unsafe by default (less invasive variant) - use a C-safe return type for
__rust_[ui]128_*
overflowing intrinsics - use indirect return for
i128
andf128
on wasm32 - use trait definition cycle detection for trait alias definitions, too
- when LLVM's location discriminator value limit is exceeded, emit locations with dummy spans instead of dropping them entirely
- use a C-safe return type for
__rust_[ui]128_*
overflowing intrinsics - stabilize
float_next_up_down
- std: lazily allocate the main thread handle
- made
Path::name
only have item name rather than full name - move
std::pipe::*
intostd::io
- less unsafe in
dangling
/without_provenance
- cargo: created a function for user defined aliases
- cargo: fix benchsuite issue with newer versions of git
- cargo: fix: wrong concat and field name
- cargo: took the functionality of the third party subcommand from the
list_commands
function - rustdoc: remove
AttributesExt
trait magic that added needless complexity - rustdoc: Replace module list items
ul
/li
withdl
/dd
/dt
elements - clippy: add a new lint for
repeat().take()
that can be replaced withrepeat_n()
- clippy: change
literal_string_with_formatting_args
lint category to nursery - clippy: emit
missing_const_for_fn
forCONST_MUT_REFS
- clippy: fix: correct suggestion for
significant_drop_in_scrutinee
in expressions - clippy: new lint
useless-nonzero-new_unchecked
- clippy: new lint:
unnecessary_semicolon
- clippy: rust 1.81 and later support elision with explicit self types
- clippy: suggest
manual_div_ceil
even when right operand is a constant - clippy: use clearer multipart suggestions for
unnecessary_map_or
lint - rust-analyzer: add missing
#[rust_analyzer::rust_fixture]
annotations - rust-analyzer: add missing
Win32_Foundation
feature - rust-analyzer: extract variable assist triggers less eagerly
- rust-analyzer: add dereferencing autocomplete
- rust-analyzer: add smart completions that skip
await
oriter()
andinto_iter()
- rust-analyzer: add the ability to jump from
into
tofrom
definitions - rust-analyzer: complete raw, const keyword
- rust-analyzer: render type parameter projection target bounds in inlays
- rust-analyzer: show go-to-type-def actions for func param and trait bound when hovering
- rust-analyzer:
cargo rustc --print
needsunstable-options
- rust-analyzer: detect missing errors for } braces before else in let...else statements
- rust-analyzer: don't return inlay hints outside requested range
- rust-analyzer: fix a bug where
enum
variants were not considered properly in type ns resolution - rust-analyzer: fix another bug when reaching macro expansion limit caused a stack overflow
- rust-analyzer: fix missing upmapping in trait impls completion
- rust-analyzer: fix semantics not always correctly caching file roots
- rust-analyzer: make
test_runner::TestState::stdout
optional to fix parsing cargo test json output - rust-analyzer: flip on typing config to be opt-in, better defaults
- rust-analyzer: generalize some type walking in hover type actions
- rust-analyzer: lsp-server: drop outgoing messages on background thread
- rust-analyzer: proc-macro-srv: make usage of
RTLD_DEEPBIND
portable - rust-analyzer: properly record meaningful imports as re-exports in symbol index
Rust Compiler Performance Triage
A very quiet week for performance, with small improvements essentially on all benchmarks.
Triage done by @simulacrum. Revision range: 1ab85fbd..9a1d156f
0 Regression, 1 Improvement, 2 Mixed; 0 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:
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
Tracking Issues & PRs
Rust
- remove long-deprecated no-op attributes no_start and crate_id
- Stabilize target_feature_11
- Add
File already exists
error doc tohard_link
function - Tracking Issue for
once_wait
- fix(libtest): Deprecate '--logfile'
- Windows: remove readonly files
- make rustc_encodable_decodable feature properly unstable
Cargo
- No Cargo Tracking Issues or PRs entered Final Comment Period this week.
Language Team
- No Language Team Proposals entered Final Comment Period this week.
Language Reference
- No Language Reference RFCs entered Final Comment Period this week.
Unsafe Code Guidelines
- No Unsafe Code Guideline Tracking Issues or PRs entered Final Comment Period this week.
New and Updated RFCs
Upcoming Events
Rusty Events between 2025-01-22 - 2025-02-19 🦀
Virtual
- 2025-01-22 | Virtual (Rotterdam, NL) | Bevy Game Development
- 2025-01-23 & 2025-01-24 | Virtual | Mainmatter Rust Workshop
- 2025-01-24 | Virtual (Jersey City, NJ, US) | Jersey City Classy and Curious Coders Club Cooperative
- 2025-01-26 | Virtual (Tel Aviv-Yafo, IL) | Rust 🦀 TLV
- 2025-01-27 | Virtual (London, UK) | London Rust Project Group
- 2025-01-28 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-01-30 | Virtual (Berlin, DE) | OpenTechSchool Berlin + Rust Berlin
- 2025-01-30 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2025-01-30 | Virtual (Tel Aviv-Yafo, IL) | Code Mavens 🦀 - 🐍 - 🐪
- 2025-01-31 | Virtual (Delhi, IN) | Hackathon Raptors Association
- 2025-01-31 | Virtual (Jersey City, NJ, US) | Jersey City Classy and Curious Coders Club Cooperative
- 2025-02-01 | Virtual (Kampala, UG) | Rust Circle Kampala
- 2025-02-04 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
- 2025-02-04 | Virtual (London, GB) | Women in Rust
- 2025-02-05 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2025-02-07 | Virtual (Jersey City, NJ, US) | Jersey City Classy and Curious Coders Club Cooperative
- 2025-02-11 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-02-11 | Virtual (Tel Aviv-Yafo, IL) | Code Mavens 🦀 - 🐍 - 🐪
- 2025-02-13 | Virtual (Berlin, DE) | Rust Berlin
- 2025-02-18 | Virtual (Washington, DC, US) | Rust DC
- 2025-02-19 | Virtual (Vancouver, BC, CA) | Vancouver Rust
Europe
- 2025-01-22 | London, GB | Rust London User Group
- 2025-01-22 | Oberursel, DE | Rust Rhein Main
- 2025-01-23 | Barcelona, ES | Barcelona Free Software
- 2025-01-23 | Paris, FR | Rust Paris
- 2025-01-24 | Edinburgh, GB | Rust and Friends
- 2025-01-27 | Prague, CZ | Rust Prague
- 2025-01-27 | Zagreb, HR | impl Zagreb for Rust
- 2025-01-28 | Aarhus, DK | Rust Aarhus
- 2025-01-28 | Manchester, GB | Rust Manchester
- 2025-01-28 | Warsaw, PL | Rust Warsaw
- 2025-01-30 | Augsburg, DE | Rust Meetup Augsburg
- 2025-01-30 | Berlin, DE | Rust Berlin
- 2025-01-30 | Copenhagen, DK | Copenhagen Rust Community
- 2025-02-01 | Brussels, BE | FOSDEM 2025
- 2025-02-01 | Helsinki, FI | Finland Rust-lang Group
- 2025-02-01 | Nürnberg, DE | Rust Nuremberg
- 2025-02-05 | Oxford, GB | Oxford Rust Meetup Group
- 2025-02-06 | Gdansk, PL | Rust Gdansk
- 2025-02-12 | Reading, GB | Reading Rust Workshop
- 2025-02-18 | Leipzig, SN, DE | Rust - Modern Systems Programming in Leipzig
- 2025-02-19 - 2025-02-20 | London, UK | Rust Nation UK
North America
- 2025-01-22 | Austin, TX, US | Rust ATX
- 2025-01-23 | Mountain View, CA, US | Hacker Dojo
- 2025-01-28 | Boulder, CO, US | Boulder Rust Meetup
- 2025-02-06 | Mountain view, CA, US | Hacker Dojo
- 2025-02-06 | Saint Louis, MO, US | STL Rust
- 2025-02-11 | Minneapolis, MN, US | Minneapolis Rust Meetup
- 2025-02-18 | San Francisco, CA, US | San Francisco Rust Study Group
Oceania
- 2025-02-04 | Auckland, NZ | Rust AKL
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
Memory safety issues mean you can’t trust what you’re seeing in your source code anymore.
– Someone from Antithesis on the shuttle blog
Thanks to scottmcm 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