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.
In the case of this newsletter, 404 is indeed found!
Updates from Rust Community
- rust-analyzer Changelog #90
- IntelliJ Rust Changelog #153
- Sixtyfps weekly report for 16th of August 2021
- Relm4 beta released 🎉
- This week in Fluvio #2: the programmable streaming platform
- This Week In TensorBase 15
- This week in Datafuse #2 & This week in Datafuse #3
- nailing-cargo 1.0.0 - cargo wrapper for privsep, and for unpublished dependencies
- wgpu: Release of a Pure-Rust v0.10 and a Call For Testing
- [video] rg3d game engine v0.22 - feature highlights
- How to deal with large Cargo workspaces
- Instant word segmentation with Rust
- How to write fast Rust code
- Rust GUI Infrastructure
- Adding middleware support to Rust reqwest
- Understanding #[derive(Clone)] in Rust
- Going from Haskell to Rust
- [video] Async engines in C++20, Rust, & Zig
- [video] Flutter/Rust Roundtable
- An analogy that helped me understand the borrow checker
- A fast port scanner in 100 lines of Rust
- RPC to call a Runtime API easily in Substrate
- Writing a lambda in Rust using lambda-runtime and aws-sdk-rust
- Daily Rust: Slice Patterns
- Learning Rust by building an SSH cli tool
- Getting started with Rust programming language 🦀 2021: 4. Building a CLI app in Rust
- Index 1,600,000,000 Keys with Automata and Rust
- Complex Procedural Rust Macros
- Getting Started with Systems Programming with Rust (Part 1)
- Deploy a Jamstack site on AWS Lambda with API Gateway in 10 minutes or less
- Rust Type Conversion (Part 1)
- Rust on RISC-V BL602: Simulated with WebAssembly
- Rust Type Lists
- Tag input assistant for \<select> elements in Rust/wasm
serde's data model with a toy deserializer
- LLVM internals, part 1: the bitcode format
- LLVM internals, part 2: parsing the bitstream
- Rust 2021 close to stabilization, currently testing all public crates (10,000 done so far)
- Calling WebAssembly from Rust
- Upcoming error message formatting enhancements in Rust 1.56
- Transforming streaming data in real-time with WebAssembly
Crate of the Week
This week's crate is synth, a declarative test data generator written in Rust.
llogiq shamelessly used his recent self-suggestion for lack of another nomination.
Module of the 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.
- GitUI has an easy to get started code base, mentoring and good-first-issues waiting
- getsynth/synth - Support postgres json and jsonb types
- ockam-network/ockam - Like ngrok, but using Ockam
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
197 pull requests were merged in the last week
- make deleted code in a suggestion clearer
- point to where clause for GATs to add bound
- use smaller spans when suggesting method call disambiguation
- use a more accurate span on assoc types WF checks
- constify implementations of (
Fromfor int types
- add automatic migration for
- fix closure migration suggestion when the body is a macro
- associated functions that contain
externindicator or have
- LLVM codegen: don't emit zero-sized padding for fields
- uplift the invalid_atomic_ordering lint from clippy to rustc
- add support for
- add the Option::unzip() method
- test and fix
size_hintfor slice’s (
- cargo: teach cargo to failfast on recursive/corecursive aliases
- cargo: fix value-after-table error with profiles
- cargo: ability to specify the output name for a bin target different from the crate name
never_loop: suggest using an if let instead of a for loop
- clippy: properly handle
- clippy: check expr usage for
- clippy: fix
- clippy: fix false positive on
- clippy: fix
- clippy: use
- clippy: add
Rust Compiler Performance Triage
A fairly busy week which was to expected given that we've adjusted our algorithm for whether we label a change as a regression or not. Most regressions were relatively small, and only one has not yet been addressed in some way.
Triage done by @rylev. Revision range: 6b2050..aa8f27
59 comparisons made in total 3 Regressions, 2 Improvements, 2 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:
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.
No RFCs are currently in the final comment period.
- [disposition: merge] Stabilize "force warn" option
- 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
- August 19, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs
- August 31, 2021, Dallas, TX - Last Tuesday - Dallas Rust
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Rust : You can't move your object and try to keep it, too.
Me : Ok, I suppose I can clone it?
Rust : Then implement a clone method.
Me : Why am I getting a stack overflow?
Rust : It is never a good idea for a clone method to call itself.
Me : I just wanted to simplify the trivial cases.
Rust : It is still not a good idea for a clone method to call itself.
Me : I can't believe I have gotten myself into this.
Thanks to MBartlett21 for the suggestion!