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
- Building a shared vision for Async Rust
- [Inside] 1.51.0 pre-release testing
- [Foundation] Introducing Bobby Holley
- [Foundation] Introducing Tyler Mandry
- 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
- 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
- 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!
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
- more precise spans for HIR paths
const_evaluatable_checked: stop eagerly erroring in
- miri: improve error message of calling unsupported non-"C"/"system"-ABI foreign function
- make source-based code coverage compatible with MIR inlining
or_patterns(RFC 2535, 2530, 2175)
- add a check for ASCII characters in
- fix invalid slice access in
- constify copy related functions
as_strmethod for split whitespace str iterators
- fix overflowing length in
- cargo: allow cargo update to operate with the
- 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
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.
- [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
No new RFCs were proposed this week.
- 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
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
you might have been
the diff was so trivial
Thanks to Josh Triplett for the suggestion.