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
Official
Project/Tooling Updates
- 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
Observations/Thoughts
- 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)
Rust Walkthroughs
- 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
Research
Miscellaneous
- 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
(almost)
always useObligationCtxt
when dealing with canonical queriesfix(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- add
multivalue
target feature to WASM target - allow use of
-Clto=thin
with-Ccodegen-units=1
in general - lint against usages of
struct_span_lint_hir
- stable Lower lint level for
read_zero_byte_vec
- reduce span of let else
irrefutable_let_patterns
warning - suggest use
..
to fill in the rest of the struct fields - better error for
rustc_strict_coherence
misuse - correctly resolve Inherent Associated Types
- don't silently eat label before block in block-like expr
- interpret: fix
align_of_val
on packed types - make
proc_macro_derive_resolution_fallback
a hard error - make
underscore_literal_suffix
a 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
#[alloc_error_handler]
- remove bounds check when array is indexed by enum
- stabilize the
instruction_set
feature - implement
std::marker::Tuple
, use it inextern "rust-call"
andFn
-family traits - futures: do not require
Clone
forShared::peek
- 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
Item::visibility
computed on-demand - bindgen: add support for the
"C-unwind"
ABI - bindgen: add the
--override-abi
option - bindgen: allow callback composition
- bindgen: wrap unsafe function's bodies in unsafe blocks
- clippy: add
allow-print-in-tests
config - clippy: add new lint
let_underscore_future
- clippy: extend
needless_collect
- clippy: fix ICE in
redundant_allocation
- clippy: fix
unnecessary_join
turbofish in suggest message - clippy: improve
needless_lifetimes
- clippy: move
needless_collect
to nursery - clippy: shrink
missing_
{safety
,errors
,panics
}_doc
spans - rust-analyzer: add "Convert match to
let-else
" assist - rust-analyzer: add config for inserting
must_use
ingenerate_enum_as_method
- 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
FnOnce
- rust-analyzer: fix the length displayed for byte string literals with escaped newlines
- rust-analyzer: async trait method for
unnecessary_async
- 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 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.
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
- [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-deps
build flag tocargo build
- [new] RFC: Anonymous Associated Types
Upcoming Events
Rusty Events between 2022-11-09 - 2022-12-07 🦀
Virtual
- 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
Europe
- 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
North America
- 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
Oceania
- 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.
Jobs
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