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
No Official Blog Posts this week
Newsletters
No Newsletters this week
Project/Tooling Updates
- MiniWASM - A minimalist Rust WebAssembly project template
- Stepper 0.5 (formerly Step/Dir) - Universal Stepper Motor Interface
- Rust Analyzer Changelog #68
- IntelliJ Rust Changelog #143
Observations/Thoughts
- Why the Starship shell prompt is built in Rust (interview with project creator)
- Rust vs. Go: Why They’re Better Together
- Cranelift, Part 3: Correctness in Register Allocation
- Making Great Docs with Rustdoc
- Writing a Postgres SQL Pretty Printer in Rust: Part 1
- Data Manipulation: Polars vs Rust
Rust Walkthroughs
- Rust Koans
- How to send emails with Rust
- Writing Pong in Rust for my OS Written in Rust
- Arenas in Rust
- Zero Downtime Deployments
- Deploy A Rust Website on Heroku
- One enum to rule them all
- Writing a 3D Shooter using rg3d - #3 - Bots, AI
- Developing High Performance Apache Cassandra™ Applications in Rust (Part 1)
- Strings in Rust
- Rust - Reqwest examples
- libp2p tutorial: Build a peer-to-peer app in Rust
- [video] Rust for Beginners - Watch me code the Rustlings Tutorial
- [video] Crust of Rust: The Drop Check (live edition)
Papers and Research Projects
*No Papers and Research Projects This Week
Miscellaneous
- rkyv is faster than {bincode, capnp, cbor, flatbuffers, postcard, prost, serde_json}
- 100ms delays with Rust on Lambda
- Speed of Rust vs C
- Rust Playground At Your Fingertips
- totally_safe_transmute, line-by-line
- Rust Graphics Crates
- C++ to Rust - or how to render your mindset
- Paid Online Research: Rust Programmers’ Experience and Challenges
Crate of the Week
This week's crate is ibig, a crate of fast big integers.
Thanks to Willi Kappler 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.
- delta-rs has many good first issues for those who want to learn Delta Lake or Rust
- dotenv-linter has many good first issues
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
365 pull requests were merged in the last week
- expand: do not allocate
Lrc
forallow_internal_unstable
list unless necessary - account for
if (let pat = expr) {}
- introduce
proc_macro_back_compat
lint, and emit fortime-macros-impl
- eagerly construct bodies of THIR
- store HIR attributes in a side table
- add
StatementKind::CopyNonOverlapping
- tweaks to stable hashing
rustc_query_system
: simplifyQueryCache::iter
- mir-opt-level 4 is the new 3
- miri: ensure we catch incorrectly unwinding calls
- miri: check callee ABI when Miri calls closures
- don't implement
mem::replace
withmem::swap
- fix
io::copy
specialization usingcopy_file_range
when writer was opened withO_APPEND
- added
#[repr(transparent)]
tocore::cmp::Reverse
- add
Option::get_or_default
- implement
Extend
andFromIterator
forOsString
- improve
sift_down
performance inBinaryHeap
- fix leak in
Vec::extend_from_within
- regex: substantially reduce regex stack size
- clippy: implement new lint:
if_then_some_else_none
Rust Compiler Performance Triage
A generally positive albeit quiet week though many of the perf improvements were gaining performance back from previous regressions. We'll need to continue to keep an eye on rollups as there were two that caused small performance changes.
Triage done by @rylev. Revision range: edeee..86187
1 Regression, 4 Improvements, 1 Mixed
2 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:
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
- RFC: Declarative macro metavariable expressions
- Change visibility scoping rules for macro_rules macros
Tracking Issues & PRs
- [disposition: merge] rustdoc: allow list syntax for #[doc(alias)] attributes
- [disposition: merge] Deprecate
doc(include)
- [disposition: merge] Stabilize or_patterns (RFC 2535, 2530, 2175)
- [disposition: merge] Add IEEE 754 compliant fmt/parse of -0, infinity, NaN
- [disposition: close]
impl<A, B>
IntoIterator for (A, B) as Zip - [disposition: merge] tracking issue for
debug_non_exhaustive
feature - [disposition: close] [Edition vNext] Consider deprecating weird nesting of items
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Online
- March 18, Manchester, UK - Rust Manchester Opening Night - Rust Manchester
- March 18, Linz, AT - Rust Meetup Linz - 8th Edition - Rust Linz
- March 18, Berlin, DE - Rust Hack and Learn - Berline.rs
- March 23, Berlin, DE - Rust and Tell - 2021 Kickoff - Berline.rs
- March 25. Barcelona, ES - BcnRust Meetup.
- March 30, Dallas, TX, US - Last Tuesday - Dallas 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
Protocol Labs
Manta Network
e.ventures
Oso
- Software Engineer (New York, NY, US or Remote)
- Engineering Manager (New York, NY, US or Remote
- Developer Advocate (New York, NY, US or Remote
Kraken
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
I think the security of the internet is incredibly important obviously and I want it to be secure and I think bringing rust there is absolutely going to help it. Just by default it eliminates some of the most classic types of vulnerabilities.
But I don't think that's the most exciting part. I think the most exciting part is that the set of people for whom it is possible to implement these types of things, like who writes coreutils, who writes curl, who does those things. That used to be a really small pool of people. That had to be people who knew the dark arts, and only them and only their buddies or something.
And it's the goal of rust to empower that to be a larger group of people and ultimately I think that that is what is going to happen which means the sheer number of people will be larger, and also the diversity of that set of people is going to grow. And I that that that will probably actually do more for the security and usefulness of these tools than eliminating undefined behaviour.
– Ashley Williams on twitch (quote starts at 46:48)
Thanks to Nixon Enraght-Moony for the suggestion.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.