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
- rust-analyzer joins the Rust organization!
- Rust Compiler February 2022 Steering Cycle
- Lang team February update
- Rust Compiler Ambitions for 2022
Foundation
Project/Tooling Updates
- Announcing Tokio Metrics 0.1
- Rust-Analyzer Changelog #117
- clap 3.1: A step towards 4.0
- Zellij 0.25.0: floating panes, Tmux mode and more!
- Fornjot (Code-CAD in Rust) - Weekly Dev Log - 2022-W07
- Hurl 1.6.0, a tool for running and testing HTTP requests with plain text
- Slint (former SixtyFPS, UI crate) Project Update
- This week in Fluvio #23: the programmable streaming platform
Research
Observations/Thoughts
- We need to talk about RFCs
- Analyzing unsized variables in Rust
- pip and cargo are not the same
- hyper 1.0 timeline
- We’re Porting Our Database Drivers to Async Rust
- We're choosing Rust, and not Go, C++, or Node.js
- Belgium Rust Meetup (February 3 2022): async Qt, bubbly bubblesorts and how to win hackathons.
Rust Walkthroughs
- Embedding a JavaScript Engine (quickjs) in a Rust Project
- Which Rust web framework to choose in 2022 (with code examples)
- Annotating a compile-time value to a rust struct
- Type inference in
ogma
using graphs - Compiler Adventures, part 2: Constant Propagation
- Bevy Minesweeper Series' Articles
- Rust for web devs: Destructuring
- Checking Tailwind Class Names at Compile Time with Rust
- Building a Blockchain Oracle for Solana
- [video] Tokio Axum with David Pedersen
- [video] Developing Embedded Rust Drivers with Pretty HAL Machine
- [video] Rust Project: Custom Deserialization with Serde
- [series] [video] Writing a Programming Language (in Rust) 16: Evaluating object keys
- [series] [video] Writing a Programming Language (in Rust) 17:
else if
statements and index ranges
Miscellaneous
- RustFest LATAM is on! 🦀
- AWS: Here's why we are investing in the Rust programming language
- [DE] Programmiersprache: Rust legt im produktiven Einsatz zu
Crate of the Week
This week's crate is cargo-nextest, a new fast test runner for Rust.
Thanks to Christopher Durham 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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from the Rust Project
284 pull requests were merged in the last week
- upgrade to LLVM 14
- compiler-builtins: handle Win64 builtins ABI change in LLVM 14
- add MemTagSanitizer Support
- put crate metadata first in the rlib
- debuginfo: support fat pointers to unsized tuples
- extend uninhabited enum variant branch elimination to also affect fallthrough
- fix inconsistent symbol mangling with -Zverbose
- fix pretty printing of enums without variants
- improve
unused_unsafe
lint - add more info and suggestions to use of
#[test]
on invalid items - do not suggest "is a function" for free variables
- suggest
impl Trait
return type when incorrectly using a generic return type - suggest copying trait associated type bounds on lifetime error
- suggest deriving required supertraits
- suggest using raw strings when invalid escapes appear in literals
- correctly mark the span of captured arguments in
format_args!()
- deny mixing bin crate type with lib crate types
- normalize obligation and expected trait_refs in confirm_poly_trait_refs
- only mark projection as ambiguous if GAT substs are constrained
- generator drop tracking: improve break and continue handling
- overhaul interning
- support pretty printing of invalid constants
- add mentions to
Copy
types being valid forunion
fields - stabilize
#[cfg(panic = "...")]
- do not ICE when inlining a function with un-satisfiable bounds
- fix ICE when using
Box<T, A>
with pointer sized A - fix ScalarInt to char conversion
- make
[u8]::cmp
implementation branchless - add a
try_collect()
helper method toIterator
- add basic platform support to
library/
{panic_
}unwind
for m68k - add a stack-
pin!
-ning macro tocore::pin
- stabilize pin_static_ref
- core: implement ASCII trim functions on byte slices
- asm: allow the use of r8-r14 as clobbers on Thumb1
- futures: fix
Sync
impl ofBiLockGuard
cargo new
should not add ignore rule on Cargo.lock inside subdirs- rustdoc: buffer JSON output
- rustdoc: avoid duplicating macros in sidebar
- rustdoc: collect traits in scope for lang items
- rustdoc: resolve intra-doc links when checking HTML
- rustdoc: add
--scrape-tests
option to scrape functions marked#[test]
- clippy: move
transmute_undefined_repr
back to nursery - clippy: don't lint Default::default if it is the udpate syntax base
- clippy: don't lint
match
expressions withcfg
ed arms - clippy: don't lint
needless_borrow
in method receiver positions - clippy: fix
await_holding_lock
not lintingparking_lot
Mutex/RwLock - clippy: improve
redundant_slicing
lint - clippy: lint enum-to-int casts with
cast_possible_truncation
- clippy: some more fixes for
transmute_undefined_repr
- clippy: new lint:
recursive_format_impl
- clippy: trigger
ptr_as_ptr
inside macros
Rust Compiler Performance Triage
A relatively quiet week with improvements largely outweighing regressions. On the regressions side, doc performance has worsened somewhat significantly most likely introduced by adding more docs to blanket impls. On the improvement side, LLVM 14 allowed for an optimization the significantly improves codegen performance.
Triage done by @rylev. Revision range: a240ccd..1204400
3 Regressions, 2 Improvements, 7 Mixed; 3 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:
- 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: Add a
process_group
method to UNIXCommandExt
- [disposition: postpone] Let Cargo put data into platform-specific directories
Tracking Issues & PRs
- [disposition: merge] Tracking Issue for JoinHandle::is_running
- [disposition: merge] Make regular stdio lock() return 'static handles
New and Updated RFCs
Upcoming Events
Rusty Events between 2/23/2022 - 3/23/2022 🦀
Online
- February 23, 2022 | Graz, AT | Async Programming with Tokio | Rust Graz Meetup
- February 23, 2022 | México City, MX | Platica Febrero 2022 | Rust MX
- February 24, 2022 | Linz, AT | Rust Meetup Linz - 19th Edition | Rust Linz
- March 1, 2022 | Buffalo, NY, US | First Tuesdays: Buffalo Rust User Group | Buffalo Rust Meetup
- March 1, 2022 | Berlin, DE | Rust Hack and Learn | OpenTechSchool Berlin
- March 2, 2022 | Indianapolis, IN, US | Zach Mitchell - Optimizing a Physics Simulation from 8 hours to 10 minutes | Indy Rust
- March 3, 2022 | Würzburg, DE | Guest Speaker | Herbert Wolverson | Rust gamedev in 2022 | Rust Würzburg Meetup Group
- March 7, 2022 | Valence, FR | Coding-dojo - Rust | Ardèch’Drôm Dev
- March 8, 2022 | Dallas, TX, US | Second Tuesday| Dallas Rust
- March 8, 2022 | Rostock, DE | 5. Rust Meetup Rostock | Altow Academy
- March 8, 2022 | Seattle, WA, US | Monthly meetup | Seattle Rust Meetup
- March 9, 2022 | Boulder, CO, US | Monthly Meetup | Boulder Elixir and Rust
- March 9, 2022 | München, DE | Rust Munich Remote(?) #10 | Rust Munich
- March 9, 2022 | Stuttgart, DE | Rust-Meetup | Rust Community Stuttgart
- March 15, 2022 | Dublin, IE | Rust Dublin March Meetup - Rust Dublin
- March 15, 2022 | Washington, DC, US| Mid-month Rustful | Rust DC
- March 16, 2022 | Vancouver, BC, CA | Rust Study/Hack/Hang-out Night | Vancouver Rust
Europe
North America
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
Wayfair
Amazon
Tangram
LoanPASS
Timescale
Polymath
Komodo
Enso
Stockly
- Back-end developer - TechOps (Rust, gRPC, PostgreSQL) (Paris, FR)
- Back-end developer - Freelance (Rust, gRPC, PostgreSQL) (Paris, FR)
Kollider
Kraken
- Software Engineer (Rust) - Trading (Remote)
- Site Reliability Engineer - Rust - Core Backend (Remote)
- Software Engineer in Test - Rust - Core Backend (Remote)
Tempus Ex
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
There's a big difference between solving a problem and making a problem go away
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