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.
Issue 400!
We are so happy to have reached issue 400 of This Week in Rust! To mark this occasion, we would like to introduce you to your editors who put these issues together for you every week!
Current Editors
Nell Shamrell-Harrington
Hello everyone! I'm Nell Shamrell-Harrington (nellshamrell on GitHub). I've served as lead editor of This Week in Rust for a little over a year now. Currently, I work as a Principal Engineer at Microsoft, prior to that I was on the Rust team at Mozilla. I also am a member of the Rust Foundation Board of Directors. My greatest joy in editing This Week in Rust is seeing how dedicated Rustaceans are to teaching and passing on what they have learned. We are a community where personal maturity and empathy are as important as technical excellence. When I'm not working, I'm often caring for and playing with my three pet bunnies - Lucy, Leia, and Noah!
Andre Bogus
Greetings, Rustaceans! I'm Andre 'llogiq' Bogus, and I've been editing TWiR since 2016. I currently work with synth, my third Job using Rust. I am one of the first clippy maintainers, a mod team member, a Rust bard and I have several crates to my name. I'm always amused with the quotes you folks suggest, and like being on top of the merged PRs, so I know what's coming in the next Rust versions. Besides Rust, I like making music, biking, skateboarding and spending time with my wife, three kids and cat.
Colton Donnelly
Good morning to all of you fellow Rustaceans! I'm Colton Donnelly (usually under the screen name cdmistman), and I've been editing TWiR since May 2020. I'm currently a co-op working on the Alan programming language, which uses Rust in the runtime - this is the second time I've had an internship using Rust! I've really enjoyed reading all of your Rust blog posts and articles over the past year (and practicing my speed-reading while I'm at it), it's been awesome seeing how much knowledge y'all like to share. When I'm not coding, I'm usually playing games with friends or binge-watching shows.
Past Editors
Thank you so much to all who have edited This Week in Rust over the years!
Thank YOU
And a special thank you to all who have contributed to This Week in Rust and every single one of our subscribers and readers! Here is to many more issues!
Updates from Rust Community
No newsletters or papers this week.
Official
Project/Tooling Updates
- IntelliJ Rust Changelog #151
- rust-analyzer Changelog #86
- Announcing tokio-uring: io-uring support for Tokio
- Franzplot: a teaching software (re)written in Rust
- wgpu: release of v0.9 and the future
- Allsorts: Font Shaping Engine 0.6 Release
- This Week In TensorBase 12
- cargo-ui: Introducing cargo-ui, a GUI for cargo
- Quickwit: A highly cost-efficient search engine in Rust
Observations/Thoughts
- Compiling Rust is NP-hard
- How we improved the performance of our Rust app
- Making Rust Float Parsing Fast: libcore Edition
- Adventures in Rust and Load Balancers
- Faster (and smaller) uploads in Discourse with Rust, WebAssembly and MozJPEG
Rust Walkthroughs
- How to implement worker pools in Rust
- Run rust wasm in electron app
- Rust and the JVM
- Smart Pointers in Rust: What, why and how?
- Lazy async operations in Rust
- 05 - Basic CRUD with rust using tide - front-end with tera
- Rust #5: Naming conventions
- Leader election in rust the journey towards implementing nun-db leader election
- Novel way to Develop, Test, and Document C libraries from Rust
- Rust + Tauri + Svelte Tutorial
- Static Integer Types
- Serializing data faster
- [series] Basic CRUD api with Rust and Tide
- [series] Implementing ICMP in Rust
- I. Implementing ICMP in Rust
- II. Implementing ICMP in Rust
- [series] [video] Explaining rust-analyzer
Miscellaneous
- A GPIO driver in Rust
- Computer Scientist proves safety claims of the programming language Rust
- JetBrains The State of Developer Ecosystem 2021: Rust
Crate of the Week
This week's crate is dylint, a tool for running Rust lints from dynamic libraries.
Thanks to George Hahn for the suggestion.
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.
- Knurling-rs user survey
- Rust.Tokyo 2021
- Helix editor icon/logo brainstorm
- Ockam welcomes new contributors!
- Forest - Cleanup net peers output
- Forest - FOREST_CONFIG_PATH env var
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
280 pull requests were merged in the last week
- handle non-integer const generic parameters in debuginfo type names
- warn about useless assignments of variables/fields to themselves
- suggest a path separator if a stray colon is found in a match arm
- add diagnostics for mistyped inclusive range
- various diagnostics clean ups/tweaks
- compute a better
lint_node_id
during expansion - TAIT: infer all inference variables in opaque type substitutions via
InferCx
- remove refs from
Pat
slices - shrink the
CrateStore
dynamic interface - loop over all opaque types instead of looking at just the first one with the same DefId
- cache expansion hash globally
- perf: noise and variance
- some perf optimizations and logging
- update Rust Float-Parsing to use the Eisel-Lemire algorithm
- stabilize
[T; N]::map(_)
- split
MaybeUninit::write
into new feature gate and stabilize it - mark Option::insert as
must_use
- added
Arc::try_pin
- hashbrown: replace some custom unsafe code with
array::map
- hashbrown: optimize
find
- cargo: deduplicate compiler diagnostics
- cargo: add
d
as an alias for doc - clippy: fix false positives and document
branches_sharing_code
lint - clippy: new lint:
self_named_constructor
- clippy: add
Arc
toredundant_allocation
- clippy: fix ICE in
is_integer_const
Rust Compiler Performance Triage
A mixed week, with some moderate regressions and moderate improvements. There were some notable PR's that were specifically oriented around performance enhancements.
Triage done by @pnkfelix. Revision range: 5aff6dd07a562a2cba3c57fc3460a72acb6bef46..5c0ca08c662399c1c864310d1a20867d3ab68027
3 Regressions, 3 Improvements, 3 Mixed; 1 of them in rollups
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
Tracking Issues & PRs
- [disposition: merge] Stabilize arbitrary_enum_discriminant
- [disposition: close] regression: infallible residual could not convert error
- [disposition: merge] Allow reifying intrinsics to fn pointers.
- [disposition: merge] Commit to not supporting IPv4-in-IPv6 addresses
- [disposition: merge] Stabilize core::task::if_ready!
- [disposition: close] Implement RFC 2500 Needle API (Part 1)
New RFCs
Upcoming Events
Online
- July 21, 2021, Vancouver, BC, CA - Rust Adoption at Huawei - Vancouver Rust
- July 22, 2021, Tokyo, JP - Rust LT Online#4 - Rust JP
- July 22, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs
- July 27, 2021, Dallas, TX, US - Last Tuesday - Dallas Rust
- August 3, 2021, Buffalo, NY, US - Buffalo Rust User Group, First Tuesdays - Buffalo Rust Meetup
North America
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
The Tor Project
Snapview
Luminovo
Clear
ChainSafe
PolarFox Network
CNRS
The Mobility House GmbH
Immunant
Wingback
Anixe
Modeldrive
NZXT
Kollider
Tempus Ex
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Tip: whenever you wonder if Pin could be the solution, it isn't
– @SkiFire13 on the official Rust Discord
Thanks to Kestrer for the self-suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.