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.
- 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
- 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 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
- !#[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
- [collection] Automatic Rust verification tools (2021)
- 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
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
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.
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
- always go through the
- perf: miscellaneous inlining improvements
- perf: only compute the trait map once
- update standard library for
IntoIteratorimplementation of arrays
- clippy: don't warn about
cfg!(..)as a constant in assertions
- clippy: fix
needless_collectwith binding shadowing
- clippy: add lint
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
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.
Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.
- [disposition: close] Add the boxed!() macro to "de-magic" box syntax
- [disposition: merge] RFC: Supertrait item shadowing
- [disposition: merge] Type-changing struct update syntax
- [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
- 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 18, 2021, Online - Learn Rust Fundamentals | Rust 101 - KubeDaily
- June 29. 2021, Dallas, TX, US - Last Tuesday - Dallas Rust
Tweet us at @ThisWeekInRust to get your job offers listed here!
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!