Hello and welcome to another issue of This Week in Rust! Rust is a programming language empowering everyone to build reliable and efficient software. 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
Foundation
Project/Tooling Updates
- Zellij 0.23.0 released with new collaboration features
- SixtyFPS (GUI crate): Changelog for 19th of December 2021
- You can now buy Black Hat Rust with PayPal, Apple Pay & Google Pay
- This week in Databend #21: an elastic and reliable cloud warehouse
- This week in Fluvio #17: the programmable streaming platform
- Announcing Tokio Console 0.1
- Rust Analyzer Changelog #108
- IntelliJ Rust Changelog #162
- GCC Rust in 2021
Observations/Thoughts
- Contexts and capabilities in Rust
- Stop Whining about Rust Hype - A Pro-Rust Rant
- Thread Safety in C++ and Rust
- Rust in Production: Astropad
- Unbuffered I/O Can Make Your Rust Programs Much Slower
- [video] Safe && Portable Data Structure Design (10 minute lightning talk)
Rust Walkthroughs
- Cross-compiling Rust Lambdas on macOS without Docker
- A Beginner's Guide to Parsing in Rust
- Building a CEDICT parser in Rust with Nom
- [DE] Ferris Talk #4: Asynchrone Programmierung in Rust
- [ZH] 「Pin 三部曲」第二部之 《Rust Pin 进阶》
Miscellaneous
- TypeVille Call for Papers (ends 9th of January 2022)
- Homegrown rendering with Rust
- [audio] SE-Radio: Tim McNamara on Rust 2021 Edition
- [video] Web api benchmarking: Rust (Warp) vs Rust (actix-web)
- [PT] Olá e seja bem vindo a outra edição de esta semana em: Rust! #420 (08/12/2021). 🌟
Crate of the Week
This week's crate is kajiya, an experimental real-time global illumination renderer made with Rust and Vulkan.
llogiq is pretty pleased with himself for this suggestion.
Please 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 the Rust Project
340 pull requests were merged in the last week
- add user seed to
-Z randomize-layout
- improve suggestion to change struct field to
&mut
- suggest to specify a target triple when lang item is missing
- tweak errors coming from
for
-loop,?
and.await
desugaring - show the unused type for
unused_results
lint - recover on invalid operators
<>
and<=>
- perf: manually implement
Hash
forDefId
- enable
#[thread_local]
for all windows-msvc targets - add entry_ref API to HashMap
- add
[T]::as_simd(_mut)
- add
BinaryHeap::try_reserve
andBinaryHeap::try_reserve_exact
- add
io::Error::other
- avoid sorting in hash map stable hashing
- constify (most)
Option
methods - constify
bool::then
{,_some
} - make
MaybeUninit::zeroed
const
- mark defaulted
PartialEq
/PartialOrd
methods as const - optimize
vec::retain
performance - readd
track_caller
toResult::from_residual
- stabilize
destructuring_assignment
- stabilize
iter::zip
- stabilize
asm!
andglobal_asm!
- remove
P: Unpin
bound onimpl Stream for Pin
- futures: add
StreamExt::count
method - futures: limit
FuturesUnordered
max value ofyield_every
- cargo: detect filesystem loop during walking the projects
- cargo: display alias target on
cargo help <alias>
- rustdoc: fix source code page sidebar on mobile
- clippy: add
unnecessary_to_owned
lint - clippy: don't emit
return_self_not_must_use
lint ifSelf
already is marked as#[must_use]
- clippy: ensure that
return_self_not_must_use
is not emitted if the method already has#[must_use]
- clippy: fix
SAFETY
comment tag casing inundocumented_unsafe_blocks
- rustfmt: prevent duplicate comma when formatting struct pattern with ".."
Rust Compiler Performance Triage
Unfortunately a change introduced in rust-lang/rust#89836 has made performance across different compiler artifacts much more variable by embedding compiler version information (including a git commit hash) in demangled symbol names. This means that even if two compiler artifacts are built from the same exact source code (with only the git commit changed), the compiler will have slightly different performance characteristics. This makes comparisons across pull requests virtually impossible.
The compiler team is still deciding what to do to handle this, but in the mean time, performance testing is largely broken. This issue is currently being tracked inrust-lang/rustc-perf#1126.
Triage done by @rylev. Revision range: 404c847..3d57c61
2 Regressions, 2 Improvements, 23 Mixed; 9 of them in rollups 38 comparisons made in total
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
- No new RFCs entered Final Comment Period this week.
Tracking Issues & PRs
- [disposition: merge] Add UnwindSafe to Once
- [disposition: merge] Allow reverse iteration of lowercase'd/uppercase'd chars
New RFCs
- No new RFCs were published this week.
Upcoming Events
Rusty Events between 12/22/2021 - 1/15/2022 🦀
Online
- December 23, 2021 | Stuttgart, DE | Rust-Meetup | Rust Community Stuttgart
- December 28, 2021 | Dallas, TX, US | Dallas Rust - Last Tuesday | Dallas Rust
- January 5, 2022 | Indianapolis, IN, US | Indy.rs - with Social Distancing | Indy Rust
- January 6, 2022 | Nürnberg, DE | Rust Nürnberg online #8| Rust Nuremberg
- January 8, 2022 | Various cities | Rust GameDev Monthly Meetup | Rust GameDev
- January 11, 2022 | Seattle, WA, US | Monthly meetup | Seattle Rust Meetup
- January 12, 2022 | Boulder, CO, US | Monthly Meetup | Boulder Elixir and Rust
- January 12, 2022 | Los Angeles, CA, US | Live Coding Session - Mob Programming a Rust Code Kata [Virtual] Jan. 2022 | Rust Los Angeles
- January 12, 2022 | Stuttgart, DE | Rust-Meetup | Rust Community Stuttgart
North America
- January 6, 2022 | Austin, TX, US | Rust Lunch | Rust ATX
- January 12, 2022 | Atlanta, GA, US | Grab a beer with fellow Rustaceans | Rust Atlanta
- January 13, 2022 | Columbus, OH, US | Monthly Meeting | Columbus Rust Society
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
Astropad
Timescale
Tangram
Kraken
- Backend Engineer - Rust - Core Backend (Remote)
- Backend Engineer, Kraken Futures - Rust (Remote)
- Senior Rust Engineer - Banking (Remote)
Parity Technologies
- Rust Core Engineer - Solidity Compiler (Solang) (Remote)
- Rust Core Engineer - Smart Contract Platform (Remote)
- Multiple other Rust / Blockchain Engineering positions
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Important crab-related diagnostics improvement shipping in nightly @rustlang
error: Ferris cannot be used as an identifier --> src/main.rs:2:9 | 2 | let 🦀 = 123; | ^^ help: try using their name instead: `ferris` 3 | 4 | for i in 0..🦀 { |
Thanks to Julian Wollersberger for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, andrewpollack, U007D, kolharsam, joelmarcey, mariannegoldin.
Email list hosting is sponsored by The Rust Foundation