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
Newsletters
Project/Tooling Updates
- Tauri 1.0 Release
- Lyon 1.0
- rust-analyzer changelog #137
- IntelliJ Rust Changelog #174
- rustc_codegen_gcc: Progress Report #13
- Accouncing Fornjot 0.7 (code-first CAD in Rust)
- Announcing Experimental Rust Filesystem and Path Support for Xous PDDB!
- This week in Fluvio #38: The programmable streaming platform
- HexoSynth (modular synthesizer) - Devlog #4 - The Tracker Sequencer is Back
- Slint UI crate weekly updates
- Black Hat Rust updated for Rust 1.62 (and announcing the online course)
- This week in Databend #50: A Modern Cloud Data Warehouse for Everyone
Observations/Thoughts
- Announcement: Rust-Edu
- A Pleasing Symmetry in Rust — Sympolymathesy, by Chris Krycho
- Unsafe Syntax
- Almost Rules
- Pitfalls of fallible Iterators
- Minimalist Guide to Poem
- [audio] High Assurance Rust with Tiemoko Ballo
- [ZH] [audio] 004. 与迟先生聊 Rust 与数据库系统
Rust Walkthroughs
- Procedural macros under the hood: Part II | The IntelliJ Rust Blog
- Bare-Metal Rust on ESP32: A Brief Overview
- A Rust app in a Cloudflare Worker
- Runtime errors: Come again? Rust macros to the rescue
- Using the Kani Rust Verifier on a Firecracker Example
- [video] How AWS is building the Rust SDK and how you can use it today - Zelda Hessler
- [video] Constant fun (const fn) with Rust - Rainer Stropek
Research
Miscellaneous
Crate of the Week
This week's crate is shame, a shader EDSL for writing render and compute pipelines in rust.
Thanks to Zicklag 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
363 pull requests were merged in the last week
- implement support for DWARF version 5
- sess: stabilize
-Zterminal-width
as--diagnostic-width
- macros:
LintDiagnostic
derive - proc_macro: fix
expand_expr
expansion ofbool
literals - shorten
def_span
of closures to just their header - improve spans for specialization error
- do not mention private types from other crates as impl candidates
- adjust dangling-int-ptr error message
- highlight conflicting param-env candidates
- suggest
#[derive(Default)]
to enums with#[default]
- suggest using block for
extern "abi" fn
with no body - suggest adding a derive for
#[default]
applied to variants - fix "wrap closure in parenthesis" suggestion for
async
closure - don't succeed
evaluate_obligation
query if new opaque types were registered - lints: mostly translatable diagnostics
- deny float const params even when
adt_const_params
is enabled - allow arithmetic and certain bitwise ops on
AtomicPtr
- more
need_type_info
improvements - miri: handle
Box
with allocators - improve soundness of
rustc_arena
- fix
ProjectionElem
validation - compilation speed optimization for
pest-2.1.3
- use less string interning
- more derive output improvements
- implement
SourceMap::is_span_accessible
- use a bitset instead of a hash map in HIR ID validator
- miscellaneous inlining improvements
- partially stabilize
const_slice_from_raw_parts
- return a
FxIndexSet
inis_late_bound
query - split
TypeVisitable
fromTypeFoldable
- implement
ExitCodeExt
for Windows - implement
FusedIterator
forstd::net::
(Into
)Incoming
- Windows: fallback for overlapped I/O
- stabilize
into_future
- futures: add
push_front
andpush_back
toFuturesOrdered
- regex: add
ExactSizeIterator
toSubCaptureMatches
- cargo: fix corrupted git checkout recovery
- cargo: fix publishing to crates.io with
-Z sparse-registry
- cargo: add a cache for discovered workspace roots
- rustdoc: add more semantic information to impl IDs
- rustdoc: filter
'_
lifetimes fromty::Generics
- clippy: allow
let_unit_value
in more cases - clippy: extend
unnecessary_lazy_eval
to coverbool::then
->bool::then_some
- clippy: fix ICE in
sugg::DerefDelegate
with (named) closures - clippy: fix
needless_borrow
changing called trait impls on method receivers - clippy: fix
undocumented_unsafe_blocks
in closures - clippy: fix span for
or_fun_call
- clippy: ignore
into_iter
insignificant_drop_in_scrutinee
- clippy: lint
shadow_*
lints in anon const blocks - clippy: lint simple expressions in
manual_filter_map
,manual_find_map
- clippy: maybe trait bound on type repetition
- rust-analyzer: complete type param/associated type in trait generic arg per arg index
- rust-analyzer: implement
ignore
andindex
metavar expression - rust-analyzer: extract Function misses locals used in closures
- rust-analyzer: extract function from trait impl
- rust-analyzer: improve suggested names for extracted variables
- rust-analyzer: use
SmallVec
to slightly shrinkModPath
size
Rust Compiler Performance Triage
A fairly noisy week (many entries below dropped and untagged as regressions), largely driven by tt-muncher and html5ever. Our sensitivity assessment currently takes roughly a week since new noise starts to learn the noise level, so it can take some time for oscillations to stop reporting somewhat spurious results.
Otherwise, this week had a number of solid improvements, and was overall positive, with improvements across many benchmarks.
Triage done by @simulacrum. Revision range: 880646c..b3f4c3
3 Regressions, 6 Improvements, 3 Mixed; 3 of them in rollups 53 artifact comparisons made in total
For details, see the full report.
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
- No RFCs entered Final Comment Period this week.
Tracking Issues & PRs
- [disposition: merge] Stabilize Windows
FileTypeExt
with is_symlink_dir
and is_symlink_file
- [disposition: merge?] Implement
TryFrom<&OsStr>
for&str
- [disposition: merge] Tracking Issue for core::task::ready! macro
New and Updated RFCs
Upcoming Events
Rusty Events between 2022-07-13 - 2022-08-10 🦀
Virtual
- 2022-07-13 | Boulder, CO, US | Boulder Elixir and Rust
- 2022-07-13 | Malaysia, MY | Rust Malaysia Meetup
- 2022-07-14 | Nürnberg, DE | Rust Nurnberg DE
- 2022-07-14 | San Diego, CA, US | San Diego Rust
- 2022-07-16 | Vancouver, BC, CA | Vancouver Rust
- 2022-07-19 | Sydney, NSW, AU | Rust Australia
- 2022-07-19 | Washington, DC, US | Rust DC
- 2022-07-20 | Cardiff, UK | Rust and C++ Cardiff
- 2022-07-21 | Stuttgart, DE | Rust Community Stuttgart
- 2022-07-26 | Dallas, TX, US | Dallas Rust
- 2022-07-27 | Cardiff, UK | Rust and C++ Cardiff
- 2022-07-29 | Minneapolis, MN, US | Minneapolis Rust Meetup
- 2022-07-31 | Seattle, WA, US | Seattle Rust Meetup
- 2022-08-02 | Buffalo, NY, US | Buffalo Rust Meetup
- 2022-08-03 | Indianapolis, IN, US | Indy Rust
- 2022-08-03 | Stuttgart, DE | Rust Community Stuttgart
Europe
- 2022-07-20 | Wrocław, PL | Rust Warsaw
- 2022-07-21 | Wrocław, PL | Rust Wrocław
- 2022-06-22 | Amsterdam, NL | Rust Developers Amsterdam Group
North America
- 2022-07-13 | Atlanta, GA, US | Rust Atlanta
- 2022-07-13 | Austin, TX, US | Rust ATX
- 2022-07-14 | Columbus, IL | Columbus Rust Society
- 2022-07-19 | San Francisco, CA, US | San Francisco Rust Study Group
- 2022-07-26 | Austin, TX, US | ATX Rustaceans
- 2022-08-10 | Atlanta, GA, US | Rust Atlanta
Oceania
- 2022-07-19 | Phillip, ACT, AU | Canberra Rust User Group
- 2022-07-28 | Brisbane, QLD, AU | Rust Brisbane
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
Learning Rust has taught me something - "There are really no problems, just adventure and opportunities"
– Adeoye Adefemi on rust-users
Thanks to Adeoye Adefemi and Anton Fetisov for the suggestion as well as Christopher Durham for the leniency.
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