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 Announces Cloud Compute Program
- Tag1 Joins the Rust Foundation as the First Silver Member
- Rust Foundation Taps Rebecca Rumbul as Executive Director & CEO
- Hello Everyone! How Can I Help?
Project/Tooling Updates
- Rust Analyzer Changelog #103
- SixtyFPS (GUI crate): Changelog for 14th of November 2021
- Mononym: Type-Level Named Values in Rust
- Quinn 0.8.0
- BonsaiDb November update: Working towards alpha 1
- This week in Databend #16: an elastic and reliable cloud warehouse
- This week in Fluvio #13: the programmable streaming platform
- Announcing
cargo-sonar
Observations/Thoughts
- 8 Ways to backdoor a crate in Rust for fun and profit
- Rust Adventures: Abusing Serde
- Rust Iterator Items: An exploration of syntax
- Async Cancellation I
- The Rust compiler has gotten faster again
- Learning Rust For Embedded Systems
- What is an async runtime?
- Top 10 Rust Cargo Commands
- [audio] Tokio Ecosystem with Alice Ryhl
- [series] [video] Flutter Backend using Rust - Flying High with Flutter #32
Rust Walkthroughs
- A Data Pipeline for Go Trains Delay Analysis — Part 2
- Monitoring Rust web application with Prometheus and Grafana
- Rust data structures with circular references
- Testing multiple implementations of a trait in Rust
- Introducing hRPC: a simple RPC system for user-facing APIs
- Rust on MIPS64 Windows NT 4.0
- How to get started with Rust for RISC-V Linux
- [ZH] Rust Reading Club Part 1
- [video] Rust Web Development - Warp Introduction (by example)
- [video] Getting started with opencv on Rust
- [series] [video] Getting started with Rust 🦀 2021: 8. Building a web app with Rust
- [series] [video] Writing a Programming Language (in Rust) 7: Function calls (Part 3)
Miscellaneous
- 1Password 8 arrives on Windows with a new design and big performance improvements
- [audio] Day0 Podcast - Rust in the Web? A Special Guest and some Bad Crypto
Crate of the Week
This week's crate is starship, a fast featureful customizable UNIX terminal prompt.
Thanks to matchai 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
273 pull requests were merged in the last week
- proc_macro: add an expand_expr method to TokenStream (literals only for now)
- type inference for inline consts
- add support for specifying multiple clobber_abi in
asm!
- LLVM: fix nondeterminism in debuginfo generation
- don't abort compilation after giving a lint error
- do not emit overlap errors for impls failing the orphan check
- implement diagnostic for
String
conversion - miri: detect uninitialized integers and floats
- re-enable
copy
(_nonoverlapping
) debug-checks - specialize array cloning for
Copy
types - replace
Copy
/Clone
compiler magic on arrays with library impls - optimize
BinaryHeap::extend
fromVec
- optimize
Eq
andHash
forPath
/PathBuf
- optimize pattern matching
- stabilize
const_raw_ptr_deref
for*const T
- stabilize format args capture
- extend the const swap feature
- don't destructure args tuple in
format_args!
- portable-simd: use new bitmask intrinsics with byte arrays
- portable-simd: add
Simd::from_slice
- portable-simd: rotate_{left,right} -> rotate_lanes_{left,right}
- clippy: add Clippy version to Clippy's lint list
- clippy: add minimum supported Rust version to
deprecated_cfg_attr
- clippy: fix
explicit_counter_loop
suggestion for non-usize
types - clippy: fix
semicolon_if_nothing_returned
FP onlet-else
stmts - clippy: fix suggestion for deref expressions in
redundant_pattern_matching
- clippy: lint for bool to integer casts in
cast_lossless
- clippy: make
let_underscore_lock
also detectparking_lot
locks - clippy: new lint
index_refutable_slice
to avoid slice indexing - clippy:
swap
lints now check if there isno_std
orno_core
attribute - clippy:
option_if_let_else
: don't expand macros in suggestion - rustup: optimization: parse manifest only once
Rust Compiler Performance Triage
A large amount of noise in the comparisons this week, likely due to new probabilistic query hash verification increasing likelihood of changes in each benchmark; solutions are being tracked in rustc-perf#1105.
Otherwise, though, the week largely amounted to a neutral one for performance. There were some regressions, particularly in doc builds, as a result of the addition of portable SIMD. These are relatively speaking minor and primarily impact small crates.
Triage done by @simulacrum. Revision range: eee8b9c7..934624f
5 Regressions, 2 Improvements, 6 Mixed; 2 of them in rollups
41 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] Add RFC float-next-up-down.
Tracking Issues & PRs
- [disposition: merge]
#![feature(maybe_uninit_extra,const_maybe_uninit_write)]
- [disposition: merge] Tracking Issue for const-initialized thread locals
- [disposition: merge] Tracking Issue for NonZeroUn::is_power_of_two (feature nonzero_is_power_of_two)
- [disposition: merge] Tracking issue for
#![feature(maybe_uninit_extra,const_maybe_uninit_write)]
New RFCs
Upcoming Events
Rusty Events between 11/17-12/01 🦀
Online
- 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 19, 2021, IR - The Second Rust Iran online meetup - Rust Iran Meetup
- November 20, 2021, RustFest Global 2021: Rust In Arts Edition - RustFest
- November 23, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs
- November 30, 2021, Dallas, TX, US - Last Tuesday - Dallas Rust
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
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
If a normal add is a waffle iron , SIMD add is a double or quadruple waffle iron. You can make 2 or 4 or more waffles at the same time.
In case of waffles it would be called SIMW: S ingle I ron, M ultiple W affles.
It's not multithreading - because you open and close the waffle iron for all the waffles at the same time.
Editors note: Do yourself a favor, click the link and read the whole thread, it's pure gold (chef's kiss).
Thanks to Stephan Sokolow 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