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.
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
Official
- [Inside] 1.54.0 pre-release testing
Project/Tooling Updates
- 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
Observations/Thoughts
- 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!
Rust Walkthroughs
- 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
- Ditching
try..catch
andnull
checks with Rust - Implementing Merge Sort in Rust
- Emulating abstract base classes in Rust
- Rust #6: Exploring crates
- Rust and WebAssembly Serverless Functions in Vercel
- 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
Research
- 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
Miscellaneous
- 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.
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.
- 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
- improve
SortedMap::get_by_key_enumerated
more VecMap::get_value_matching
should return just one element- don't create references to uninitialized data in
List::from_arena
- miri: better errors for negative out-of-bounds offsets
- miri: better ptr-out-of-bounds errors
- MIR opt: separate constant predecessors of a switch
- stabilize
into_parts()
andinto_error()
- stabilize
impl From<[(K, V); N]> for HashMap
(and friends) - remove
Option
fromBufWriter
- implement
TrustedLen
forFlatten
/FlatMap
if theU: IntoIterator == [T; N]
- add
Stdin::lines
,Stdin::split
forwarder methods - add support for custom allocator in
VecDeque
- hashbrown: make rehashing and resizing less generic
- hashbrown: inline small functions
- clippy: add check if ty
has_escaping_bound_vars
inzero_sized_map_values
lint - 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
Approved RFCs
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#[default]
attribute- 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.
RFCs
Tracking Issues & PRs
- [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
Extend<(A, B)>
for(Extend<A>, Extend<B>)
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Online
- 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
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
Stockly
Rhebo GmbH
ChainSafe
Kraken
Lumeo
Tweede golf
Kollider
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
– Ralf Jung on Eureka Alert Science News
Thanks to Henrik Tougaard for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.