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
- Building a shared vision for Async Rust
- [Inside] 1.51.0 pre-release testing
- [Foundation] Introducing Bobby Holley
- [Foundation] Introducing Tyler Mandry
Newsletters
Project/Tooling Updates
Observations/Thoughts
- The biggest threat to Rust's sustainability
- Safe Systems Programming in Rust
- The GPIO war: macro bunkers for typestate explosions
- A look back at asynchronous Rust
- Rust as an App Language
- How often does Rust change?
- Serving a single file over HTTP with Rust and Go
- The Case for the Typestate Pattern - The Typestate Pattern itself
- [ZH] Rust in Embedded World
- [video] Cheaply writing a fast interpreter - Neil Mitchell
Rust Walkthroughs
- Introduction to Apache Arrow with Rust
- How to execute shellcodes from memory in Rust
- Beginner's Guide to Rust Pattern Matching
- Writing a PostgreSQL Pretty Printer in Rust: Part 1.5
- Calling .NET APIs from Rust
- The magical applications of Zero-Sized Types in Rust
- Rust and Rocket - Zero to Deploy
- Learning to Fly: Let's simulate evolution in Rust! (pt 3)
- Building an OpenStreetMap app in Rust, Part VI
- Tutorial: Writing a tiny Entity Component System in Rust
- Implementing RAII guards in Rust
- [JP] [TECH] Actix web で HttpOnly な Cookie を設定する 🍪
- [video] The four-part "Overview of the Rust Programming Language" for beginners is now complete
Papers and Research Projects
No Papers or Research Projects this week
Miscellaneous
- Streaming using Bastion & Kafka - near consumer native correlation
- Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust
- Linus Torvalds on where Rust will fit into Linux
- Rust: integrating LLVM source-base code coverage with GitLab
Crate of the Week
This week's crate is egg, a project using e-graphs to provide a new way to build program optimizers and synthesizers.
Thanks to Daniel Nugent 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
389 pull requests were merged in the last week
- enable mutable noalias for LLVM >= 12 (Fingers crossed)
- allow registering tool lints with
register_tool
- more precise spans for HIR paths
const_evaluatable_checked
: stop eagerly erroring inis_const_evaluatable
- miri: improve error message of calling unsupported non-"C"/"system"-ABI foreign function
- make source-based code coverage compatible with MIR inlining
- stabilize
or_patterns
(RFC 2535, 2530, 2175) - stabilize
feature(osstring_ascii)
- stabilize
slice::IterMut::as_slice
- stabilize
assoc_char_funcs
andassoc_char_consts
- implement
String::remove_matches
- add a check for ASCII characters in
to_upper
andto_lower
- fix invalid slice access in
String::retain
- constify copy related functions
- add
as_str
method for split whitespace str iterators Vec::dedup_by
optimization- fix overflowing length in
Vec<ZST>
toVecDeque
- implement
TrustedLen
andTrustedRandomAccess
forRange<integer>
,array::IntoIter
,VecDequeue
's iterators - cargo: allow cargo update to operate with the
--offline
flag - cargo: refactor feature handling, and improve error messages
- rustdoc: reduce GC work during search
- rustfmt: fix issue 'double spaces between struct field prefix and identity when using long attributes
Rust Compiler Performance Triage
An overall busy but decent week for performance. While there were some performance regressions they were mostly small, and they were outnumbered by performance gains. Perhaps the most interesting news is not a compiler performance improvement but rather the introduction of no-alias optimizations at the LLVM level. This slightly hurts optimized build time performance in some cases, but it should make some workloads run faster after compilation.
Triage done by @rylev. Revision range: f24ce9b0..9b6339e4
2 Regressions, 5 Improvements, 3 Mixed
1 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
Tracking Issues & PRs
- [disposition: merge] Stabilize bufreader_seek_relative
- [disposition: merge] Add IEEE 754 compliant fmt/parse of -0, infinity, NaN
- [disposition: merge] Implement indexing slices with pairs of
core::ops::Bound<usize>
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Online
- March 25, Barcelona, ES - BcnRust Meetup.
- March 30, Munich, DE - Rust Remote #6 - Rust Munich
- March 30, Dallas, TX, US - Last Tuesday - Dallas Rust
- April 1, Berlin, DE - Rust Hack and Learn - Berline.rs
- April 6, Buffalo, NY, US - Buffalo Rust User Group - Buffalo Rust Meetup
Asia Pacific
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
MongoDB
IONQ
Pondurance
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
This is just to say,
I have rebased
the feature branch
opened against
masterand which
you might have been
already working
on fixingForgive me,
the diff was so trivial
so minor
so smol
Thanks to Josh Triplett for the suggestion.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.