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
Tooling
Observations/Thoughts
- Rust after the honeymoon
- Building the Fastest RaptorQ (RFC6330) Codec in Rust
- Learning Rust through open source and live code reviews
- My Mistakes Making a Canvas Based Game with Rust and WebAssembly
- A New Backend for Cranelift, Part 1: Instruction Selection
- Optional parameters in Rust
- Building an async-compatible actor system
- [video] Contract as Code as Contract: Using Rust to Unify Specification and Implementation
Learn Simple Rust
- Iterators in Rust
- Learn Rust by building the game Snake
- That's so Rusty! Fearless concurrency
- Making a Simple Calculator in Rust
- Patterns of fallible iteration
- [video] Learn Rust Together Part 5: Structs and Enums!
- [video] 3. #everyonecancontribute cafe: Gitpod & learning Rust
Learn More Rust
- Deploying a Rust HTTP server to DigitalOcean App Platform
- Make A Language - Part Eight: Function Definitions
- Supercharge your Electron apps with Rust
- [ZH] Build a Shoot 'em up game with framework Amethyst
- [video] Rust FFI: Microsoft Flight Simulator SDK Part 1
- [video] Fuzz Testing popular Rust library in 5 min using cargo-fuzz / libfuzzer
Project Updates
Miscellaneous
- Collect in Rust, Traverse in Haskell and Scala
- Proving that 1 + 1 = 2 in Rust
- What should I program?
- Getting back to C++ after Rust is a pain.
Call for Blog Posts
The Rust Core Team wants input from the community! If you haven't already, read the official blog and submit a blog post - it will show up here! Here are the wonderful submissions since the call for blog posts:
Crate of the Week
This week's crate is paste, a macro to concatenate identifiers (which would otherwise be nightly only).
Thanks to mark-i-m 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!
- Create a Rust-Client for SirixDB
- the-way: Highlight parameters in shell snippet when copying
- the-way: Replace copy_to_clipboard code with arboard
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
409 pull requests were merged in the last week
- resolve: improve "try using the enum's variant"
- Fix
LitKind
's byte buffer to use refcounted slice - Replace
(Body, DefId)
withBody
where possible - perf:
UninhabitedEnumBranching
avoid n² - Fix span for unicode escape suggestion
- Implement
advance_by
,advance_back_by
foriter::Chain
- Add
PartialEq
impls forVec
↔slice
- stdsimd: Use xor to implement
Neg::neg
for floats
Rust Compiler Performance Triage
- 2020-10-13: 0 Regressions, 3 Improvements, 3 Mixed
Overall, fairly busy week, but without major regressions that need to be addressed.
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
- RFC: Promote aarch64-unknown-linux-gnu to a Tier-1 Rust target
- Access to traits' associated functions and constants from trait objects
Tracking Issues & PRs
- [disposition: merge] stabilize union with 'ManuallyDrop' fields and 'impl Drop for Union'
- [disposition: merge] stop promoting union field accesses in 'const'
- [disposition: merge] passes:
check_attr
on more targets - [disposition: merge] resolve: Do not put nonexistent crate
meta
into prelude - [disposition: postpone]Tracking issue for experiments around coercions, generics, and Copy type ergonomics
New RFCs
Upcoming Events
Online
- Octover 15. Berlin, DE - Rust Hack and Learn - Berline.rs
- October 20. Denver, CO, US - Rust Denver - Data Science with Rust
- October 21. New York, NY, US - A Journey into the Nucleus at Dropbox with Parker Timmerman - Rust NYC
- October 21. Vancover, BC, CA - Rust Study/Hack/Hang-out night - Vancouver Rust
- October 22. Edinburgh, UK - Fluence: interface-types for server-side WebAssembly modules - Rust Edinburgh
- October 27. 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
- Lead Software Engineer at Stake Technologies (SG, Remote)
- Software Engineer at Stake Technologies (SG, Remote)
- Service Engineer [Rust] at Narrative (Auckland, NZ - Remote within New Zealand)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Just because Rust allows you to write super cool non-allocating zero-copy algorithms safely, doesn’t mean every algorithm you write should be super cool, zero-copy and non-allocating.
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.