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
- Announcing Rustup 1.24.0
- [Inside] Congrats to compiler team member Aaron Hill
- [Foundation] Introducing Josh Stone
- [Foundation] Introducing Lars Bergstrom
Project/Tooling Updates
- rust-analyzer Changelog #74
- IntelliJ Rust Changelog #146
- Lemmy Release v0.11.0
- simdutf v0.1.1 - A small step for semver, one giant leap for performance
- The playable demo of Outer Wonders, our cute, colorful and Rust-powered puzzle game, is live on itch.io for Windows and Linux! Thank you Rust community for creating such awesome tools!
Observations/Thoughts
- Rust Notebooks with Evcxr: Interview with David Lattimore
- Costs of iterators and Zero Cost Abstractions in Rust (with video)
- Move Constructors in Rust: Is it possible?
- basedrop: a garbage collector for real-time audio in rust
- Road to TurboWish; Part 1: Goals
- Road to TurboWish; Part 2: Stories
- The Pains of Path Parsing
- If you could re-design Rust from scratch today, what would you change?
- Red & blue functions are actually a good thing
Rust Walkthroughs
- Creating privacy-preserving signatures in Rust with BBS+
- Late Night Confessions — Building a Website Using Rust, Rocket, Diesel, and Askama - Part 2
- How to Build a Custom Test Harness in Rust
- Introduction to gRPC in Rust
- Writing a Postgres SQL Pretty Printer in Rust: Part 2
- [series] A journey into Rust
- [ZH] [series] Build GraphQL services based on Async Rust using tide + async-graphql + mongodb (基于 Async Rust 构建 GraphQL 服务,使用 tide + async-graphql + mongodb) - Part 2
- [ZH] [series] Build GraphQL services based on Async Rust using actix-web + async-graphql + rbatis + postgresql / mysql (基于 actix-web + async-graphql + rbatis + postgresql / mysql 构建异步 Rust GraphQL 服务) - Part 1
- [video] What is Rust and why is it important?
- [video] Using Iterator::collect in Rust
- [video] RustConf 2020 - Macros for a More Productive Rust by jam1garner
Papers/Research Projects
Miscellaneous
- An Interview With Linus Torvalds: Linux and Git
- Programming languages: JavaScript has most developers but Rust is the fastest growing
- Parts of Tensorboard are being rewritten in Rust for a 100x to 400x speedup
- Are we finally about to gain guaranteed Tail Calls in Rust?
- GitHub Actions best practices for Rust projects
Crate of the Week
This week's crate is cargo-rr, a cargo subcommand to use the time-traveling rr debugger on our code.
Thanks to Willi Kappler for the nomination
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.
jsonschema-rs: User-defined validation for the format keyword
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
350 pull requests were merged in the last week
- use LLVM's new saturating float-to-int intrinsics
- enable sanitizers for
x86_64-unknown-linux-musl
- add coverage to
continue
statements - further split up
const_fn
feature flag - various const parameter defaults improvements
- tweak trait not
use
d suggestion - on stable, suggest removing
#![feature]
for features that have been stabilized - improve diagnostics for function passed when a type was expected
- add suggestion to "use break" when attempting to implicit-break a loop
- suggest
.as_ref()
on borrow error involvingOption
/Result
- implement a lint that highlights all moves larger than a configured limit
- introduce
CompileMonoItem
DepNode
- cautiously add
IntoIterator
for arrays by value - stabilize
Duration::MAX
- stabilize
core::array::
{from_ref
,from_mut
} in 1.53.0 - implement
TrustedRandomAccess
forTake
iterator adapter - format
Struct { .. }
on one line even with{:#?}
- added
CharIndices::offset
function - improve rebuilding behaviour of
BinaryHeap::retain
- hashbrown: add an
allocator()
getter toHashMap
andHashSet
- libz: disable forced zlib vendoring on musl
- cargo: some changes to rustdoc fingerprint checking
- rustdoc: remove most fields from
ExternalCrate
- clippy: refactor MSRV aliases
- clippy: finish MSRV for
cloned_instead_of_copied
- clippy:
manual_unwrap_or
: fix invalid code suggestion due to macro expansion - clippy:
cloned_instead_of_copied
MSRV - clippy: add
flat_map_option
lint - clippy:
unused_io_amount
detects.read().ok()?
- clippy: add lint to check for boolean comparison in assert macro calls
Rust Compiler Performance Triage
It's always nice to have a week without any regressions and 2 small improvements 🎉🎉.
Triage done by @rylev. Revision range: 6df26f8..537544
0 Regressions, 2 Improvements, 0 Mixed
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
- [disposition: merge] RFC: Reserved prefixes in the 2021 edition
- [disposition: postpone] Enum variant types
Tracking Issues & PRs
- [disposition: merge] Add default search path to
Target::search()
- [disposition: merge] parser: Remove support for inner attributes on non-block expressions
- [disposition: merge] Tracking Issue for {HashMap,BTreeMap}::into_{keys,values}
New RFCs
Upcoming Events
Online
- April 28, Online - Ockam Open Source Community Call - Live coding walkthrough of building end-to-end encrypted communication in Rust
- May 3, 2021, Online - Cloud Native Rust Day
- May 4, 2021, Online - Cloud Native WASM Day
- May 4, 2021, Dublin, IE - Rust Dublin May Remote Meetup - Rust Dublin
- May 4, Buffalo, NY, US - Buffalo Rust User Group, Tues May 4th - Buffalo Rust Meetup
- May 11, Seattle, WA, US - Monthly meetup - Seattle Rust Meetup
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
Collabora
Paige
Confio GmbH
CoBloX
Gattaca
Wallaroo
Parity Technologies
Kollider
Chainflip
- Rust / C++ Backend Engineer (Berlin, DE)
- Security Engineer (Berlin, DE)
- Junior/Mid Backend Rust/C++ Developer (Melbourne, AU)
Kraken
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
this error message is UNREAL
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.