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 #126
- IntelliJ Rust Changelog #169
- Slint (UI crate) weekly update
- Hello, Robyn!
- gitoxide - Rich repository information & blazingly fast clone-checkouts
- This week in Databend #39: A Modern Cloud Data Warehouse for Everyone
- This week in Fluvio #30: the programmable streaming platform
- Rust9x: Compile Rust code for Windows 95, NT and above
Observations/Thoughts
- What a better Rust would look like
- A little fixed point math for embedded audio
- Indirect ownership, shallow borrow and self-referential data structures
- Rust traits and dependency injection
- What is raw identifier in rust?
- How hard upgrading a Rust JWT library could be?
- The magic of AsRef
Rust Walkthroughs
- Building a crawler in Rust: Implementing the crawler
- DevLog[0]: Building a serverless platform for Rust in 4 weeks
- Unlocking greater performance in the MongoDB Rust Driver via raw BSON and zero copy deserialization
Research
Miscellaneous
- [audio] clap with Ed Page :: Rustacean Station
- [DE] Ferris Talk #8: Wasm loves Rust – WebAssembly und Rust jenseits des Browsers
Crate of the Week
This week's crate is czkawka, a GTK-based duplicate finder.
Despite a lack of nominations, llogiq is pleased with his pick.
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.
- diesel - looking for feedback on 2.0 release candidate, help updating existing guides to new release
- plotters is looking for new maintainers
- config-rs - Re-thinking config-rs
- ruma - several help wanted issues
- matrix-rust-sdk - several help wanted issues
- include_dir - Compression
- include_dir - Exclude files matching a pattern
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
278 pull requests were merged in the last week
- debuginfo: emit ZST struct debuginfo for unit type when CPP-like debuginfo is enabled
- better error message for
_
in function signature inimpl Trait for Ty
- fix an invalid error for a suggestion to add a slice in pattern-matching
- improve span for
consider adding an explicit lifetime bound
suggestions under NLL - improve diagnostic on failure to meet send bound on future in a foreign crate
- make the lifetime accurate which is used in the region constraints part
- miri: allow to track multiple alloc-ids, call-ids and pointer tags
- miri: do not consider thread-local allocations read-only
- interpret: fix writing uninit to an allocation
- micro-optimize
ty::relate::relate_substs
by avoidingmatch
- optimize
const_prop
mir-opt by accessinglocal_decls
throughecx
- remove visibility information from HIR
- speed up
TokenCursor
alloc
: makevec!
unavailable underno_global_oom_handling
- unstably constify
impl<I: Iterator> IntoIterator for I
- add
as_slice
to slice iterator - improve Windows path prefix parsing
- reduce allocations for path conversions on Windows
- futures: create
copy_buf_abortable
, which enables to stop copying in the middle - codegen_gcc: don't emit
.intel_syntax
for non-x86 targets - cargo: prefer
key.workspace = true
tokey = { workspace = true }
- rustdoc: optimize
IdMap
- rustdoc: optimize and refactor doc link resolution
- rustdoc: resolve some more doc links early
- rustdoc: unindent doc fragments on
Attributes
construction - rustdoc: make primitive synthetic impls for correct doc module
- clippy: add
large_include_file
lint - clippy: add macro export exemption to
redundant_pub_crate
- clippy: fix missing whitespace in
collapsible_else_if
suggestion - clippy: fix
needless_match
false positive for if-let when the else block doesn't match to given expr - clippy: new lint bytes count to len
- clippy:
manual_split_once
: lint manual iteration ofSplitN
- clippy: add
empty_drop
- clippy:
mistyped_literal_suffix
: improve integer suggestions, avoid wrong float suggestions - clippy:
wrong_self_convention
allowsis_*
to take&mut self
- rust-analyzer: fix const generic panic in
dyn trait
- rust-analyzer: reduce priority of
flyimport
completions - rust-analyzer: restart proc-macro client when server reload
- rust-analyzer: display signature help when applying "Add
::<>
" assist - rust-analyzer: prefer core/alloc over std in auto-imports if
#[no_std]
is conditional - rust-analyzer: improve parameter completion
- rust-analyzer: index the correct
CargoWorkspace
withrustc_private
Rust Compiler Performance Triage
This was, in general, a positive week for compiler performance. There were many concentrated efforts on improving rustdoc performance with a lot of real world crates showing ~4-7% improvements in full build times. Additionally, there was further improvement to macro_rules!
performance with many real world crates improving performance by as much as 18% in full builds! On the other hand, the regressions were mostly minor and largely relegated to secondary benchmarks.
Triage done by @rylev. Revision range: 4ca19e0..1c988cf
4 Regressions, 6 Improvements, 3 Mixed; 1 of them in rollups 45 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:
- 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] Make EncodeWide implement FusedIterator
- [disposition: merge] Enforce Copy bounds for repeat elements while considering lifetimes
- [disposition: merge] Remove mutable_borrow_reservation_conflict lint and allow the code pattern
- [disposition: merge] Implement str to [u8] conversion for refcounted containers
- [disposition: merge] Stabilize
$$
and${ignore}
in Rust 1.62.0
New and Updated RFCs
- No New or Updated RFCs were created this week.
Upcoming Events
Rusty Events between 2022-04-27 - 2022-05-25 🦀
Virtual
- 2022-04-27 | Stuttgart, DE | Rust Community Stuttgart
- 2022-04-28 | Linz, AU | Rust Linz
- 2022-05-02 | Philadelphia, PA, US | Rust Philly (Rust Philadelphia)
- 2022-05-03 | Austin, TX, US | WebAssembly and WasmEdge
- 2022-05-03 | Beijing, CN | WebAssembly and Rust Meetup (Rustlang)
- 2022-05-03 | Buffalo, NY, US | Buffalo Rust Meetup
- 2022-05-04 | Indianapolis, IN, US | Indy Rust
- 2022-05-04 | Philadelphia, PA, US | Rust Philly (Rust Philadelphia)
- 2022-05-05 | Charlottesville, VA, US | Charlottesville Rust Meetup
- 2022-05-09 | Philadelphia, PA, US | Rust Philly (Rust Philadelphia)
- 2022-05-10 | Berlin, DE | OpenTechSchool Berlin
- 2022-05-10 | Dallas, TX, US | Dallas Rust
- 2022-05-10 | Rostock, DE | Altow Academy
- 2022-05-10 | Saarbrücken, DE | Rust-Saar
- 2022-05-10 | Seattle, WA, US | Seattle Rust Meetup
- 2022-05-11 | Malaysia, MY | Rust Malaysia Meetup
- 2022-05-11 | Boulder, CO, US | Boulder Elixir and Rust
- 2022-05-12 | Nürnberg, DE | Rust Nurnberg DE
- 2022-05-12 | Stuttgart, DE | Rust Community Stuttgart
- 2022-05-17 | Washington, DC, US | Rust DC
- 2022-05-18 | Vancouver, BC, CA | Vancouver Rust
- 2022-05-24 | Berlin, DE | OpenTechSchool Berlin
North America
- 2022-04-27 | Boston, MA, US | Boston Rust Meetup
- 2022-04-27 | Mesa, AZ, US | Desert Rust
- 2022-04-27 | New York, NY, US | Rust NYC
- 2022-05-11 | Atlanta, GA, US | Rust ATL
- 2022-05-12 | Columbus, OH, US | Columbus Rust Society
- 2022-05-17 | San Francisco, CA, US | San Francisco Rust Study Group
Europe
- 2022-04-28 | Manchester, UK | Rust Manchester
- 2022-05-06 | Zurich, CH | Rust Zurich
- 2022-05-09 | Helsinki, FI | Finland Rust Meetup
- 2022-05-19 & 05-20 | Berlin, DE | Entwickler.de
- 2022-05-24 | Amsterdam, NL | Rust Developers Amsterdam 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.
Rust Jobs
Element
Bytewax
Cambrian Works
HashCloak
NXLog
Zcash Foundation
RDX Works
KidsLoop
Stockly
- Back-end developer - Engine (Rust, gRPC, PostgreSQL) (Paris, FR)
- Back-end developer (Rust, gRPC, PostgreSQL) (Paris, FR)
Enso
Kraken
- Backend Engineer, Kraken Futures - Rust (Remote)
- Engineering Manager - Rust - Core Backend (Remote)
- Senior Rust Engineer - Banking (Remote)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
This is the most fundamental philosophy of both the Rust language and the Rust project: we don't think it's sufficient to build robust systems by only including people who don't make mistakes; we think it's better to provide tooling and process to catch and prevent mistakes.
– Jane Lusby on the inside Rust blog
Thanks to farnbams 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.
Email list hosting is sponsored by The Rust Foundation