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.
In the case of this newsletter, 404 is indeed found!
Updates from Rust Community
Project/Tooling Updates
- 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
Observations/Thoughts
- 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
Rust Walkthroughs
- An analogy that helped me understand the borrow checker
- A fast port scanner in 100 lines of Rust
- 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
- Exploring
serde
's data model with a toy deserializer - LLVM internals, part 1: the bitcode format
- LLVM internals, part 2: parsing the bitstream
Research
Miscellaneous
- 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.
Please 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!
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 (
Try
)From
for int types - add automatic migration for
assert!(.., string)
- fix closure migration suggestion when the body is a macro
- associated functions that contain
extern
indicator or have#[rustc_std_internal_symbol]
are reachable - LLVM codegen: don't emit zero-sized padding for fields
- uplift the invalid_atomic_ordering lint from clippy to rustc
- run
RemoveZsts
pass atmir-opt-level=1
- implement
black_box
using intrinsic - specialize
Vec::clone_from
forCopy
types - add support for
clobber_abi
toasm!
- deprecate
llvm_asm!
- add the Option::unzip() method
- test and fix
size_hint
for slice’s (r
)split
* iterators - implement
Extend<(A, B)>
for(Extend<A>, Extend<B>)
- 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
- clippy:
never_loop
: suggest using an if let instead of a for loop - clippy: properly handle
Self
type fortrivially_copy_pass_by_ref
- clippy: check expr usage for
manual_flatten
- clippy: fix
manual_map
non-compiling suggestions - clippy: fix false positive on
filter_next
- clippy: fix
nonstandard_macro_braces
false positive - clippy: use
avoid-breaking-exported-api
configuration intypes
module - clippy: add
unwrap_or_else_default
lint
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
Approved RFCs
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.
RFCs
No RFCs are currently in the final comment period.
Tracking Issues & PRs
- [disposition: merge] Stabilize "force warn" option
New RFCs
Upcoming Events
Online
- 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
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
Etsy
Nymi
Dialectic AG
PolarFox Network
ChainSafe
Stader
Headline
Apple
Kollider
NZXT
Kraken
Subspace Labs
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.
– Oliver Ruebenacker on rust-users
Thanks to MBartlett21 for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.