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.
Updates from Rust Community
No newsletters this week.
- [Inside] Please welcome cjgillot and Nadrieril to compiler-contributors
- [Inside] 1.49.0 pre-release testing
- Call Site Dependency Injection
- A look at tokio 1.0 API Changes
- Memory-Safety Challenge Considered Solved? An In-Depth Study with All Rust CVEs
- 45,000+ lines of Rust code later: An update on the Record & Debug Tool (rd)
- Cloning A Reference and Method Call Syntax in Rust
- Executable PNGs
- Why mongodump is fast
- Concurrency in modern programming languages: Rust
- Building distributed GraphQL backend using Rust and Apollo Federation
- Enhance code quality using
matchesmacro! in Rust
- ClickOnce for Rust Apps
- Closures in Rust
- Don't let failures spread over your suite with process-based tests isolation
- Triangle From Scratch
- [video] [series] (Live Coding) Advent of Code 2020 in Rust
- Redox OS 0.6 Released With Many Fixes, Rewritten Kernel Memory Manager
- The more things change...
- Min const generics stabilization has been merged into master! It will reach stable on March 25, 2021 as part of Rust 1.51
Crate of the Week
This week's crate is autograd, a library of differentiable operations and tensors for machine learning applications.
Thanks to Zicklag for the suggestion!
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.
- withoutboats/heck - kebab case doesn't treat numbers as separate word?
- jplatte/js_int has several good first issues
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
275 pull requests were merged in the last week
- utilize PGO for rustc linux dist builds
- suggest fn ptr rather than fn item and suggest to use
Fntrait bounds rather than the unique closure type
- implement a compiler diagnostic for move async mistake
- highlight edition-specific keywords correctly in code blocks, accounting for code block edition modifiers
- prevent caching normalization results with a cycle
- fix ICE when lookup method in trait for type that have bound vars
Visibilityand calculate it on demand
- `rustc_query_system : reduce dependency graph memory usage
impl Div<NonZeroU*> for u*which cannot panic
- deprecate atomic
- futures: perf: pack the state and future of unfolds in the same memory
- cargo: stabilize
- rustdoc: stabilise
--default-themecommand line option
Rust Compiler Performance Triage
- 2020-12-24: 3 Regressions, 5 Improvements Major event this week is landing PGO for rustc (on x86_64-unknown-linux-gnu). We expect other platforms to follow but further investigation will be needed, especially for cross-compiled platforms. We expect to add LLVM PGO as well.
Triage done by @simulacrum.
See the full report for more.
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.
No RFCs are currently in the final comment period.
- January 5, Buffalo, NY, US - Buffalo Rust User Group
- January 6, Johannesburg, ZA - Monthly Joburg Rust Chat - Johannesburg Rust Meetup
- January 6, Indianapolis, IN, US - Indy.rs - with Social Distancing - Indy Rust
- January 7, Berlin, DE - Rust Hack and Learn - Berline.rs
- January 12, Seattle, WA, US - Monthly Meetup - Seattle Rust Meetup
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
This is a common theme in Rust’s design: To reduce breakage as code evolves, you’re only allowed to rely on features that have been intentionally declared by the author.
Thanks to Kornel for the suggestion.