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
- Rust-Analyzer Changelog #121
- Rust superpowered DHCP cli with Rhai scripts
- Fornjot (Code-CAD in Rust) - Weekly Dev Log - 2022-W11
- A Year of BonsaiDb: A retrospective and looking to the future
- Slint (GUI crate) weekly update
- This week in Fluvio #25: the programmable streaming platform
- Nushell 0.60
- Skytable 0.7.4 is here: authn, entity syntax, fixes and more
- Boa release v0.14
- This week in Databend #34: A Modern Cloud Data Warehouse for Everyone
Observations/Thoughts
- Rust is minimalist
- Rustc Reading Club Phase I Retrospective
- Rust's Unsafe Pointer Types Need An Overhaul - Faultlore
- Learning Rust: My 6 Key Moments
- I do understand the * operator in Rust now
- The code is the specification? Introducing cargo spec
- Functional Futures: Live-Coding Rust with Tim McNamara
- Help stabilize hyper in curl
- Do we really need language support for self-references?
- [video] Runtime-agnostic async crates by Zeeshan Ali
- [video] Tauri Foundations by Daniel Thompson-Yvetot
- [audio] id3 with Roel
Rust Walkthroughs
- Procedural macros under the hood: Part I
- A tour of the Rust and C++ interoperability ecosystem
- Architecture Experiment: Moving a front-end to Rust and WASM
- Web Socket for Productivity in Rust
- Advanced logging in rust with log4rs: rotation, retention, patterns, multiple loggers
- Why your first FizzBuzz implementation may not work
- [ZH] Exploring Rust Mobile Development and Cross-Platform Patterns (Rust 移动开发与跨平台模式探究)
- [series] [video] Writing a Programming Language (in Rust) 22: Laurel: Continuing a bash script port
- [video] Fyrox - Making an Animation Blending State Machine Editor
- [video] Petrochenkov reviews the name resolution code
- [video] UIUC CS 128 Honors Rust Lectures
Miscellaneous
- Cross-platform Brainfuck Interpreter implementation in Rust - Part 1
- Cross-platform Brainfuck Interpreter implementation in Rust - Part 2
- Rust talks I2C on Apache NuttX RTOS
- Rust Patches For The Linux Kernel Updated A Fifth Time With New Features
- [DE] Programmiersprache: Rust könnte neue Technik für Unsafe Pointer bekommen
Crate of the Week
This week's crate is heph, an event-driven, non-blocking I/O, share-nothing actor framework.
Thanks to Cole Lawrence for the 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.
CAD97/tracing-filter
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
287 pull requests were merged in the last week
- always evaluate all cfg predicate in all() and any()
- stabilise
aarch64_target_feature
- implement
-Z oom=panic
- make negative coherence work when there's impl negative on super predicates
- more robust fallback for
use
suggestion - suggest removing type ascription in bad parsing position
- improve
unsafe
diagnostic - fix diagnostics for
#![feature(deprecated_suggestion)]
- miri: add a lot more information to SB fatal errors
- miri: make backtraces work with #[global_allocator]
- miri: implement SIMD float rounding functions
- miri: implement SIMD square root and fused multiply-add
- miri: implement SIMD bitmask intrinsics
- add
#[inline]
to trivialAsRef
/AsMut
impls BTreeMap::entry
: avoid allocating if no insertion- implement
Write for Cursor<[u8; N]>
, plusA: Allocator
cursor support - improve
expect
impl and handle#[expect(unfulfilled_lint_expectations)]
(RFC 2383) - make
Weak::new
const - portable-simd: fix big-endian bitmasks smaller than a byte
- libc: add support for Apple WatchOS
- codegen_gcc: fix ice in box alloc
- codegen_gcc: fix shift of unsigned integer by signed integer
- codegen_gcc: fix version of compiler_builtins to fix compilation failure
- cargo: fix panic when artifact target is used for
[target.'cfg(<target>)'.dependencies
- rustfmt: add
short_item_threshold
config option - rustfmt: honor
#[rustfmt::skip::attributes(derive)]
attribute - rustfmt: search for struct body span after any generic arguments
- clippy: add lint
cast_enum_constructor
- clippy: add
or_then_unwrap
- clippy: don't lint
ptr_arg
on&mut Cow<_>
- clippy: don't lint
transmute_undefined_repr
when changing the type of generic params - clippy: fix
unncessary_to_owned
false positive - clippy:
unnecessary_lazy_eval
show suggestions on multiline lint - clippy: fix suggestion on
map_flatten
being cropped causing possible information loss - clippy:
match_same_arms
fix - clippy: more
transmute_undefined_repr
fixes - clippy: move
iter_with_drain
to nursery - clippy: move
try_err
to restriction
Rust Compiler Performance Triage
Very quiet week for performance, with just one statistically significant change landing in the last week. This change was a regression, though primarily in stress tests, and was a result of a soundness fix.
Triage done by @simulacrum. Revision range: 3ba1ebea..3ea4493
1 Regressions, 0 Improvements, 0 Mixed; 0 of them in rollups 37 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
- [disposition: merge] Cargo authenticating users without sending secrets over the network
- [disposition: merge] Add provide_any module to core
- [disposition: close] Add the partial-closure-args RFC.
Tracking Issues & PRs
- [disposition: merge] Lazy tait (Type Alias Impl Trait) take two
- [disposition: close] Allow struct and enum to contain inner attrs
- [disposition: merge] Fix constants not getting dropped if part of a diverging expression
- [disposition: merge] impl
From<&[T; N]>
andFrom<&mut [T; N]>
forVec<T>
- [disposition: merge] Docs: make Vec::from_raw_parts documentation less strict
- [disposition: merge] Clarify that
ManuallyDrop<T>
has same layout asT
- [disposition: merge] Allow comparing Vecs with different allocators using
==
- [disposition: merge] Stabilize Termination and ExitCode
- [disposition: merge] Tracking Issue for cell_filter_map
- [disposition: merge] Stabilize native library modifier syntax and the
whole-archive
modifier specifically - [disposition: merge] Tracking Issue for making ptr offset methods "const fn"
New and Updated RFCs
Upcoming Events
Rusty Events between 2022-03-23 - 2022-04-20 🦀
Virtual
- 2022-03-23 | Egg Harbor City, NJ, US | Neighborhood Math Club
- 2022-03-24 | Charlottesville, VA, US | Charlottesville Rust Meetup
- 2022-03-24 | Linz, AU | Rust Linz
- 2022-03-29 | Berlin, DE | Berline
- 2022-03-29 | Dallas, TX, US | Dallas Rust
- 2022-03-30 | México City, MX | Rust MX
- 2022-04-05 | Beijing, CN | WebAssembly and Rust Meetup (Rustlang)
- 2022-04-05 | Buffalo, NY, US | Buffalo Rust Meetup
- 2022-04-05 | Denver, CO, US | Rust Denver
- 2022-04-06 | Egg Harbor City, NJ, US | Neighborhood Math Club
- 2022-04-06 | Indianapolis, IN, US | Indy Rust
- 2022-04-07 | Nürnberg, DE | Rust Nuremberg
- 2022-04-12 | Dallas, TX, US | Dallas Rust
- 2022-04-12 | Seattle, WA, US | Seattle Rust Meetup
- 2022-04-13 | Boulder, CO | Boulder Elixir and Rust
- 2022-04-13 | Egg Harbor City, NJ, US | Neighborhood Math Club
- 2022-04-13 | Munich, DE | Rust Munich
- 2022-04-19 | Washington, DC, US | Rust DC
- 2022-04-20 | Vancouver, BC, CA | Vancouver Rust
Europe
- 2022-04-12 | Berlin, DE | Rust Berlin
- 2022-04-13 | Munich, DE | Rust Munich
- 2022-04-14 | Cambridge, UK | Cambridge Rust Meetup
North America
- 2022-04-05 | Denver, CO, US | Rust Denver
- 2022-04-13 | Atlanta, GA, US | Rust ATL
- 2022-04-14 | Columbus, OH, US | Columbus Rust Society
- 2022-04-19 | San Francisco, CA, US | San Francisco Rust Study Group
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
Bionaut Labs
OCR Labs
Komodo
Nimiq
Kollider
Kraken
- Engineering Manager - Rust - Core Backend (Remote)
- Rust Engineer, Desktop GUI - Cryptowatch (Remote)
- Site Reliability Engineer - Rust - Core Backend (Remote)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
today I learned that
unsafe
is also a tool for people who are actively looking to implement bugs.
Thanks to Michael Bryan 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