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 #58
- Rust Search Extension Changelog v1.1
- Rust Design Patterns now also as a book
- Pijul - How to survive?
- RustFFT 5.0 has been released!
- napi 1.0 released
- Insta got a new website with docs and a Visual Studio Code Extension
- Isahc 1.0 and Retrospective
- slotmap 1.0 has been released! Copy restriction removed, no_std support, and more
- libbpf-rs: eBPF for the Rust ecosystem
Observations/Thoughts
- Reflecting on developing a database (2020 edition)
- bore(1) + nonymous: lessons learned writing a DNS query tool and
#![no_std]
DNS library - Exploring RustFFT's SIMD Architecture
- Understanding Yew Part 1
- Transposing options/results with iterators
- Dark side of POSIX APIs
- Redesigning coca's Storage Abstraction
- Generic associated types encode higher-order functions on types
- Rust's SemVer Snares: Sizedness and Size
- Why using WebAssembly and Rust together improves Node.js performance
Rust Walkthroughs
- Building a runtime reflection system for Rust 🦀️ (Part 3)
- Writing a Kubernetes CRD Controller in Rust
- Adding FFI Support in x7
- Recursive Iterators in Rust
- Writing a Prometheus MPD Exporter
- Rust Programming Language Tutorial - How to Build a To-Do List App
- Diving into Rust with a CLI
- Creating a GUI for a Rust application
- Zero to Production #6.5: An Introduction To Property-Based Testing In Rust
- Holiday Hacking - Tracking my heart rate while playing Call of Duty
- Introducing Rustybot (part 1 of n)
- Introducing Rustybot (part 2 of n)
- Extracting Files From an Archive Format I Understand Way Too Much
- [series] eBPF Networking in Rust
- [video] FLTK Rust: use FLUID (RAD tool) with Rust
Miscellaneous
- Rust 1.49.0 Released With 64-bit ARM Linux Support Rated Tier-1
- Rust will drop official support for Windows XP
- Rust is the second most used language for Advent of Code, after Python
- Rust grew 94% on O'Reilly online learning this year
- Rust is now overall faster than C in benchmarks
Crate of the Week
This week's crate is nom-supreme, a crate of utilities for nom parsers, especially for great parse error handling.
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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
322 pull requests were merged in the last week
- add edition 2021
- sync
rustc_codegen_cranelift
- diag: print enum variant instead of enum type
- suggest renaming or escaping when fixing non-snake-case identifiers which would conflict with keywords
- support pattern as const parents in
type_of
- parse const generics defaults
- miri: make size/align_of_val work for dangling raw ptrs
- slightly more typed interface to panic implementation
- remove all
doc_comment!{}
hacks by using#[doc = expr]
where needed - make
copy
(_nonoverlapping
) const - add
Iterator::intersperse
- add fallible
Box
,Arc
, andRc
allocator APIs - do not create dangling
&T
inWeak<T>::drop
- de-stabilize unsized raw ptr methods for
Weak
Rust Compiler Performance Triage
- 2020-01-05:
0 Regressions, 2 Improvements, 2 Mixed
This was a somewhat quiet week with the exception of large gains to the
ctfe
(const function) stress test benchmark caused by changes to how rustc serializes and deserializes cache from disk.
Triage done by @rylev.
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 7, Berlin, DE - Rust Hack and Learn - Berline.rs
- January 11, Seattle, WA, US - Monthly Meetup - Seattle Rust Meetup
- January 12, Saarbücken, Saarland, DE - Meetup: 7u16 (virtual) - Rust Saar
- January 14, San Diego, CA, US - San Diego Rust January 2021 Tele-Meetup - San Diego Rust
North America
- January 14, Columbus, OH, US - Monthly Meeting - Columbus Rust Society
- January 14, Provo, UT, US - The Blue Pill: Rust on Microcontrollers (Jan / Third Round) - Utah 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
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Think of "it works" when you have UB like this: You've flipped a coin 1 time and it's come up heads and you've concluded it's never tails.
– @mirashii on the community discord
Thanks to Michael Bryan for the suggestion.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.