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.
Updates from Rust Community
No newsletters this week.
- Call for 2021 Roadmap Blogs Ending Soon
- Announcing the Error Handling Project Group
- [Inside] Intra-doc links close to stabilization
- 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
- 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!
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
- give even better suggestion when matching a const range
- introduce a
- initial support for
- 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
- implement a generic Destination Propagation optimization on MIR
- miri: support non-rlib extern files
- make all methods of
[T; N]: TryFrom<Vec<T>>
- stabilize some
Resultmethods as const
- stabilize some
Optionmethods as const
- avoid useless
std::collections::binary_heap::PeekMutis never mutably dereferenced
- futures: implement
- clippy: change the criteria of
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.
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.
- [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
- September 29. Dallas, TX, US - Dallas Rust - Last Tuesday
- October 1. Berlin, DE - Berline.rs - Rust Hack and Learn
- 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!