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
No newsletters this week.
Official
- Call for 2021 Roadmap Blogs Ending Soon
- Announcing the Error Handling Project Group
- [Inside] Intra-doc links close to stabilization
Tooling
Observations/Thoughts
- Porting EBU R128 audio loudness analysis from C to Rust
- Types Over Strings: Extensible Architectures in Rust
- Why Not Rust?
- Why not rust for security?
- Why Rust is not a mature programming language
- My Favorite Rust Signature
- Is Rust a Functional Language in Disguise?
- Async Iteration Semantics
- A New Backend for Cranelift, Part 1: Instruction Selection
- Throw-away code
- I started to learn Rust
- Pure AST based linting sucks
- Potential improvements for Rust embedded abstractions
Learn Standard Rust
- TL;DR Rust
- Variables And Mutability In Rust
- Rust For Beginners Workshop Track
- Learning Rust: OMG WTF RS – resources to help you get started with Rust
- Write your own Rust compiler plugin in only 10 lines!
- Optional arguments in Rust
- Implementation of Binary Search Tree in Rust
- [FR] Le concept de “propriétaire” ou “ownership” en Rust
- [TH] Rustler 101: Ferris Say
Learn More Rust
- Dynamic Iterators
- Low-Level Academy
- Writing an HTTP(S) Tunnel in Rust with tokio.
- Down the Yak Hole of TLS
- That's so Rusty: Metaprogramming
- The Bevy Game Engine #1
- Face Detection in Node.js with Rust and WebAssembly
- [video] FLTK Rust: Using FLTK on Android
Project Updates
Miscellaneous
- Extended CfP deadline & new speaker perks!
- Neovim and Rust
- How I stopped worrying and started coding in Rust 🦀️
- Haskell's Children
- A Bazel Persistent Worker for Rust
- ESXi Binaries with Rust
- j4rs: JavaFX support (WIP)
- Porting PineTime Watch Face from C to Rust On RIOT with LVGL
- [JP] Rustのasyncでgoroutineの速度に勝つ
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:
- Rust 2021 - Ethical Development
- My Rust 2021 Wishlist for the 2021 Roadmap
- Rust 2021: Lower the barriers
- Request for a better [patch] in cargo
- What I wish for #Rust2021
- Rust in 2021
- Rust 2021
- As a hobbyist rust developer, I want to think less about error handling
- Rust 2021
- My Least Favorite Rust Type
- My wish list for Rust 2021
- My Rust 2021 roadmap
- Rust Roadmap 2021: Allowing for arbitrary size integer primitives
- Rust Roadmap 2021: Adding a useful dev mode and making it the default
- Rust in 2021
- What's Stopping Me From Using Rust?
- Pastebin submission
- Hacker News submission
Crate of the Week
This week's crate is cargo-about, a handy cargo subcommand to list the dependencies and their licenses!
Thanks to Jimuazu 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
373 pull requests were merged in the last week
- let user see the full type of type-length limit error
- don't allow implementing trait directly on
type-alias-impl-trait
- give even better suggestion when matching a const range
- introduce a
PartitioningCx
struct - initial support for
riscv32gc_unknown_linux_gnu
- note when a a move/borrow error is caused by a deref coercion
- new MIR optimization pass to reduce branches on match of tuples of enums
- improve diagnostics for lifetime after
&mut
- implement a generic Destination Propagation optimization on MIR
- miri: support non-rlib extern files
- add
as_str()
tostring::Drain
- make all methods of
Duration
unstably const - add
[T]: TryFrom<Vec<T>>
- stabilize some
Result
methods as const - stabilize some
Option
methods as const - avoid useless
sift_down
whenstd::collections::binary_heap::PeekMut
is never mutably dereferenced - futures: implement
try_take_while
- clippy: change the criteria of
interior_mutable_const
Rust Compiler Performance Triage
- 2020-09-21: 2 Regressions, 5 Improvements, 4 Mixed
This was the first week of semi-automated perf triage, and thank goodness: There was a lot going on. Most regressions are either quite small or already have a fix published.
#72412 is probably the most interesting case. It fixes a pathological problem involving nested closures by adding cycle detection to what seems to be a relatively hot part of the code. As a result, most users will see a slight compile-time regression for their crates.
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:
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]Make RawFd implement the RawFd traits
- [disposition: merge]Permit uninhabited enums to cast into ints
- [disposition: merge]Stabilize move_ref_pattern
- [disposition: merge]Write manifest for MAJOR.MINOR channel to enable rustup convenience
- [disposition: merge]Explicitly document the size guarantees that Option makes.
- [disposition: merge]Stabilize intra-doc links
- [disposition: merge]Add PartialEq impls for Vec <-> slice
- [disposition: merge]target-feature 1.1: should closures inherit target-feature annotations?
- [disposition: merge]might_permit_raw_init: also check aggregate fields
New RFCs
Upcoming Events
Online
- September 29. Dallas, TX, US - Dallas Rust - Last Tuesday
- October 1. Berlin, DE - Berline.rs - Rust Hack and Learn
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
- Backend Engineer, Kraken Futures - Rust at Kraken (London, UK, EU)
- Backend / Quant Developer at Kraken (Remote EU)
- Senior Software Development Engineer - AWS EC2 at Amazon (Arlington, VA, US)
- Wasm Compiler Engineer at Parity (Berlin, DE, London, UK, Remote)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Sometimes you don't want the code to compile. The compiler's job is often to tell you that your code doesn't compile, rather than trying to find some meaning that allows compiling your code.
Thanks to Jacob Pratt for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.