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
Foundation
- Rust Foundation Included in Fastly's Fast Forward Program
- Welcoming Seth Markle to the Rust Foundation Board
Newsletters
Project/Tooling Updates
- hyper Polish Period
- Changelog #155
- This Week in Fyrox
- Bevy - Bevy 0.9
- [video] Bevy 0.9 Release Train
- Fornjot (code-first CAD in Rust) - Progress Report
- What's new in SeaORM 0.10.x
Observations/Thoughts
- Error docs
- Rust enum-match code generation
- Implementation Details of async Rust
- Stop writing Rust linked list libraries!
- [video] Rust GCC Front-end - Philip Herron, David Faust
- [video] Rust Is Boring (Why Rust?) [RUST-13]
- [audio] cargo-auditable with Sergey Davidoff
Rust Walkthroughs
- Rust and C++ Interoperability
- 4-Step Primer on Navigating Embedded Rust HAL Documentation
- Five simple steps to use any Arduino C++ library in a Rust project
- Tower, Episode 3: Readiness
Miscellaneous
Crate of the Week
This week's crate is lngcnv, a linguistic command line tool.
Thanks to Piotr Bajdek for the self-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.
- hackdose-sml-parser - automate generation of string and list types
- hackdose-sml-parser - add more obis codes
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
373 pull requests were merged in the last week
- add new tier-3 target
loongarch64
- add tier 3
no_std AArch64/x86_64
support for the QNX Neutrino RTOS - promote
{aarch64,i686,x86_64}-unknown-uefi
to Tier 2 - linker: refactoring and fixes to native library linking
- limit efiapi calling convention to supported arches
- implement the
+whole-archive
modifier forwasm-ld
- allow specialized const trait impls
- parser: recover from using colon as path separator in imports
- recover wrong-cased keywords that start items
- resolve: more detailed effective visibility tracking for imports
- emit error in
collecting_trait_impl_trait_tys
on mismatched signatures - fix auto-application of associated generic functions with placeholders
- suggest
is_some
when we've foundOption
but expectedbool
- suggest calling the instance method of the same name when method not found
- suggest removing unnecessary
.
to use a floating point literal - improve spans with
use crate::{self}
- tighten the 'introduce new binding' suggestion
- fix
rustc_parse_format
spans following escaped utf-8 multibyte chars - consider
#[must_use]
annotation onasync fn
as also affecting theFuture::Output
- better error message for HRTB error from generator interior
#[test]
: point at return type ifTermination
bound is unsatisfiedrustc_codegen_ssa
: better code generation for niche discriminants- add support for custom mir
- add the
#[derive_const]
attribute - delay
include_bytes
to AST lowering - don't normalize constants unless they need normalization
- resolve lifetimes independently for each item-like
- improve performance of
rem_euclid()
for signed integers - make
Sized
coinductive, again - make
Hash
,Hasher
andBuildHasher
#[const_trait]
and makeSip
constHasher
- const Compare for Tuples
- merge crossbeam-channel into
std::sync::mpsc
- specialize
iter::ArrayChunks::fold
for TrustedRandomAccess iterators - stabilize integer logarithms
- hashbrown:
rawTable::allocation_info
- backtrace: C/C++ module file and line number are not looked up: addr2line 0.18.0 fixes it
- impl
TryFrom<&[T]>
for Simd - detect CPU features with Linux methods on Android for non-Intel CPUs
- cargo: propagate change of artifact bin dep to its parent fingerprint
- rustdoc: fix missing reexports' doc comments
- rustdoc: use
ThinVec
andBox<str>
to shrinkclean::ItemKind
- bindgen: fix duplicated function names
- bindgen: fix inline function identification
- bindgen: handle the
const struct *
andstruct *
patterns - clippy:
fn_params_excessive_bools
Make it possible to allow the lint at the method level - clippy:
result_large_err
show largest variants in err msg - clippy: add
manual_is_ascii_check
lint - clippy: add
unnecessary_safety_doc
lint - clippy: Fix two
needless_borrow
false positives - clippy: avoid linting unsized mutable reference
- clippy: fix
explicit_auto_deref
false positives - clippy: fix
is_async_fn
to checkFnKind::Method
- clippy: fix
never_loop
false positive - clippy: fix
vec-box-size-threshold
off-by-one error - clippy: fix:
cognitive_complexity
for async fn - clippy: make
bool_to_int_with_if
a pedantic lint - clippy: make it clear that
or_fun_call
can be a false positive - rust-analyzer: nest Cargo.lock under Cargo.toml in Code
- rust-analyzer: fix
tt::Punct
's spacing calculation - rust-analyzer: add trait alias grammar to rust.ungram
- rust-analyzer: check visibility of each path segment
- rust-analyzer: fix hover in attributed items not preferring similar kinded tokens
- rust-analyzer: fix item completions not working properly after unit structs and outline modules
- rust-analyzer: fix panic when computing signature of generic
FnOnce
callable - rust-analyzer: fix r-a eagerly showing no discovered workspace errors
- rust-analyzer: send status notification if there are no found workspaces
- crates.io downloads: use
recent_downloads
asdownloads
if it is higher
Rust Compiler Performance Triage
A light week for triage. The biggest of the three regressions has a (hopeful) fix up already. The second biggest is a regression we are accepting for sake of correctness of incremental-compilation. The third regression is small and may well be removed as the type system internals are improved. max-rss seems stable.
Triage done by @pnkfelix. Revision range: 57d3c58e..96ddd32c
3 Regressions, 4 Improvements, 3 Mixed; 2 of them in rollups 40 artifact comparisons made in total
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:
- 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
- [disposition: merge] Restrictions
Tracking Issues & PRs
- [disposition: merge] Remove drop order twist of && and || and make them associative
- [disposition: merge] Unreserve braced enum variants in value namespace
New and Updated RFCs
Upcoming Events
Rusty Events between 2022-11-16 - 2022-12-14 🦀
Virtual
- 2022-11-16 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2022-11-17 | Virtual (Amsterdam, NL) | ITGilde Tech-Talks
- 2022-11-17 | Virtual (San Francisco, CA, US) | Data + AI Online Meetup
- 2022-11-17 | Virtual (San Francisco, CA, US) | WebAssembly North America
- 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-28 | Virtual | Rust Formal Methods Interest Group
- 2022-11-29 | Virtual (Dallas, TX, US) | Dallas Rust
- 2022-11-30 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
- 2022-11-30 | Virtual (Munich, DE) | Rust Munich
- 2022-12-01 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2022-12-06 | Virtual (Berlin, DE) | Berlin.rs
- 2022-12-06 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
- 2022-12-07 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2022-12-08 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2022-12-08 | Virtual (San Francisco, CA, US) | Data + AI Online Meetup
- 2022-12-10 | Virtual | Rust GameDev
- 2022-12-13 | Virtual (Rostock, DE) | Altow Academy
- 2022-12-13 | Virtual (Saarbrücken, DE) | Rust-Saar
- 2022-12-14 | Virtual (Boulder, CO, US) | Boulder Elixir and Rust
Asia
- 2022-11-22 | Tokyo, JP | Tokyo Rust Meetup
Europe
- 2022-11-16 | Paris, FR | Stockly
- 2022-11-22 | Karlsruhe, DE | Rust Hack & Learn Karlsruhe
- 2022-11-23 | Bratislava, SK | Bratislava Rust Meetup Group
- 2022-11-24 | København, DK | Copenhagen Rust Group
- 2022-11-28 | London, UK | Rust London User Group
- 2022-11-30 | Amsterdam, NL | Rust Nederland
- 2022-11-30 | Lille, FR | Rust Lille
- 2022-11-30 | Milan, IT | Rust Language Milano
- 2022-11-30 | Munich, DE + Virtual | Rust Munich
- 2022-12-01 | Edinburgh, UK | Rust Edinburgh
- 2022-12-07 | Zurich, CH | Rust Zurich
- 2022-12-12 | Enschede, NL | Dutch Rust Meetup
North America
- 2022-11-29 | Austin, TX, US | ATX Rustaceans
- 2022-12-08 | Columbus, OH, US | Columbus Rust Society
Oceania
- 2022-11-22 | Canberra, ACT, AU | Canberra Rust User Group
- 2022-11-24 | Brisbane, QLD, AU | Rust Brisbane
- 2022-12-08 | Melbourne, VIC, AU | Rust Melbourne
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
What you are essentially saying is: "Doctor, I'm writing C in Rust, and it hurts." To which the doctor will reply: "Then don't write C in Rust, and it won't hurt!"
– Árpád Goretity on rust-users
Thanks to Michael Bryan 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