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
Foundation
Project/Tooling Updates
- SixtyFPS (GUI crate): Changelog for 7th of November 2021
- Rust Analyzer Changelog #102
- Intellij Rust Changelog #159
- This week in Fluvio #12: the programmable streaming platform
- This week in Databend #15: an elastic and reliable cloud warehouse
- Knurling toolset v0.3.0 has been released!
Newsletter
Observations/Thoughts
- Benchmarking symmetric encryption (AEAD) in Rust
- View types for Rust
- What Memory Model Should the Rust Language Use?
- C++ Move Semantics Considered Harmful (Rust is better)
- It's Time to Get Hyped About Const Generics in Rust
- Automating Ember releases with Rust
- Breakout: optimizing rust+WASM
- How we extended Helm lifecycle with Rust
Rust Walkthroughs
- Run Your Rust Games in a Browser: Hands-on Rust Bonus Content
- Building My First Command Line Interface (CLI) with Rust
- Making My Website Part 2: The Webserver
- Debugging Rust application inside linux container
- Plugins in Rust: Reducing the Pain with Dependencies
- Discover Hidden Secrets in Git Repos with Rust
- Prepare your Rust API docs for Github Pages
- Using KI18n with Rust and Qml
- Self Referential Structs in Rust
- [series] [video] Rust Book Club #5: Structs!
- [video] Rust Programming - Full 59-Second Course for Beginners
- [video] Causing problems with Rust traits (then fixing them)
- [audio] Hyper with Sean McArthur
- [series][video] Writing a Programming Language (in Rust) 6: Function calls (Part 2)
- [series][video] Writing a Programming Language (in Rust) Extra 6.1: Fixing Environment Lookups
Miscellaneous
Crate of the Week
This week's crate is chumsky, a friendly parser combinator crate.
Thanks to Jan Riemer 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.
- ockam - Renumber WebSocket transport type from 2 to 3
- ockam - Use Zeroize for temporary sensitive data
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
296 pull requests were merged in the last week
- improve error when an
.rlib
can't be parsed - implementation of GATs outlives lint
- add beginner friendly lifetime elision hint to E0623
- add
JoinHandle::is_running
- suggest
extern crate alloc
when using undeclared modulealloc
- suggest dereference of
Box
when inner type is expected - stabilize
relaxed_struct_unsize
- optimize bidi character detection.
- implement
RefUnwindSafe
forRc<T>
- make
std::thread::available_concurrency
support process-limited number of CPUs - hashbrown: implement From\<array> on HashSet and HashMap
- cargo: fix debug panic on download with redirect body.
- clippy: add
cargo dev lint
to manually run clippy on a file - clippy: add suggestion to missing backticks error
- clippy: advise to put a
::
prefix inside the ticks - clippy: fix panics while parsing format string that uses named arg twice
- clippy: fix ICE in
undocumented_unsafe_blocks
- clippy: fix false negative in
match_overlapping_arms
- clippy: fix
manual_assert
andmatch_wild_err_arm
for#![no_std]
and Rust 2021 - clippy: move
non_ascii_literal
to restriction - clippy: prevent
clippy::needless_lifetimes
false positive in async function definition - clippy: unseparated literal suffix
- clippy: use .cargo/config.toml instead of .cargo/config
- clippy: avoid linting
possible_truncation
on bit-reducing operations - rustfmt: put empty trait braces on same line if possible
- rustfmt: dedupe and simplify type alias formatting
- rustfmt: dedupe associated item visitation
- rustfmt: handle external mods imported via external → inline load hierarchy
Rust Compiler Performance Triage
Largely a positive week despite taking a significant performance hit from turning on incremental compilation verification for a subsection of the total queries that the compiler does in order to more quickly catch bugs in incremental compilation. Luckily optimizations in bidi detection brought large performance improvements.
Triage done by @rylev. Revision range: 6384dc..eee8b
2 Regressions, 4 Improvements, 4 Mixed; 1 of them in rollups 45 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
- [disposition: merge] Cargo --crate-type CLI Argument
- [disposition: merge] Static async fn in traits
Tracking Issues & PRs
- [disposition: merge] stabilize format args capture
- [disposition: merge] Stabilize -Z symbol-mangling-version=v0 as -C symbol-mangling-version=v0
- [disposition: merge] Stabilize -Z strip as -C strip
New RFCs
Upcoming Events
Rusty Events between 11/10-11/24 🦀
Online
- November 10, 2021, Boulder, CO, US - Monthly Meetup - Boulder Elixir and Rust
- November 10, 2021, Malaysia - Rust Meetup - Rust Malaysia
- November 10, 2021, Los Angeles, CA, US - Rust Los Angeles: Live Coding Session - Mob Programming a Rust Code Kata
- November 11, 2021 - Rust For Linux: Writing Safe Abstractions & Drivers - The Linux Foundation
- November 16, 2021 - The Rust Foundation Ask Me Anything (AMA) - Rust Foundation
- November 17, 2021, Vancouver, BC, CA - Borrowing and Lifetimes through Metaphors - Vancouver Rust
- November 17, 2021, Houston, TX, US - A Functional Introduction to Rust - Houston Functional Programming User Group
- November 17, 2021, Los Angeles, CA, US - Live Coding Session: Mob Programming a Rust Code Kata - Rust Los Angeles
- November 23, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs
North America
- November 10, 2021, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta
- November 10, 2021, Mesa, AZ, US - Booze.rs - Desert Rust
Europe
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
CoScreen
Polar Sync
Tangram
Toposware
Kraken
- Backend Engineer - Rust - Core Backend (Remote)
- Backend Engineer, Kraken Futures - Rust (Remote)
- Senior Rust Engineer - Banking (Remote)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
And even if you could fix all of rustc's soundness holes, or otherwise prevent user code from exploiting them, a soundness bug in any third-party library can also make it possible for malicious crates to trigger arbitrary behavior from safe code.
[...]
This is why we need to emphasize that while Rust's static analyses are very good at limiting accidental vulnerabilties in non-malicious code, they are not a sandbox system that can place meaningful limits on malicious code.
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, marriannegoldin.
Email list hosting is sponsored by The Rust Foundation