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
Tooling
Newsletters
Observations/Thoughts
- A Story of Rusty Containers, Queues, and the Role of Assumed Identity
- As above, so below: Bare metal Rust generics
- First thoughts on Rust vs OCaml
- The problem of safe FFI bindings in Rust
- That's so Rusty!
- Profiling Doesn't Always Have To Be Fancy
- Why I like Piston, A Rust game engine
- The CXX Debate
- [video] Bending the curve: A personal tutor at your fingertips
Learn Standard Rust
- Why can't I early return in an if statement in Rust?
- Bleed Less during Runtime with Rust's Lifetime
- A Javascript Developer's Cheatsheet for Rust
- [video] RustConf 2020 - Macros for a More Productive Rust
- [video] RustConf 2020 - Rust for Non-Systems Programmers
Learn More Rust
- Different levels of Async in Rust
- How to run Rust on Arduino Uno
- Let's build a single binary gRPC server-client with Rust in 2020 - Part 1
- Writing a Test Case Generator for a Programming Language
- Day 12: Write web app with actix-web - 100DaysOfRust
- Kernel printing with Rust
- Running Animation in Amethyst
- [PL] CrabbyBird #0 Pierwsza przygoda z Rustem i Godotem
- [video] Build a Smart Bookmarking Tool with Rust and Rocket Video Series
- [video] RustConf 2020 - Error Handling Isn't All About Errors
- [video] RustConf 2020 - Under a Microscope: Exploring Fast and Safe Rust for Biology
- [video] RustConf 2020 - My First Rust Project: Starting a 2D game with Amethyst
- [video] RustConf 2020 - Controlling Telescope Hardware with Rust
Project Updates
- Rustsim becomes Dimforge
- Announcing the Rapier physics enginge
- defmt, a highly efficient Rust logging framework for embedded devices
- Scaling Bevy
- One year of Nushell
Miscellaneous
- Rust-style futures in C
- Porting a Golang and Rust CLI tool to D
- How to Read First Impression Posts
- [audio] The Virtual World - Embedded Rust & Ferrous Systems - James Munns
- [audio] Rust GameDev Podcast - Interview with Herbert Wolverson (Bracket-Lib)
- [video] Before Main: How Executables Work on Linux
- [video] RustConf 2020 - Opening Keynote
- [video] RustConf 2020 - How to Start a Solo Project that You'll Stick With
- [video] RustConf 2020 - Closing Keynote
Crate of the Week
This week's crate is pdf, a crate for reading PDF files.
Thanks to S3bk 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
292 pull requests were merged in the last week
- remove fast path in reallocation for same layout sizes
- missing doc examples lint improvements
- promote missing_fragment_specifier to hard error
- polymorphize: if any param in a predicate is used, then all are used
- make
OnceCell<T>
transparent to dropck - don't panic in
Vec::shrink_to_fit
- improve codegen for
align_offset
- add
Arc::new_cyclic
- new zeroed slice
- make
<*const T>::is_null
const fn - stabilize
ptr_offset_from
- use
min_specialization
in libcore - const floating point bitcasts and classification
- compiler-builtins: add mips/mips64 compiler-rt fallbacks so that libgcc is not required
- pin-utils: deprecate unsafe pin projection macros
- git2: fix dangling pointer in format_email
- git2: add support for zlib-ng
- cargo: remove unnecessary allocations
- rust-bindgen: do generate unnamed enums, as they can be referred to by members and others
Rust Compiler Performance Triage
- 2020-08-24: 1 regression, 4 improvements.
This week included a major speedup on optimized builds of real-world crates (up to 5%) as a result of the upgrade to LLVM 11.
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
Tracking Issues & PRs
- [disposition: merge]Stabilize deque_make_contiguous
- [disposition: merge]Tracking issue for hint::spin_loop (renamed sync::atomic::spin_loop_hint)
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Online
- September 2. Johannesburg, ZA - Monthly Joburg Rust Chat! - Johannesburg Rust Meetup
- September 2. Dublin, IE - Rust Dublin September Remote Meetup
- September 2. Indianapolis, IN, US - Indy Rust - Indy.rs - with Social Distancing
- September 3. Berlin, DE - Berlin.rs - Rust Hack and Learn
- September 8. Saarbrücken, DE - Rust-Saar Meetup -
3u16.map_err(...)
North America
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
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Rust is a very different beast for me. It is a much bigger and much more capable language. However, I've found that it is, in many ways, a lot more restrictive in how you can approach problems. I frequently find myself being perplexed at how to eloquently solve a problem. When I discover the idiomatic way of doing it I'm usually both blown away by the brilliance of it and a bit disheartened by how difficult it would be to come up with that solution by myself :-).
Thanks to Stephan Sokolow for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.