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
No newsletters this week.
Official
- [Inside] Please welcome cjgillot and Nadrieril to compiler-contributors
- [Inside] 1.49.0 pre-release testing
Project/Tooling Updates
Observations/Thoughts
- 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
Rust Walkthroughs
- Concurrency in modern programming languages: Rust
- Building distributed GraphQL backend using Rust and Apollo Federation
- Enhance code quality using
matches
macro! 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
Miscellaneous
- 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!
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.
- 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
- stabilize
min_const_generics
(Huzzah!) - utilize PGO for rustc linux dist builds
- suggest fn ptr rather than fn item and suggest to use
Fn
trait 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
- remove
DefPath
fromVisibility
and calculate it on demand rustc_query_system
: reduce dependency graph memory usage- add
impl Div<NonZeroU*> for u*
which cannot panic - deprecate atomic
compare_and_swap
method - stabilize
core::slice::fill
- stabilize
deque_range
- use
clone_from
fromhashbrown::
{HashMap
,HashSet
} - futures: perf: pack the state and future of unfolds in the same memory
- cargo: stabilize
RUSTC_WORKSPACE_WRAPPER
- rustdoc: stabilise
--default-theme
command 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.
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 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.
RFCs
No RFCs are currently in the final comment period.
Tracking Issues & PRs
New RFCs
Upcoming Events
Online
- 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
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
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.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.