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 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. If you find any errors in this week's issue, please submit a PR.
Updates from Rust Community
Official
Newsletters
Project/Tooling Updates
- rust-analyzer changelog #176
- New in IntelliJ Rust for 2023.1 (Part 1)
- IntelliJ Rust Changelog #192
- sequence_align: an open-source Python + Rust toolkit for efficient sequence alignment
- Dozer Exiting Stealth Mode with v0.1.16 Release
- plrust - v1.0.0
- cdrs-tokio - 8.0.0
- logos - v0.13
- This Month in Rust OSDev: March 2023
- This Month in hyper: March 2023
- GCC Front-End For Rust - March 2023
Observations/Thoughts
- How Kani helped find bugs in Hifitime
- Build faster with Buck2: Our open source build system
- Modular Errors in Rust
- How fast can you count to 16 in Rust?
- Can You Trust a Compiler to Optimize Your Code?
- The Scoped Task trilemma
- Restructuring Patterns
- Control flow patterns in Rust
- Eight million pixels and counting – Custom allocators in Rust
- Using Metal and Rust to make FFT even faster
- [video] Solving distributed systems challenges in Rust
Rust Walkthroughs
- Writing a Fast C# Code-Search Tool in Rust
- Understanding tracing's macros by rebuilding them from scratch
- A guide to aid you in your journey of becoming a Rustacean
- Flexible Tracing with Rust and OpenTelemetry
- Build a Ray Tracer, pt. 3 - Let There Be Light!
- Nine Rules for Creating Fast, Safe, and Compatible Data Structures in Rust (Part 2)
- How to write a type-level mock library in Rust
- [video] Rust Axum Full Course - Web Development
- [video] Introduction to Rust Programming language
Miscellaneous
Crate of the Week
This week's crate is spacedisplay, a small terminal app for analyzing used disk space.
Thanks to Sviatoslav Kokurin for the suggestion!
Please submit your suggestions and votes for next week!
Call for Participation
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.
- rustc - help migrating to
derive(Diagnostic)
/ struct-based diagnostics (rust#100717) - Hyperswitch - Return all the
missing_fields
in a request - Hyperswitch - perf(logger): Remove unnecessary heap allocations
- Hyperswitch - Have
get_required_value
to useValidationError
inOptionExt
- Hyperswitch - RFC for optimizing compile time.
- rusticify - Add tagging/untagging for documents
- rusticify - Add search by document name / tags
- Ockam - Rename ockam forwarder clap commands to ockam relay
- Ockam - Add default value to --project-route argument on kafka's service start clap commands
- Ockam - Combine ip and port arguments into a single dynamic argument on kafka's service start clap commands
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
385 pull requests were merged in the last week
- migrate
rustc_macros
to syn 2.0 - add ability to transmute (somewhat) with generic consts in arrays
- allow
transmute
s to produceOperandValue
s instead of needingalloca
s - resolve: restore some effective visibility optimizations
- better diagnostic when pattern matching tuple structs
- check pattern refutability on THIR
- diagnostics: account for glob shadowing when linting redundant imports
- diagnostics: account for self type when looking for source of unsolved type variable
- do not suppress
temporary_cstring_as_ptr
in macros - don't ICE when encountering
dyn*
in statics or consts - emit feature error for parenthesized generics in associated type bounds
- extend
-Cdebuginfo
with new options and named aliases - fix
non_exhaustive_omitted_patterns
lint span - fix a couple ICEs in the new
CastKind::Transmute
code - fix buffer overrun in bootstrap and (test-only)
symlink_junction
- fix issue when there are multiple candidates for
edit_distance_with_substrings
- implement support for
GeneratorWitnessMIR
in new solver - more descriptive error when qself path doesnt have a trait on the RHS of
as
- never consider int and float vars for
FnPtr
candidates - only visit reachable blocks in ConstProp lint
- prioritize param env candidates if they don't guide type inference
- pull some tuple variant fields out into their own
struct
- remove the use of
-use-gnu-stack
when BOLTing LLVM - suggest defining const parameter when appropriate
- tweak debug outputs to make debugging new solver easier
- tweak tuple indexing suggestion
- use SipHash-1-3 instead of SipHash-2-4 for StableHasher
- yeet
owning_ref
- stabilize
is_some_and
- cargo: add
try_canonicalize
and use it overstd::fs::canonicalize
- cargo: fix Cargo warning about unused sparse configuration key
- cargo: fix credential token format validation
- cargo: validate token on publish
- rustdoc: avoid including line numbers in Google SERP snippets
- rustdoc: escape GAT args in more cases
- rustdoc: make intra-doc link pass non-quadratic for repeated links
- clippy:
needless_return
: do not trigger on ambiguous match arms return - clippy: add
manual_slice_size_calculation
- clippy: add
tests_outside_test_module
lint - clippy: new lint:
suspicious_doc_comments
- clippy: fix
mem_replace_option_with_none
not considering field variables - clippy: fix
single_component_path_imports
false positive onself::<import>::..
- clippy: fix bug with getting parent directories in
lookup_conf_file
- clippy: make
redundant_async_block
a more complete late pass - clippy: mini-fix
double_must_use
for async functions - rust-analyzer: highlight escapes in char
- rust-analyzer: compute closure captures
- rust-analyzer: desugar async fn completely
- rust-analyzer: add doc-alias based completion
- rust-analyzer: convert nested function to closure assist
- rust-analyzer: drop support for non-syroot proc macro ABIs
- rust-analyzer: assist: autoderef in generate delegate methods
- rust-analyzer: fix block local impl trait solving regressions
- rust-analyzer: fix vscode project linking popup buttons being swapped
- rust-analyzer: insert whitespace between text and pound
- rust-analyzer: unify types in
infer_expr_coerce_never()
- rust-analyzer: normalize associated types in paths in expressions
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] Evaluate place expression in
PlaceMention
New and Updated RFCs
- [new] Casting From by as_cast
- [new] Proposal: add range value type and range value conversions between different ranges.
- [new] Explicit move binding mode
- [new] Guaranteed TCO (tail call optimization)
Call 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:
- No RFCs issued a call for testing 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.
Upcoming Events
Rusty Events between 2023-04-12 - 2023-05-10 🦀
Virtual
- 2023-04-12 | Virtual (Boulder, CO, US) | Boulder Elixir and Rust
- 2023-04-12 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
- 2023-04-13 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2023-04-13 | Virtual (Lehi, UT, US) | Utah Rust
- 2023-04-13 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2023-04-15 | Virtual (Bangalore, IN) | Rust India
- 2023-04-17 | Virtual (Richmond, VA, US) | Rustaceans RVA
- 2023-04-18 | Virtual (Washington, DC, US) | Rust DC
- 2023-04-19 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2023-04-20 | Virtual (Munich, DE) | Rust Munich
- 2023-04-20 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
- 2023-04-25 | Virtual (Dallas, TX, US) | Dallas Rust
- 2023-04-26 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
- 2023-04-27 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2023-04-29 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2023-05-02 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
- 2023-05-03 | Virtual (Indianapolis, IN, US) | Indy Rust
Asia
- 2023-04-12 | Kuala Lumpur, MY | Rust Malaysia; Telegram
- 2023-04-18 | Tokyo, JP | Tokyo Rust Meetup
Europe
- 2023-04-13 | Roma, IT | Rust Roma
- 2023-04-13 | Wrocław, PL | Rust Wrocław
- 2023-04-18 | Montpellier, FR | Montpellier Rust Meetup
- 2023-04-19 | Paris, FR | Rust Paris
- 2023-04-19 | Trondheim, NO | Rust Trondheim
- 2023-04-19 | Zurich, CH | Rust Zurich
- 2023-04-20 | Aarhus, DK | Rust Aarhus
- 2023-04-20 | Munich, DE + Virtual | Rust Munich
- 2023-04-20 | Bern, CH | Rust Bern
- 2023-04-21 | Stuttgart, DE | Rust Community Stuttgart
- 2023-04-26 | London, UK | Rust London User Group
- 2023-04-27 | Vienna, AT | Rust Vienna
- 2023-05-02 | Amsterdam, NL | Rust Developers Amsterdam Group
- 2023-05-10 | Amsterdam, NL | RustNL
North America
- 2023-04-13 | Lehi, UT, US + Virtual | Utah Rust
- 2023-04-13 | New York, NY, US | Rust NYC
- 2023-04-18 | San Francisco, CA, US | San Francisco Rust Study Group
- 2023-04-19 | Austin, TX, US | Rust ATX
- 2023-04-19 | Minneapolis, MN, US | Minneapolis Rust Meetup
- 2023-04-20 | Mountain View, CA, US | Mountain View Rust Study Group
- 2023-04-29 | Durham, NC, US | Triangle Rust
Oceania
- 2023-04-13 | Sydney, NSW, AU | Rust Sydney
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
As an expert at being ignorant of what
Pin
does, I can assert with expertise that other ignorant readers have a hard time withPin
.
Thanks to bugaevc 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, bennyvasquez.
Email list hosting is sponsored by The Rust Foundation