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.
- Linux Rust Support Patches
- Intellij Rust Changelog #150
- Rust Analyzer Changelog #84
- GCC Rust Monthly Report #7 June 2021
- The future of Buck
- ChainSafe's Rust implementation of Mina spec Community Spotlight (video)
- MoonZoon Dev News (5): Chat example, MoonZoon Cloud
- Fluvio: The Programmable Data Platform
- butido - a Linux Package Building Tool in Rust
- Knurling-rs changelog #28
fcp0.2.0 released - A significantly faster alternative to
- Announcing Sycamore v0.5.0 - SSR + Routing
- This Week In TensorBase 10
- Walking through "The Java Tutorials" with Rust - 'What Is an Interface?' and specialization
- Rust and Tinyverse
- Speeding Up the Webcola Graph Viz Library with Rust + WebAssembly
- Rust closures: How a closure can implement more than one trait
- Rust on the front-end
- Deploy a Rust Web App With Rocket
- A TCP Proxy in 30 lines of Rust
- Manage WebAssembly Apps in WasmEdge Using Docker Tools
- Rust Concept Clarification: Deref vs AsRef vs Borrow vs Cow
- Thread safety and Learning in Rust
- REST API Wrapper with Rust
- [video] Building a Web Application with Rust - Part VII - Auth Middleware
- [video] Building a Web Application with Rust - Part VIII - Containerization
- [video] Rust & Bevy Tutorial - Building a Game From Scratch (Part 1)
- [video] Creating a Chat Server with async Rust and Tokio
- [video] 1Password Developer Fireside Chat: Dive into Async & Futures in Rust
This week's crate is css-inline, a crate to inline CSS into
Thanks to Dmitry Dygalo for the suggestion.
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.
- Feature: Scheduler / Topological sorting namespaces
- Use parameterized Statements for Postgres export
- Feature: Doc template generator
- XML export / import
- Feature: CSV import/export
If you are a Rust project owner and are looking for contributors, please submit tasks here.
297 pull requests were merged in the last week
ForceWarna lint level
- change vtable memory representation to use
- support allocation failures when interpreting MIR
- avoid byte to char position conversions in
- fix pretty print for
- pretty-print macro matchers instead of using source code
- fix ICE when main is declared in an extern block
- ignore inference variables in certain queries
- check the number of generic lifetime and const parameters of intrinsics
- check node kind to avoid ICE in
- deny using default function in impl const Trait
- fix garbled suggestion for missing lifetime specifier
- fix misleading "impl Trait" error
- add linked list cursor end methods
- when using
process::Commandon Windows, environment variable names must be case-preserving but case-insensitive
track_path::pathfn for usage in
- libm: optimize
- cargo: adjust error message with
- clippy: stabilize
cargo clippy --fix
- clippy: downgrade
- clippy: don't suggest
doc(hidden)or unstable variants in wildcard lint
- clippy: fix emitting in nested (
- clippy: fix
- clippy: new lint:
- clippy: new lint:
- clippy: new lint:
A fairly mixed week with improvements and regressions mostly balancing themselves out. The highlight of this week is we have now started to adopt a new performance triage process which will label PRs that introduce performance regressions with the
perf-regression label. Authors and/or reviewers are expected to justify their performance regression either by a short summary of why the change is worth it despite the regression or by creating an issue to follow-up on the regression.
We hope this process will lead to better compiler performance in the long term.
Triage done by @rylev. Revision range: 5a78340..9a27044
2 Regressions, 3 Improvements, 2 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 RFCs were approved 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: merge] RFC: let-else statements
- [disposition: merge] RFC: I/O Safety
- [disposition: merge]
#[derive(Default)]on enums with a
- [disposition: merge] Stabilize const_fn_transmute, const_fn_union
- [disposition: merge] Stabilize bindings_after_at
- [disposition: close] Add expr202x macro pattern
- [disposition: merge] Stabilize
impl From<[(K, V); N]>for HashMap (and friends)
- [disposition: merge] Stabilize "RangeFrom" patterns in 1.55
- [disposition: merge] Remove P: Unpin bound on impl Future for Pin
- [disposition: merge] Tracking Issue for IntoInnerError::into_parts etc. (io_into_inner_error_parts)
- [disposition: merge] Tracking Issue for array_map
- [disposition: merge] Tracking issue for #![feature(maybe_uninit_extra)]
No new RFCs were proposed this week.
- July 7, 2021, Denver, CO, US - End-to-end Encrypted Messaging in Rust, with Ockam by Mrinal Wadhwa - Rust Denver
- July 8, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs
- July 13, 2021, Seattle, WA, US - Monthly meetup - Seattle Rust Meetup
- July 14, 2021, Malaysia - Rust Meetup July 2021 - Golang Malaysia, feat Rustlang, Erlang, Haskelllang and
- July 14, 2021, Dublin, IE - Rust Dublin July Remote Meetup - Rust Dublin
- July 21, 2021, Vancouver, BC, CA - Rust Adoption at Huawei - Vancouver Rust
Tweet us at @ThisWeekInRust to get your job offers listed here!
One thing I like about Rust is that it filters out lazy/sloppy thinkers. Even when I disagree with another Rust programmer, there is a certain level of respect that comes from knowing that they thought about the problem deeply enough to pass the borrow checker.
Thanks to Jonah for the self-suggestion!