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? Tweet us at @ThisWeekInRust 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
- rust-analyzer changelog #154
- IntelliJ Rust Changelog #182
- This Month in Rust OSDev: October 2022 | Rust OSDev
- This Week in Fyrox
- Cap'n Proto - Generic Associated Types
- Gitoxide - Cloning the Linux kernel in under a minute
- This week in Fluvio #48: The programmable streaming platform
- Scoped threads in Rust, and why its async counterpart would be unsound
- 34 Must Know Terms for Embedded Rust Newbies
- what if pointer properties were in the rust type system
- mmap(1Tb): A Rust arena allocator (ab)using Linux overcommit
- Contributing to Rust: Bootstrapping the Rust Compiler (rustc)
- The ‘Viral’ Secure Programming Language That’s Taking Over Tech
- [FR] Rust par le Métal : move, clone, copy (series)
- [FR] Rust par le Métal (Annexe) : Les bases de nombres (series)
- Tauri vs. Electron for Tray Apps
- Running Rust in AWS Lambda with SAM — Part 1
- Tower, Episode 2: calling a Tower Service
- Writing an eBPF/XDP Load-Balancer in Rust
- Floating Point Arcade
- [video] Cost-Efficient Rust in Practice, Rust Tokyo
- Lynx Joins AdaCore and Ferrous Systems to Bring Rust to Embedded Developers
- [video] RUST 1.65 - let-else statements - new language feature!!!
- [video] The Rust Programming Language for Game Tooling
- [video] Bencher—Catch Performance Regressions in CI @ Rust DC, September 20, 2022 w/ Everett Pompeii
- [video] Impractical Rust: The HATETRIS World Record @ Rust DC, October 18, 2022 w/Dave Freiberg+Felipe Suero
- [DE] Programmiersprache Rust 1.65 führt Generic Associated Types ein
- [DE] Ferris Talk #12: Web-APIs mit Rust erstellen
Crate of the Week
This week's crate is enum_delegate, a crate to replace dynamic dispatch with enum dispatch.
Thanks to Devin Brite for the suggestion!
Please submit your suggestions and votes for next week!
Call for Participation
Always wanted to contribute to open-source projects but didn't 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.
Updates from the Rust Project
396 pull requests were merged in the last week
ObligationCtxtwhen dealing with canonical queries
fix(generic_const_exprs):fix predicate inheritance for children of opaque types
- make cpp-like debuginfo type names for slices and str consistent
- track where diagnostics were created
rustc_metadata: encode even less doc comments
multivaluetarget feature to WASM target
- allow use of
- lint against usages of
- stable Lower lint level for
- reduce span of let else
- suggest use
..to fill in the rest of the struct fields
- better error for
- correctly resolve Inherent Associated Types
- don't silently eat label before block in block-like expr
- interpret: fix
align_of_valon packed types
proc_macro_derive_resolution_fallbacka hard error
underscore_literal_suffixa hard error
- normalize types when deducing closure signature from supertraits
- miri: implement condvars for Windows
- miri: initOnce: synchronize with completion when already complete
- rewrite implementation of
- remove bounds check when array is indexed by enum
- stabilize the
std::marker::Tuple, use it in
- futures: do not require
- libtest: run all tests in their own thread, if supported by the host
- rustdoc: fix merge of attributes for reexports of local items
- rustdoc: make
- bindgen: add support for the
- bindgen: add the
- bindgen: allow callback composition
- bindgen: wrap unsafe function's bodies in unsafe blocks
- clippy: add
- clippy: add new lint
- clippy: extend
- clippy: fix ICE in
- clippy: fix
unnecessary_jointurbofish in suggest message
- clippy: improve
- clippy: move
- clippy: shrink
- rust-analyzer: add "Convert match to
- rust-analyzer: add config for inserting
- rust-analyzer: extracted method from trait impl is placed in existing impl
- rust-analyzer: generalize reborrow hints as adjustment hints
- rust-analyzer: show signature help when calling generic types implementing
- rust-analyzer: fix the length displayed for byte string literals with escaped newlines
- rust-analyzer: async trait method for
- rust-analyzer: fix reference searching only accounting substrings instead of whole identifiers
- rust-analyzer: make custom expr prefix completions to understand refs
- rust-analyzer: fixed local shadowing the caller's argument issue
- rust-analyzer: lower unsafety of fn pointer and fn item types
- rust-analyzer: migrate assists to format args captures, part 3
- rust-analyzer: scip: generate symbols for local crates
Rust Compiler Performance Triage
A relatively noisy week (most of those have been dropped below, and comments left on GitHub), but otherwise a quiet one in terms of performance changes, with essentially no significant changes occuring.
Triage done by @simulacrum. Revision range: 822f8c2..57d3c58
2 Regressions, 2 Improvements, 3 Mixed; 3 of them in rollups 39 artifact comparisons made in total
See the full report for more details.
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
label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature
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.
- [disposition: close] RFC 3283: Backward compatible default features
- [disposition: close] RFC: Rust SemVer 2
- [disposition: postpone] Add named path bases to cargo
Tracking Issues & PRs
- No Tracking Issues or PRs entered Final Comment Period this week.
New and Updated RFCs
- [new] Create an Operational Semantics Team
- [new] Add a
--compile-time-depsbuild flag to
- [new] RFC: Anonymous Associated Types
Rusty Events between 2022-11-09 - 2022-12-07 🦀
- 2022-11-09 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
- 2022-11-09 | Virtual (Darmstadt, DE) | betterCode
- 2022-11-09 | Virtual (Malaysia, MY) | Rust Malaysia
- 2022-11-10 | Virtual (Budapest, HU) | HWSW free!
- 2022-11-10 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2022-11-12 | Virtual | Rust GameDev
- 2022-11-15 | Virtual (Nairobi, KE / New York, NY, US)| Data Umbrella Africa
- 2022-11-15 | Virtual (Washington, DC, US) | Rust DC
- 2022-11-16 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2022-11-17 | Virtual (Amsterdam, NL) | ITGilde Tech-Talks
- 2022-11-17 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
- 2022-11-21 | Virtual (Paris, FR) | Meetup Paris - École Supérieure de Génie Informatique (ESGI)
- 2022-11-22 | Virtual (Berlin, DE) | Berlin.rs
- 2022-11-24 | Virtual (Linz, AT) | Rust Linz
- 2022-11-29 | Virtual (Dallas, TX, US) | Dallas Rust
- 2022-11-30 | Virtual (Munich, DE) | Rust Munich
- 2022-12-01 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2022-12-06 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
- 2022-12-07 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2022-11-15 | Tampere, FI | Rust Finland
- 2022-11-16 | Paris, FR | Stockly
- 2022-11-23 | Bratislava, SK | Bratislava Rust Meetup Group
- 2022-11-24 | København, DK | Copenhagen Rust Group
- 2022-11-30 | Amsterdam, NL | Rust Nederland
- 2022-11-30 | Lille, FR | Rust Lille
- 2022-11-30 | Munich, DE + Virtual | Rust Munich
- 2022-11-10 | Columbus, OH, US | Columbus Rust Society
- 2022-11-15 | San Francisco, CA, US | San Francisco Rust Study Group
- 2022-11-29 | Austin, TX, US | ATX Rustaceans
- 2022-12-01 | Lehi, UT, US | Utah Rust
- 2022-11-09 | Sydney, NSW, AU | Rust Sydney
- 2022-11-22 | Canberra, ACT, 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.
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
Meanwhile the Rust shop has covers on everything and tag-out to even change settings of the multi-axis laser cutter, but you get trusted with said laser cutter on your first day, and if someone gets hurt people wonder how to make the shop safer.
Thanks to Anton Fetisov 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