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.
Check out this week's This Week in Rust Podcast
Updates from Rust Community
News & Blog Posts
- Announcing Rustup 1.22.0
- Ownership of the standard library implementation
- Compiler Team 2020-2021 Roadmap Meeting Minutes
- Back to old tricks ..(or, baby steps in Rust)
- Small strings in Rust
- Choosing a Rust web framework, 2020 edition
- Writing Interpreters in Rust: a Guide
- Transpiling A Kernel Module to Rust: The Good, the Bad and the Ugly
- Bad Apple!! and how I wrote a Rust video player for Task Manager!!
- Boa release v0.9 and make use of Rust's measureme
- RiB (Rust in Blockchain) Newsletter #13
- 7 Things I learned from Porting a C Crypto Library to Rust
- This Month in Rust GameDev #11 (June 2020)
- Writing a winning 4K intro in Rust
- Ringbahn II: the central state machine
- Bastion floating on Tide - Part 2
- Porting Godot Games To Rust (Part 1)
- Image decay as a service
- IntelliJ Rust Changelog #125
- Abstracting away correctness
- Rendering in Rust
- Super hero Rust fuzzing
- What Is a Dangling Pointer?
- Simple Rocket Web Framework Tutorial | POST Request
- Adventures of OS - System Calls
- Allocation API, Allocators and Virtual Memory
- Cargo [features] explained with examples
- Concurrency Patterns in Embedded Rust
- Getting started with WebAssembly and Rust
- How to Write a Stack in Rust
- Implementing WebSockets in Rust
- rust-analyzer changelog 32
- Rust for JavaScript Developers - Functions and Control Flow
- Rust: The New LLVM
- Using Rust and WebAssembly to Process Pixels from a Video Feed
- WebAssembly with Rust and React (Using create-react-app)
- [Portuguese] Aprendendo Rust: 01 - Hello World
- [audio] Mun
- [audio] Rust and machine learning #3 with Alec Mocatta (Ep. 109)
- [video] Authentication Service in Actix - Part 1: Configuration
- [video] Rust FLTK gui tutorial
Crate of the Week
This week's crate is suckit, a tool to recursively download a website.
Thanks to Martin Schmidt 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.
No issues were proposed for CfP.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
308 pull requests were merged in the last week
- add
format_args_capture
feature - don't implement Fn* traits for
#[target_feature]
functions - fix wasm32 being broken due to a NodeJS version bump
- handle
macro_rules!
tokens consistently across crates - implement
slice_strip
feature - make
likely
andunlikely
const, gated by featureconst_unlikely
- optimise fast path of checked_ops with
unlikely
- provide more information on duplicate lang item error.
- remove
TypeckTables::empty(None)
and make hir_owner non-optional. - remove unnecessary release from Arc::try_unwrap
- serialize all foreign
SourceFile
s into proc-macro crate metadata - stabilize
#[track_caller]
. - use WASM's saturating casts if they are available
- use
Span
s to identify unreachable subpatterns in or-patterns - Update the rust-lang/llvm-project submodule to include AVR fixes recently merged
- mir-opt: Fix mis-optimization and other issues with the SimplifyArmIdentity pass
- added
.collect()
intoString
fromBox<str>
- impl
From<char>
forString
- linker: create
GNU_EH_FRAME
header by default when producing ELFs - resolve: disallow labelled breaks/continues through closures/async blocks
- ship rust analyzer
- chalk: add type outlives goal
- chalk: allow printing lifetime placeholders
- chalk: support for ADTs
- hashbrown: add RawTable::erase and remove
- hashbrown: expose RawTable::try_with_capacity
- hashbrown: improve RawIter re-usability
- libc: add a bunch of constants and functions which were missing on Android
- libc: add more WASI libc definitions.
- libc: declare
seekdir
andtelldir
for WASI. - stdarch: fix or equals integer comparisons
- cargo: write GNU tar files, supporting long names.
- crates.io: use default branch alias instead of "master"
- clippy: added restriction lint: pattern-type-mismatch
- clippy: suggest
Option::map_or
(_else
) forif let Some { y } else { x }
- rustfmt: do not duplicate const keyword on parameters
- rustfmt: do not remove fn headers (e.g., async) on extern fn items
- rustfmt: pick up comments between trait where clause and open block
Rust Compiler Performance Triage
- 2020-07-07. One unimportant regression on a rollup; six improvements, two on 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:
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: Add a new
#[instruction_set(...)]
attribute for supporting per-function instruction set changes - Inline
const
expressions and patterns - Inline assembly
Tracking Issues & PRs
- [disposition: merge] stabilize const mem::forget
- [disposition: merge] Stabilize casts and coercions to
&[T]
in const fn - [disposition: merge] mv std libs to std/
- [disposition: merge] Stabilize
transmute
in constants and statics but not const fn - [disposition: merge] Stabilize const_type_id feature
- [disposition: merge] Accept tuple.0.0 as tuple indexing (take 2)
New RFCs
Upcoming Events
Online
- July 9. Berlin, DE - Rust Hack and Learn
- July 9. San Diego, CA, US - July 2020 Tele-Meetup
- July 13. Seattle, WA, US - Seattle Rust Meetup - Monthly Meetup
- July 16. Turin, IT - Rust Italia - Gruppo di studio di Rust
North America
- July 8. Atlanta, GA, US - Rust Atlanta - Grab a beer with fellow Rustaceans
- July 9. Lehi, UT, US - Utah Rust - The Blue Pill: Rust on Microcontrollers
- July 15. Vancouver, BC, CA - Vancouver Rust - Rust Study/Hack/Hang-out night
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
- Rust Developer at 1Password, Remote (US or Canada)
- Security Engineer at 1Password, Remote (US or Canada)
- Part-time Backend Engineer at Tagnifi, Remote (North America)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Rust is like a futuristic laser gun with an almost AI-like foot detector that turns the safety on when it recognises your foot.
Thanks to Synek317 for the suggestions!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.