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
- spa 0.3.0 release
- An update on rust/coreutils
- This week in Fluvio #20: the programmable streaming platform
- SixtyFPS (GUI crate): Changelog for 30th of January 2022
- Fornjot 0.5.0 - Code-CAD in Rust
- BonsaiDb January update: Alpha Next Week
- rustc_codegen_gcc: Progress Report #8
- Rust Analyzer Changelog #114
- IntelliJ Rust Changelog #164
- This week in Databend #27: an elastic and reliable cloud warehouse
Newsletters
Research
Observations/Thoughts
- A new phase for the Rustc Reading Club
- The 9 indispensable features to learn for the new Rust programmer
- Uninitialized Memory: Unsafe Rust is Too Hard
- Part 2: Improving crypto code in Rust using LLVM’s optnone
- Writing the fastest GBDT library in Rust
- Async Rust vs RTOS showdown!
- Panics vs cancellation, part 1
- Rust extension traits, greppability and IDEs
- The Curious Absence of Lifetimes
- Rust has a small standard library (and that's ok)
- Curl with Rust
- [audio] Frontmatter Podcast: Matt Provost, Author of Rust From the Ground Up
Rust Walkthroughs
- How Rust helped me power through my C assignments
- (Basic) Segment Trees with beautiful diagrams!
- Sneak preview: Writing Ruby gem native extensions in Rust
- [DE] Ferris Talk #5: Tokio als asynchrone Laufzeitumgebung ist ein Fast-Alleskönner
- [audio] zbus with Zeeshan Ali
- [video] Rust Linz, January '22 - Error Handling in Rust - A Pragmatic Approach by Luca Palmieri
- [series] [video] Writing a Programming Language (in Rust) 13: Object Destructuring (Part 2) and Fixing Recursion
- [series] [video] Writing a Programming Language (in Rust) 14: Compiler Resources and Function Argument Destructuring
Miscellaneous
- Async Rust: What is a runtime? Here is how tokio works under the hood
- Implementation of CIDR routing table in Rust
- How Prime Video updates its app for more than 8,000 device types
- Building and Deploying a Rust library on iOS
- My new deployment workflow using AWS SDK for Rust
- Meilisearch raises a $5M Seed to change the world of user-facing search
- Sequoia-PGP: Looking for SQ stakeholders
- Hello, Microcontroller!
- Ferrous Systems and AdaCore to join forces on Ferrocene
- AdaCore and Ferrous Systems joining forces to support Rust
- [audio] Podcast RustTalk 001. 与 Folyd 聊他的 Rust 使用经历
Crate of the Week
This week we have two crates: update-informer, a library to embed an update check into your CLI project and blake3, a fast cryptographic hash function.
Thanks to Grachev Mikhail and Zac Burns for the suggestions!
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
327 pull requests were merged in the last week
- LLVM: cherry-pick different fix for AArch64 truncating FP stores
- allow eliding GATs in expression position
- fix debuginfo for pointers/references to unsized types
- add note suggesting that predicate may be satisfied, but is not
const
- ignore unwinding edges when checking for unconditional recursion
- don't suggest inaccessible fields
- implement stable overlap check considering negative traits
- improve selection errors for
~const
trait bounds - improve suggestion for escaping reserved keywords
- suggest tuple-parentheses for enum variants
- fix the unsoundness in the
early_otherwise_branch
mir opt pass - store
def_id_to_hir_id
as variant in hir_owner - store
hir_id_to_def_id
in OwnerInfo - use
indexmap
to avoid sortingLocalDefId
s - codegen_gcc: correctly import foreign statics
- codegen_gcc: support
-Zfunction-sections
- codegen_gcc: support 128-bit integers on platforms without native support
- codegen_gcc: support upgrading the alignment of a global variable
- accommodate yield points in the
format_args
expansion - add
Simd::cast
- add
intrinsics::const_deallocate
- add
os::unix::net::SocketAddr::from_path
- make
NonNull::new
const
- make
char::DecodeUtf16::size_hist
more precise - improve
Duration::try_from_secs_f32
/64
accuracy by directly processing exponent and mantissa - cargo: add bash completion for
cargo clippy
- cargo: do not ignore
--features
when--all-features
is present - clippy: add
default_union_representation
lint - clippy: don't lint
ptr_arg
for&mut _
types in trait items - clippy: fix underflow in
manual_split_once
lint - clippy: fix bad suggestion on
numeric_literal
- clippy:
single_match
: don't lint non-exhaustive matches; support tuples
Rust Compiler Performance Triage
This was a relatively quiet week with regressions and improvements relatively equally each other out. The big exception is with a somewhat large regression in rustdoc which was needed for a large and important architectural change. This could lead to users see somewhat slower doc build times with more memory used especially in projects with large crate dependency graphs.
Triage done by @rylev. Revision range: c54dfee..1ea4851
2 Regressions, 4 Improvements, 2 Mixed; 1 of them in rollups 35 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] Rename
FilenameTooLong
toFilenameInvalid
and also use it for Windows'ERROR_INVALID_NAME
- [disposition: merge] Add
From<u8>
forExitCode
- [disposition: merge] Stabilise std::is_aarch64_feature_detected
- [disposition: merge] Impl {Add,Sub,Mul,Div,Rem,BitXor,BitOr,BitAnd}Assign<$t> for Wrapping<$t> for rust 1.61.0
- [disposition: merge] Tracking Issue for
int_abs_diff
- [disposition: merge] Tracking Issue for total_cmp (on f32/f64)
- [disposition: close] Stabilize allow_fail test flag
New and Updated RFCs
Upcoming Events
Rusty Events between 2/2/2022 - 3/2/2022 🦀
Online
- February 3, 2022 | Cardiff, UK | Rust Book Study Session - Smart Pointers | Rust and C++ Cardiff
- February 5 & 6, 2022 | Kyiv, UA | Write a Game on Rust | Rust Ukraine
- February 8, 2022 | Saarbrücken, DE | Meetup: 17u16 | Rust-Saar
- February 8, 2022 | Seattle, WA, US | Monthly meetup | Seattle Rust Meetup
- February 9, 2022 | Los Angeles, CA, US | Raphael Tessmer & Celeste, finding craters on a rusty planet (Virtual) | Rust Los Angeles
- February 9, 2022 | Stuttgart, DE | Rust-Meetup | Rust Community Stuttgart
- February 15, 2022 | Indianapolis, IN, US | Indy.rs - with Social Distancing | Indy Rust
- February 15, 2022 | Washington, DC, US| Mid-month Rustful | Rust DC
- February 16, 2022 | Vancouver, BC, CA | Rust Study/Hack/Hang-out Night | Vancouver Rust
- February 17, 2022 | München, DE | Rust - beyond "Hello World"| Agile Softwareentwicklung München
- February 17, 2022 | Nürnberg, DE | Rust Nürnberg online #10| Rust Nuremberg
- February 17, 2022 | Stuttgart, DE | Rust-Meetup | Rust Community Stuttgart
- February 17, 2022 | Würzburg, DE | Meet and chat about Rust | Rust Würzburg Meetup Group
- February 22, 2022 | Dublin, IE | Rust Dublin February Meetup - Rust Dublin
- February 24, 2022 | Linz, AT | Rust Meetup Linz - 19th Edition | Rust Linz
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
Svix
Tangram
Polar Sync
LoanPASS
Stockly
Kraken
- Engineering Manager - Rust - Core Backend
- Rust Engineer, Desktop GUI - Cryptowatch
- Site Reliability Engineer - Rust - Core Backend
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
impl Not for !
(did you guess that "not never" is still "never"?)
Thanks to scottmcm 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