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.
What does This Week in Rust mean to you?
This Week in Rust will be the focus of nellshamrell's RustConf keynote in September. She would love if you would help inform the talk by sharing what This Week in Rust means to you on this Reddit post or in the Discourse forums. Thank you!
Updates from Rust Community
- [Inside] 1.54.0 pre-release testing
- rust-analyzer Changelog #87
- CGlue Today And The Road Ahead
- Black Hat Rust: July Update
- Updates from the Tinyverse - July 2021
- Gloo v0.3.0 release
- This Week In TensorBase 13
- Towards Inserting One Billion Rows in SQLite Under A Minute
- Async and asleep: designing our future embedded applications
- My Rust development workflow (after 2+ years full-time)
- Dealing with Out-of-memory Conditions in Rust
- Rust for Linux redux
- My experience crafting an interpreter with Rust
- Rust: First Thoughts
- Mutable statics have scary superpowers! Do not use them
- 9 advantages of programming in Rust
- [audio] AreWePodcastYet - 07 Georg Semmler on Diesel!
- Awesome Unstable Rust Features
- How I Built a Cross-Platform Desktop Application with Svelte, Redis, and Rust
- Understanding Rust futures by going way too deep
- Understanding Rust's 'serde' using macro expansion
- Rust - Writing Parsers With nom Parser Combinator Framework
- ✨🥞 Rust Visualized: The Stack, the Heap, and Pointers
- First steps with Rust declarative macros!
- diceroller, a sample Rust project
nullchecks with Rust
- Implementing Merge Sort in Rust
- Emulating abstract base classes in Rust
- Rust #6: Exploring crates
- Rust and WebAssembly Serverless Functions in Vercel
- Raw Pointers in Unsafe Rust are quite powerful
- 28 Days of Rust -- Part 1: Ownership and the Borrow Checker
- The Rust dbg! macro
- [video] Building a Web Application with Rust - Part X - VanillaJS FrontEnd
- [video] Rust Bevy Tutorial - Enemy Formation & Attack (part 3/3)
- [video] How to create an AWS Lambda in rust
- Performance vs Programming Effort between Rust and C on Multicore Architectures: Case Study in N-Body
- Revisiting Prechelt's paper and follow-ups comparing Java, Lisp, C/C++ and scripting languages
- Programming Rules to Develop Secure Applications with Rust
- This finally happened: rust made more sense
- Edward Snowden endorses Rust for more secure computing
- I bet I can do that in rust!!. Generic types are more powerful than most of us thought
Crate of the Week
This week's crate is loadstone, a bare-metal bootloader for embedded systems.
Thanks to Andres O. Vela for the suggestion.
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.
- What does This Week in Rust mean to you?
- rust-embedded/cross - Call for help: more maintainers wanted
- ChainSafe/forest has several help wanted issues
- getsynth/synth - Support postgres json and jsonb types
- getsynth/synth - Feature: Doc template generator
- ockam-network/ockam - Rust - UDP Transport
- ockam-networking/ockam - File Transfer over end-to-end encrypted secure channels
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
287 pull requests were merged in the last week
- recognize bounds on impls as const bounds
- warn on inert attributes used on bang macro invocation
- better diagnostics with mismatched types due to implicit static lifetime
VecMap::get_value_matchingshould return just one element
- don't create references to uninitialized data in
- miri: better errors for negative out-of-bounds offsets
- miri: better ptr-out-of-bounds errors
- MIR opt: separate constant predecessors of a switch
impl From<[(K, V); N]> for HashMap(and friends)
U: IntoIterator == [T; N]
- add support for custom allocator in
- hashbrown: make rehashing and resizing less generic
- hashbrown: inline small functions
- clippy: add check if ty
- clippy: improve conflicting rlibs error again
Rust Compiler Performance Triage
A very quiet week with only improvements. There was one possible regression, but it was removed from consideration due to only barely impacting a somewhat noisy stress-test benchmark. Untriaged pull requests continue to pile up, but there is still not a good process for dealing with them.
Triage done by @rylev. Revision range: 5c0ca08..998cfe5
0 Regressions, 3 Improvements, 0 Mixed; 0 of them in rollups
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
#[derive(Default)]on enums with a
- RFC: Introduce concat_bytes!() to join [u8] and byte str analogous to concat! for str
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.
- [disposition: merge] impl Default, Copy, Clone for std::io::Sink and Empty
- [disposition: merge] Allow reifying intrinsics to fn pointers.
- [disposition: merge] Associated functions that contain extern indicator or have #[rustc_std_internal_symbol] are reachable
- [disposition: merge] impl Pattern for char array
- [disposition: merge] Commit to not supporting IPv4-in-IPv6 addresses
- [disposition: merge] Implement
No new RFCs were proposed this week.
- August 3, 2021, Buffalo, NY, US - Buffalo Rust User Group, First Tuesdays - Buffalo Rust Meetup
- August 9, 2021, Seattle, WA, US - Monthly meetup - Seattle Rust Meetup
The Tor Project
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
We were able to verify the safety of Rust's type system and thus show how Rust automatically and reliably prevents entire classes of programming errors
Thanks to Henrik Tougaard for the suggestion!