Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. 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
Project/Tooling Updates
- Filecoin Forest update
- Mina Protocol update
- rust-analyzer Changelog #80
- IntelliJ Rust Changelog #148
- Rust/C++ Interop in the Android Platform
- Rocket v0.5 Release Candidate
- This Week In TensorBase 6
- Dotenv-linter v3.1.0: Overview of key changes
- AWS SDK Rust: 9 New Services Added
Observations/Thoughts
- Untapped potential in Rust's type system
- Idiomatic Rust? Implementing binary search (part 2)
- Designing Rust bindings for REST APIs
- Rust zero-cost abstractions in action
- Translating Quake 3 into Rust
- First impressions of Rust programming on Solana
- Optimizing Pairing-Based Cryptography: Montgomery Arithmetic in Rust
- My second cup of Rust
- A Goose In The Clouds: Load Testing At Scale
- Walking through "The Java Tutorials" with Rust
- Behavior inheritance in Rust
- [audio] Building with Rust: Ralf Jung on GhostCell and working as a PL researcher
Rust Walkthroughs
- Rust Derive Macro Guide
- Calibration From Scratch Using Rust: Part 1 of 3
- Calibration From Scratch Using Rust: Part 2 of 3
- Calibration From Scratch Using Rust: Part 3 of 3
- Rust from a JavaScript perspective
- !#[no_std] with WASI is more complicated than I thought it would be
- Rust - What made it "click" for me (Ownership and memory models)
- Creating an NPM package written in Rust
- Rise and Shine: Putting the nRF52840 to sleep, and waking it back up
- Speed up your Rust CI with cache image and Buildkit
- [ZH] [series] Build front-end web apps with Yew and WebAssembly in Rust -part 1: crates (Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 标准的 web 前端(1)- 起步及 crate 选择)
- [ZH] [series] Build front-end web apps with Yew and WebAssembly in Rust -part 2: Components & Routers (Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 标准的 web 前端(2)- 组件和路由)
- [video] Rust Beginners 5 - Tuples
Research
- [collection] Automatic Rust verification tools (2021)
Miscellaneous
- QUIC Version 1 is live on Cloudflare
- What are the most "professional" crates?
- What's your favourite under-rated Rust crate and why?
- It's not much, but I graduated from middle-school today with Rust as my language of choice
- From Julia to Rust
- How To Use fastText and Rust For Instant Translations
Crate of the Week
This week's crate is cargo-sort, a cargo subcommand to sort your Cargo.toml
's dependencies and workspace members.
Thanks to jplatte for the nomination
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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
267 pull requests were merged in the last week
- BPF target support
- support for force-warns
- improve debugging experience for enums on windows-msvc
- parser: ensure that all nonterminals have tokens after parsing
- don't suggest unsized indirection in where-clauses
- rustc: allow safe
#[target_feature]
on wasm - always go through the
expn_that_defined
query - perf: miscellaneous inlining improvements
- perf: only compute the trait map once
- stabilize
vecdeque_binary_search
- update standard library for
IntoIterator
implementation of arrays - clippy: don't warn about
cfg!(..)
as a constant in assertions - clippy: fix
needless_collect
with binding shadowing - clippy: add lint
manual_str_repeat
Rust Compiler Performance Triage
Some good improvements, and a few regressions. No large changes.
Triage done by @simulacrum. Revision range: 1160cf..a50d721
3 Regressions, 3 Improvements, 1 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:
No new RFCs were proposed 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
- [disposition: close] Add the boxed!() macro to "de-magic" box syntax
- [disposition: merge] RFC: Supertrait item shadowing
- [disposition: merge] Type-changing struct update syntax
Tracking Issues & PRs
- [disposition: merge] Stabilize span_open() and span_close().
- [disposition: merge] Stabilize ops::ControlFlow (just the type)
- [disposition: merge] Re-add support for parsing (and pretty-printing) inner-attributes in match body
- [disposition: merge] Ignore derived Clone and Debug implementations during dead code analysis
- [disposition: merge] Tracking Issue for const core::str::from_utf8_unchecked
New RFCs
Upcoming Events
Online
- June 15, 2021, Washington, DC, US - In-kernel, fast-path packet processing with AF_XDP - Rust DC
- June 16, 2021, Vancouver, BC, CA - Rust in Mozilla's Data Platform - Vancouver Rust
- June 17, 2021, Denver, CO, US - Learning Rust as a Python/Javascript developer by Juhis - Rust Denver
- June 18, 2021, Online - Learn Rust Fundamentals | Rust 101 - KubeDaily
- June 29. 2021, Dallas, TX, US - 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
Tweede golf
Einride
Field33
Snapview
Apollo
NZXT
Kollider
Estuary
Kraken
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
As the tradeoffs in software engineering change over time, so does the ideal solution. Some 40 years ago when the first C standards were written down, by people no less competent than those that work on Rust today, the design of the language and the list of behaviours not defined likely made much more sense in context of back then than they do right now. It is not all that unlikely that some years down the line the choices made by Rust won't make all that much of sense as they do today, too.
Thanks to Kill The Mule for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.