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
- rust-analyzer Changelog #76
- Knurling-rs changelog #24: three releases,
defmt-test
supports more items and a nasty issue - This Week In TensorBase 2
- Naga shader translation benchmark
- Announcing egui 0.12 - the simple GUI library
- GCC Rust Weekly Status Report 14
- Integrating Rust Into the Android Open Source Project
- A New AWS SDK for Rust - Alpha Launch
- Gleam v0.15 released!
- IsomorphicDB. The Road ahead
- My first Rust crate, pretend
Observations/Thoughts
- Rust on the Frontend and Backend
- Aiming for idiomatic Rust
- Optimizing 700 CPUs Away with Rust
- Improving our development confidence and productivity with Bors
- Increasing the level of parallelism in DataFusion 4.0
- My second impression of Rust and why I think it's the best general-purpose language!
- Incrementally porting a small Python project to Rust
- [video] Rust Verification Workshop 2021 - Ferrite: A Rust EDSL for Message-passing Protocol Verification
- [video] Rust Verification Workshop 2021 - RustBelt: A Quick Dive into the Abyss
- [video] Rust Verification Workshop 2021 - Polonius
- [video] Rust Verification Workshop 2021 - Rust Interest in safety- and mission-critical environments
- [video] Rust Verification Workshop 2021 - Leveraging Compiler Intermediate Representation for Multi- and Cross-Language Verification
Rust Walkthroughs
- BABE – Consensus Algorithm and How to Implement it
- How to deploy Rust web app with DigitalOcean
- Learning Rust #4: Parsing JSON with strong types
- How to use Rust web framework Warp
- Ray Tracing in One Weekend
- Procedural Macros: Error handling
- Speeding up algorithms with arena allocators
- Building a REST and Web Socket API with Actix and Rust
- Building Rust binaries in CI that work with older GLIBC
- [ZH] [series] Build GraphQL services based on Async Rust using tide + async-graphql + mongodb (基于 Async Rust 构建 GraphQL 服务,使用 tide + async-graphql + mongodb) - Part 4
- [ZH] [series] Build GraphQL services based on Async Rust using actix-web + async-graphql + rbatis + postgresql / mysql (基于 actix-web + async-graphql + rbatis + postgresql / mysql 构建异步 Rust GraphQL 服务) - Part 3
- [video] Graphs in Rust: What is a Graph? Representing them in Rust
- [video] Rust Verification Workshop 2021 - Peeking at compiler-internal data (for fun and profit)
- [video] Rust Verification Workshop 2021 - Verifying that Rust programs don't crash
- [video] Rust Verification Workshop 2021 - crux-mir: Symbolic testing for Rust
- [video] Rust Verification Workshop 2021 - Rustv: Semi-automatic Verification of Unsafe Rust Programs
- [video] Rust Verification Workshop 2021 - Towards Automatic Verification of Unsafe Rust with Constrained Horn Solvers
- [video] Rust Verification Workshop 2021 - Prusti - Deductive Verification for Rust
- [video] Rust Verification Workshop 2021 - Creusot: A prototype tool for verification of Rust software
- [video] Rust Verification Workshop 2021 - hacspec: succinct, executable, verifiable specifications for high-assurance cryptography
Miscellaneous
- Innovating with Rust
- What can C++ do that Rust can't? (2021 edition)
- [video] The Rust Borrow Checker—A Deep Dive @ Rust DC, April 20, 2021 w/ Nell Shamrell-Harrington
Crate of the Week
This week's crate is tokio-console, a "top"-like utility to view your tasks run.
Thanks to Simon Farnsworth 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.
- advent_of_code_traits - Improve the efficiency of the default
run
method - compress-tools-rs - Cannot statically compile on Windows due to linking failure, exit code 1120
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
324 pull requests were merged in the last week
- fix duplicate unknown lint errors
- improve diagnostics for functions in
struct
definitions - ensure failing promoteds in const/static bodies are handled correctly
- implement Native link modifiers (RFC #2951)
- deduplicate native libs before they are passed to the linker
- retain data in vectorized registers for longer
- only compute Obligation
cache_key
once in register_obligation_at - "const" initialized thread locals in rustc
- streamline
try_start
code - simplify
chdir
implementation and minimize unsafe block - optimize
BufWriter
- provide
io::Seek::rewind
- stablize {
HashMap
,BTreeMap
}::into_
{keys
,values
} - futures: add FuturesUnordered::into_iter, make iter_pin_ref public
- regex: fix compilation with pattern feature
- datafrog: speed up Relation::merge
- cargo: improve two error messages
- rustdoc: fix source code line number display and make it clickable again
- compiletest: add
needs-unwind
and beginning of support for testingpanic=abort
std - clippy: fix stack overflow issue in
redundant_pattern_matching
- clippy: fix
eval_order_dependence
async false positive - clippy: fix
unused_unit
macro false positive - clippy: fix
needless_quesiton_mark
false positive - clippy: for
to_*
variant don't lint in trait impl takingself
when non-Copy
type - clippy: fix
unnecessary_filter_map
false positive - clippy needless_collect: Lint cases with type annotations for indirect usage and recognize
BinaryHeap
Rust Compiler Performance Triage
Not much change overall - both regressions and improvements were all minor, apart from the 2x compile-time improvement for libcore from PR #83278.
Triage done by @pnkfelix. Revision range: 7a0f..382f
2 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:
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: merge] A new prelude for the 2021 edition (trait-only edition)
- [disposition: postpone] Allow Overloading || and &&
Tracking Issues & PRs
- [disposition: merge] stabilize const_fn_unsize
- [disposition: merge] FCP poll for ErrorKind::OutOfMemory
- [disposition: merge] impl FromStr for proc_macro::Literal
- [disposition: merge] stabilize member constraints
- [disposition: merge] Uplift the invalid_atomic_ordering lint from clippy to rustc
- [disposition: merge] Stabilize "RangeFrom" patterns
- [disposition: merge] Stabilize extended_key_value_attributes
- [disposition: merge] Add functions
Duration::try_from_secs_{f32, f64}
New RFCs
Upcoming Events
Online
- May 12, Online - Rust Meetup May 2021 - Rust Malaysia
- May 13, Berlin, DE - Rust Hack and Learn - Berline.rs
- May 15 - June 7, Online - Solana Season Hackathon - Registration open now
- May 17, 2021, Cardiff, UK - Rust and Cpp Cardiff :: v2.0 - Rust and C++ Cardiff
- May 18, 2021, Washington, DC, US - Mid-month Rustful: rust4ml - Rust DC
- May 19, 2021, Vancouver, BC - Rust Study/Hack/Hang-out night - Vancouver Rust
- May 20, 2021, Online - Go vs Rust | Round table discussion
- May 20, 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
Paige
Impero
Zimpler
Yat Labs
Kollider
TrueLayer
- Rust Backend Engineer (London, UK)
- Rust Backend Engineer (Milan, Italy)
- Rust Engineering Lead (London, UK)
- Rust Engineering Lead (Milan, Italy)
Aleph Alpha
Kraken
ChainSafe
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
You won’t appreciate Rust unless you spend few weeks building something in it. The initial steep learning curve could be frustrating or challenging depending on how you see it, but once past that it’s hard not to love it. It’s a toddler with superpowers after all 💗
– Deepu K Sasidharan on their blog
Thanks to robin for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.