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
Project/Tooling Updates
- Aya: your tRusty eBPF companion
- This week in Fluvio #39: The programmable streaming platform
- This week in Fluvio #40: The programmable streaming platform
- Announcing Relm4 v0.5 beta
- rust-analyzer changelog #139
- IntelliJ Rust Changelog #175
- Fornjot (code-first CAD in Rust) - Weekly Release - 2022-W30
- Slint UI crate weekly updates
- HexoSynth 2022 - Devlog #6 - Workflow and Oscilloscope
- This week in Databend #52: A Modern Cloud Data Warehouse for Everyone
Observations/Thoughts
- How To Put 30 Languages Into 1.1MB
- Does Rust need proc-macros 2.0?
- The Ferrocene Language Specification is here!
- Fixing the Next Thousand Deadlocks: Why Buffered Streams Are Broken and How To Make Them Safer
- A performance retrospective using Rust (part 2)
- Introduction to WebAssembly and Rust
- A look at serde-json
- Impl Trait Parameters And Turbofish - Veetaha Website
- Console #115 - Interview with Jonathan of BonsaiDb
- [audio] Asynchronous Rust with Tyler Mandry
- [audio] Tauri with Daniel Thompson-Yvetot
Rust Walkthroughs
- Writing Linux Kernel Modules in Rust
- STM32F4 Embedded Rust at the HAL: Timer Ultrasonic Distance Measurement
- Move data out of closure
Crate of the Week
This week's crate is cargo-semver-checks, a CI-friendly tool to check your library's API.
Thanks to Predrag Gruevski and Matthias Beyer for the (self and other) nominations.
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.
- ockam - Make output node information and format consistent across
ockam node create | show | list
commands - ockam - Combine
ockam identity print
andockam identity export
into one commandockam identity show
- mirrord - Add e2e tests for a bash script
- mirrord - Add e2e sanity tests for Rails
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
397 pull requests were merged in the last week
- rustc_expand: switch
FxHashMap
toFxIndexMap
where iteration is used - proc_macro/bridge: stop using a remote object handle for proc_macro
Ident
andLiteral
- allow to disable thinLTO buffer to support lto-embed-bitcode lld feature
- allow
trait A: ~const B
- do not allow typeck children items to constrain outer RPITs
- do not resolve associated const when there is no provided value
- don't suggest unnameable generic arguments
- improve suggestions for
NonZeroT
<-T
coercion error - improve suggestions for returning binding
- add E0790 as more specific variant of E0283
- miri: add a scheme for always using the default toolchain, running clippy and fmt before running any other command
- miri: add a flag to print a diagnostic when an outdated value is returned from an atomic load
- support vec zero-alloc optimization for tuples and byte arrays
- add
PhantomData
marker for dropck toBTreeMap
- add
[f32]::sort_floats
and[f64]::sort_floats
- protect
std::io::Take::limit
from overflow inread
- fix
Skip::next
for non-fused inner iterators - stabilize
core::task::ready!
- add
IntoFuture::into_future
desugaring - futures: inline
WakerRef
functions - cargo-miri: support nextest
- cargo-miri: reorder
--target
to after the user-defined commands - cargo: stabilize workspace Inheritance
- docs.rs: add canonical URL for rustdoc pages
- clippy: add
arithmetic
lint - clippy: add
assertions_on_result_states
lint - clippy: check
assign_op_pattern
for conflicting borrows - clippy: check for
todo!
on every expression inSpanlessEq
- clippy: check macro statements in
non_copy_const
- clippy: don't lint
std_instead_of_core
onstd::env
- clippy: fix ICE in
miri_to_const
- clippy: fix ICE in
question_mark
- clippy: fix
useless_format
spans forformat!("{foo}")
- clippy: fix suggestion causing error for
needless_borrow
function in field - rust-analyzer: find original as node before compute ref match
- rust-analyzer: fix missing fields check on destructuring assignment
- rust-analyzer: fix: autocomplete for struct fields includes receiver
- rust-analyzer: fix: don't add braces to 'if' completion in match guard position
- rust-analyzer: fix error tooltip message for VSCode status bar item
- rust-analyzer: fix restart server duplicating language clients
- rust-analyzer: fix: work around Code bug with empty diagnostics
- rust-analyzer: don't replace default members' body
- rustc-perf: enable measuring stable compiler builds
Rust Compiler Performance Triage
Overall it was a mostly good week, with some very significant wins among the secondary benchmarks. Rollups continue to complicate triage process.
Triage done by @pnkfelix. Revision range: 8bd12e8c..50166d5e
Summary:
mean | max | count | |
---|---|---|---|
Regressions 😿 (primary) |
N/A | N/A | 0 |
Regressions 😿 (secondary) |
2.2% | 3.2% | 6 |
Improvements 🎉 (primary) |
-1.8% | -21.2% | 199 |
Improvements 🎉 (secondary) |
-2.6% | -9.0% | 124 |
All 😿🎉 (primary) | -1.8% | -21.2% | 199 |
5 Regressions, 4 Improvements, 4 Mixed; 4 of them in rollups 61 artifact comparisons made in total
Full report here
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
- No RFCs entered Final Comment Period this week.
Tracking Issues & PRs
- [disposition: merge] Tracking Issue for ptr_const_cast
New and Updated RFCs
Upcoming Events
Rusty Events between 2022-07-27 - 2022-08-24 🦀
Virtual
- 2022-07-27 | Virtual (Cardiff, UK) | Rust and C++ Cardiff
- 2022-07-28 | Virtual (Linz, AT) | Rust Linz
- 2022-07-29 | Virtual (Minneapolis, MN, US) | Minneapolis Rust Meetup
- 2022-07-31 | Virtual (Seattle, WA, US) | Seattle Rust Meetup
- 2022-08-02 | Virtual (Berlin, DE) | Berline.rs
- 2022-08-02 | Virtual (Buffalo, NY, US) | Buffalo Rust Meetup
- 2022-08-03 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2022-08-03 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
- 2022-08-05 | Virtual + Portland, OR, US | RustConf
- 2022-08-09 | Virtual (Dallas, TX, US) | Dallas Rust
- 2022-08-10 | Virtual (Boulder, CO, US) | Boulder Elixir and Rust
- 2022-08-11 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2022-08-12 | Virtual + Tokyo, JP | tonari
- 2022-08-13 | Virtual | Rust Gamedev
- 2022-08-16 | Virtual (Washington, DC, US) | Rust DC
- 2022-08-17 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2022-08-18 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2022-08-18 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
- 2022-08-24 | Virtual + Wellington, NZ | Rust Wellington
Asia
- 2022-08-12 | Tokyo, JP + Virtual | tonari
Europe
- 2022-07-27 | Amsterdam, NL | Rust Developers Amsterdam Group
- 2022-07-28 | Copenhagen, DK | Copenhagen Rust Group
- 2022-07-28 | Oslo, NO | Rust Oslo
- 2022-08-02 | London, UK | Rust London User Group
North America
- 2022-07-27 | Austin, TX, US | Rust ATX
- 2022-08-05 | Portland, OR, US + Virtual | RustConf
- 2022-08-06 | Portland, OR, US | Rust Project Teams
- 2022-08-10 | Atlanta, GA, US | Rust Atlanta
- 2022-08-11 | Columbus, IL | Columbus Rust Society
- 2022-08-16 | San Francisco, CA, US | San Francisco Rust Study Group
- 2022-08-23 | Toronto, ON, CA | Rust Toronto
Oceania
- 2022-07-28 | Brisbane, QLD, AU | Rust Brisbane
- 2022-08-24 | Wellington, NZ + Virtual | Rust Wellington
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
JuSt Be CaReFuL
If there’s one lesson from decades of software engineering, it is the failure of “just be careful” as a strategy. C/C++ programmers still experience memory corruption constantly, no matter how careful they are. Java programmers still frequently see NullPointerExceptions, no matter how careful they are. And so on. One of the reasons that Rust is so successful is that it adds automated checks to prevent many common mistakes.
Thanks to robin 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