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
Newsletters
- This Month in Rust GameDev #24 - July 2021
- This Month in Rust OSDev (July 2021)
- The Monthly Oxide #5
- Rust Module of the Week: std::fs (Part 2): Dirs, Dirs, Dirs
Project/Tooling Updates
- Rustdoc will now add Jump to Definition links in source code pages!
- rust-analyzer Changelog #89
- rust-analyzer Financial Report #3
- Whats New in IntelliJ Rust for the 2021.2 Release Cycle
- SixtyFPS weekly report for 8th of August 2021
- How do Mina nodes communicate? Implementing bin_prot in Rust
- Trunk v0.10 – v0.13
- Bevy's First Birthday
- Progress report on rustc_codegen_cranelift (July 2021)
- [upcoming] Volt - A rust-based package manager that's up to 12x faster than Yarn
Observations/Thoughts
- On Collecting Result Types in Rust
- Rust in Production: Qovery
- How to write really slow Rust code - Part 2
- Slitter: a slab allocator that trusts but verifies (in Rust, for C)
- When Zero Cost Abstractions Aren't Zero Cost
Rust Walkthroughs
- Rust cli example: Ferris fetches Go gopher postcards
- A Little Bit About PRNG Stuff
- Rust's Vector
- Interacting with data from FFI in Rust
- Loading a Rust library as a Lua module in Neovim
- Adding Rust-Stable libstd Support for Xous
- Rust BDD tests with Cucumber
- So you want to write a GUI framework
- Tauri with Standard Svelte or SvelteKit
- [JP] Rust で Web バックエンド開発をはじめる
- [video] Explaining Rust Analyzer 08: Mini Rowan, Green and Red Trees
Research
- CVE-2021-29922 – rust standard library “net” – Improper Input Validation of octal literals in rust 1.52.0 std::net and below results in indeterminate SSRF & RFI vulnerabilities.
- Retrofitting Typestates into Rust
Miscellaneous
- SIMD usage in C++, C# and RUST
- RIP 16-bit crate IDs
- Your favorite Rust CLI utility?
- Go, Rust "net" library affected by critical IP address validation vulnerability
- Microsoft Rust intro says "Rust is known to leak memory"
Crate of the Week
This week's crate is ockam, a crate to implement transport-agnostic end-to-end encryption for the rest of us.
Thanks to staticassert for the suggestion.
Submit your suggestions and votes for next week!
Module of the Week
Continuing Rust Module of the Week this week is std::fs Part 2: Dirs, Dirs, Dirs. Contribution and feedback welcome here.
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!
- rust-lang/this-week-in-rust - Feature request: Dark theme for the website
- Stranger6667/jsonschema-rs - Implement the uuid format validator
- Stranger6667/jsonschema-rs - Implement the duration format validator
- Stranger6667/jsonschema-rs - Option to turn off processing of the format keyword
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 Rust Core
324 pull requests were merged in the last week
- fill out remaining parts of C-unwind ABI
- CTFE: throw unsupported error when partially overwriting a pointer
- proc macro spans: make columns 1 based
- improve diagnostics for wrongly ordered keywords in function declaration
- replace
HirId
s withLocalDefId
s inAccessLevels
tables - add
config.toml
options for enabling overflow checks in rustc and std - use zeroed allocations in the mir interpreter instead eagerly touching the memory
- only compute
is_freeze
for layout-constrained ADTs - allow generic SIMD array element type
- properly find owner of closure in THIR unsafeck
- make
wrapping_neg()
usewrapping_sub()
,#[inline(always)]
- stabilize
Vec<T>::shrink_to
impl Default, Copy, Clone for std::io::Sink
andEmpty
- change environment variable getters to error recoverably
- add
core::stream::from_iter
- futures: implement
Default
forOptionFuture
- clippy: don't emit
too_many_lines
for closures - clippy: add xor case to manual swap lint
Rust Compiler Performance Triage
Quiet week for performance, with no large changes. Regressions are limited to just a few benchmarks.
Triage done by @simulacrum. Revision range: 998cfe5..3354a44
2 Regressions, 0 Improvements, 0 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
No RFCs are currently in the final comment period.
Tracking Issues & PRs
- [disposition: merge] Tracking issue for UnsafeCell::raw_get
New RFCs
Upcoming Events
Online
- August 10, 2021, Dallas, TX, US - Second Tuesday - Dallas Rust
- August 18, 2021, Denver, CO, US - Level up our Rust skills by building an ECS by Brooks Patton - Rust Denver
- August 18, 2021, Vancouver, BC, CA - Solving LeetCode Problems with Rust - Vancouver Rust
- August 19, 2021, Manchester, UK - Rust Manchester - Speeding Up the Snake: Extending Python with Rust
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
TrueLayer
Xayn
ChainSafe
Kollider
NZXT
Kraken
Tempus Ex
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
We regrettably lack nominations,
so as I can't choose fresh quotations,
at last nor this time,
I'll offer this rhyme
to quell all discombombulations.
– a very sorry llogiq
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.