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
- This Month in Rust GameDev #19 - February 2021
- This Month in Rust OSDev (February 2021)
- RiB Newsletter #21 - More Rust and blockchains
Project/Tooling Updates
- rust-analyzer Changelog #67
- rust-gpu v0.3
- cargo-generate 0.6.0
- Automatically generate APIs for datasets using Rust, Arrow and Datafusion
Observations/Thoughts
- Serverless Rust Testing
- Rust's Type System is Turing-Complete
- Why I rewrote my Rust keyboard firmware in Zig: consistency, mastery, and fun
- Calling a private Rust function from outside of its module
- Safe, Flexible Aliasing with Deferred Borrows
- Evaluating Memory Models for Graph-Like Data Structures in the Rust Programming Language: Performance and Usability
- Rusts Universes
- How I significantly improved Giganotes app performance using Rust
Rust Walkthroughs
- Writing a 3D Shooter using rg3d - #1 - Character Controller
- Writing a 3D Shooter using rg3d - #2 - Weapons
- Writing Pong in Rust for my OS Written in Rust
- Replacing FastAPI with Rust: Part 6 - AWS Lambda
- Creating an Iterator in Rust
- Building an OpenStreetMap app in Rust, Part V
- [video] Learning Rust: Structs and Traits
- [video] Answers to StackOverflow's top Rust programming questions explained
- [video] (Live Coding) Learning Timely Dataflow
- [FA] [video] Rust in Farsi ツ
Papers and Research Projects
- Creusot is a tool for deductive verification of Rust code
- egg, a Rust library for e-graphs and equality saturation
Miscellaneous
- Debian running on Rust coreutils
- A friend and I made pipes-rs, a Rust clone of pipes.sh
- Half of curl's vulnerabilities are C mistakes
- [video] USENIX Enigma 2021 - Quantifying Memory Unsafety and Reactions to It
Crate of the Week
This week's crate is Sorceress, a Rust environment for sound synthesis and algorithmic composition.
Thanks to Zelda Hessler 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.
- rust-analyzer - Optimize MBE (macro by example) performance
- Our own "Papers and Research Projects" section needs filling!
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
369 pull requests were merged in the last week
- upgrade to LLVM 12
- backport some LLVM compile-time improvements
- add natvis for
Result
,NonNull
,CString
,CStr
, andCow
- change error about unknown attributes to a warning
- shrink the size of Rvalue by 16 bytes
- move check only relevant in error case out of critical path
- add
assert_matches!
macro - generalize
Write
impl forVec<u8>
toVec<u8, A>
- avoid unnecessary
Vec
construction inBufReader
- improve
slice.binary_search_by()
's best-case performance to O(1) - add {
BTreeMap
,HashMap
}::try_insert
- hashbrown: add
try_insert
- cargo: fix
filter_platform
to run on targets other than x86 - make rustdoc lints a tool lint instead of built-in
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:
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] rustdoc: allow list syntax for #[doc(alias)] attributes
- [disposition: merge] slice: Stabilize
IterMut::as_slice
. - [disposition: merge] Implement Extend and FromIterator for OsString
- [disposition: merge] Emit errors/warns on some wrong uses of rustdoc attributes
- [disposition: close] resolve: allow super in module in block to refer to block items
- [disposition: close] [Edition vNext] Consider deprecating weird nesting of items
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Online
- March 11, Columbus, OH, US - Monthly Meeting - Columbus Rust Society
- March 11, Lehi, UT, US - Show and Tell:
rustdoc
- Utah Rust - March 11, San Diego, CA, US - March 2021 Tele-Meetup - San Diego Rust
- March 13th, DE - Chemnitzer Linux Tage - Talk on Rust and its ecosystem
- March 16, Washington, DC, US - Rust and Tell Lightning Talks - Rust DC
- March 17, Vancouver, BC, US - Rust Study/Hack/Hang-out night
- March 18, Manchester, UK - Rust Manchester Opening Night - Rust Manchester
- March 18, Berlin, DE - Rust Hack and Learn - Berline.rs
- March 18, Florence, IT - Rewriting of a small component from C to Rust - RustLab 2021
- March 23, Berlin, DE - Rust and Tell - 2021 Kickoff - Berline.rs
- March 25. Barcelona, ES - BcnRust 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
e.ventures
Launchbadge, LLC.
Manta Network
Tweede golf
Parity
- Rust Performance Engineer (Remote)
- Rust P2P Network Engineer (Remote)
- and several other Rust Positions
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
it's funny, every time I run into a baffling borrow error, it's preventing me from committing a real, serious mistake
but it can take some thinking to figure out what exactly that mistake is..
sometimes the borrow checker feels like a wise sage on a mountain giving advice in riddles lol
Thanks to Daniel H-M for the suggestion.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.