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
Project/Tooling Updates
- IntelliJ Rust Changelog #163
- Rust Analyzer Changelog #112
- SixtyFPS (GUI crate): Changelog for 16th of January 2022
- Announcing Parcel CSS
- Announcing the sd-notify crate
- gtk-rs 0.15 / gtk4-rs 0.4 release
- Announcing Relm4 0.4
- Quickwit 0.2 brings full-text search to ClickHouse and Kafka!
- Introducing the new DNSimple Rust Client
- This week in Databend #25: an elastic and reliable cloud warehouse
- Benchmarking relational data in BonsaiDb
- [DE] Programmiersprache: Rust 1.58 erweitert Format-Strings und verschmälert den Pfad
Observations/Thoughts
- Async Rust in Practice: Performance, Pitfalls, Profiling
- Format Strings in Rust 1.58
- Making Your Game Go Fast by Asking Windows Nicely
- Binary Tree Insertion in Rust
- Investigating Memory Allocations in Rust
- Using Rustlang’s Async Tokio Runtime for CPU-Bound Tasks
- Digital Audio Synthesizer in Rust
- A path towards stable generic const expressions
- Six Nice Things About Rust
Rust Walkthroughs
- Tutorial: Writing a Tiny Rust Game Engine for Web
- Mapping my walks with OSRM and Rust
- Create a desktop app in Rust using Tauri and Yew
- Fast access to regional AWS endpoints from Cloudflare Workers
- How to securely encrypt a file with an insecure password in Rust (using Streaming Encryption + Argon2)
- [video] I'm learning Rust - Cargo, documentation, user input, and JSON files
- [video] Implementing Hazard Pointers in Rust (part 4/4)
- [series] [video] Writing a Programming Language (in Rust) 10: Implementing Objects
- [series] [video] Writing a Programming Language (in Rust) 11: Object Destructuring (Part 1)
Miscellaneous
- Creating social sharing images in Rust
- Writing a Fluent Bit input plugin in Rust
- The 10 books that helped me, as a hobbyist, on my journey to learn Rust to re-code a Django application
- Rewriting my toy blockchain in Rust
- Rust on Apache NuttX OS
- An implementation of the NTFS filesystem in a Rust crate
- [audio] Lumen with Paul Schoenfelder
Crate of the Week
This week's crate is cargo-release, a cargo subcommand that makes every crate release a breeze.
Thanks to dpc 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.
- css-inline - Support for converting style attributes to HTML attributes
- css-inline - Custom attribute to ignore inlining
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
289 pull requests were merged in the last week
- remove deprecated LLVM-style inline assembly
- optimize
impl_read_unsigned_leb128
- reduce use of LocalDefId <-> HirId maps
- store a
Symbol
instead of anIdent
inVariantDef
/FieldDef
- partially stabilize
maybe_uninit_extra
- add {
Add
,Sub
,Mul
,Div
,Rem
,BitXor
,BitOr
,BitAnd
}{,Assign
} toSaturating
- futures: fix stacked borrows violations in waker_ref and FuturesUnordered
- rustdoc: avoid many
Symbol
toString
conversions - clippy: new lint:
iter_overeager_cloned
- clippy: add
manual_bits
lint - clippy: add borrow_as_ptr lint
- clippy: allow primitive types in
disallowed_methods
- clippy: apply
not_unsafe_ptr_arg_deref
to type aliases - clippy: don't lint
if_same_then_else
withif let
conditions - clippy: downgrade
mutex_atomic
to nursery - clippy: erase late bound regions in
iter_not_returning_iterator
- clippy: fix
cmp_owned
suggestion flipping the comparison - clippy: fix
deref_addrof
- clippy: fix
implicit_clone
for&&T
- clippy: fix
manual_memcpy
- clippy: fix cropped
or_fun_call
hint - clippy: handle implicit named arguments in
useless_format
- clippy: move
return_self_not_must_use
topedantic
- thorin: performance improvements
Rust Compiler Performance Triage
A quiet week for regular rustc performance; incremental builds (particularly ones with little recompilation to do) saw an average 1.5% improvement. rustdoc also saw several notable optimizations land which improve performance, particularly on larger benchmarks.
Triage done by @simulacrum. Revision range: 72e74d..7bc7be
3 Regressions, 5 Improvements, 2 Mixed; 2 of them in rollups 30 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] Scoped threads in the standard library, take 2
Tracking Issues & PRs
- [disposition: merge] Stabilize arc_new_cyclic
- [disposition: merge] Change location of where clause on GATs
- [disposition: merge] rustdoc: "Namespace" user-written Markdown headings
- [disposition: merge] Stabilize -Z print-link-args as --print link-args
- [disposition: merge] Use verbatim paths for process::Command if necessary
- [disposition: merge] impl Not for !
New RFCs
- No new RFCs were opened this week.
Upcoming Events
Rusty Events between 1/19/2022 - 2/16/2022 🦀
Online
- January 19, 2022 | Vancouver, BC, CA | Rust Study/Hack/Hang-out night | Vancouver Rust
- January 20, 2022 | Cardiff, UK | Rust Book Study Session - Functional Language Features & Cargo and Crates.io | Rust and C++ Cardiff
- January 25, 2022 | Dallas, TX, US | Last Tuesday Meetup | Dallas Rust
- January 25, 2022 | Los Gatos, CA, US | Book #24 - Rust for Rustaceans - Chapter 3 - Designing Interfaces | Los Gatos Reading Group
- January 27, 2022 | Charlottesville, VA, US | Minimal Area Bananagrams: a Tale of Needless Optimization | Charlottesville Rust Meetup
- January 27, 2021 | Linz, AT | Rust Meetup Linz - 18th Edition | Rust Linz
- January 27, 2022 | Nürnberg, DE | Rust Nürnberg online #9| Rust Nuremberg
- January 27, 2022 | Stuttgart, DE | Rust-Meetup | Rust Community Stuttgart
- January 29, 2021 | London, UK | Rust (Remote) Hack & Learn | Rust London User Group
- February 1, 2021 | Berlin, DE | Rust Hack and Learn | OpenTechSchool Berlin
- February 1, 2022 | Buffalo, NY, US | First Tuesdays: Buffalo Rust User Group | Buffalo Rust Meetup
- February 8, 2022 | Los Angeles, CA, US | Rust LA (Topic TBD) [Virtual] Feb. 2022 | Rust Los Angeles
- February 8, 2022 | Seattle, WA, US | Monthly meetup | Seattle Rust Meetup
- February 9, 2022 | Stuttgart, DE | Rust-Meetup | Rust Community Stuttgart
- 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
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
Ockam
filancore
Enso
Kraken
- Backend Engineer - Rust - Core Backend (Remote)
- Backend Engineer, Kraken Futures - Rust (Remote)
- Senior Rust Engineer - Banking (Remote)
Oso
Connected Cars
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Usually Rust figures out the Sartre question by itself
Thanks to H2CO3 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