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 official blog posts this week.
Newsletters
Project/Tooling Updates
- rust-analyzer Changelog #62
- IntelliJ Rust Changelog #140
- Llama Rust SDK preview 0.1.3
- Gfx-rs Release of v0.7
- Open-sourcing Datanymizer: in-flight template-driven data anonymization
- Announcing Step/Dir - Universal Stepper Motor Interface
- Announcing RampMaker - Stepper Motor Acceleration Ramp Generator
- Krustlet v0.6.0
Observations/Thoughts
- Is Rust a Functional Programming Language?
- Rust Collections Case Study: BTreeMap
- Saving some allocations
- Bringing Stack Clash Protection to Clang/X86 - the Open Source Way
- Announcing Krator: Build Kubernetes Operators with state machines.
Rust Walkthroughs
- Returning Rust Iterators
- How to Read Rust Functions, Part 1
- Parsing PDF Documents in Rust
- Building and deploying Rust utilities
- Learning to Fly: Let's create a simulation in Rust! (pt 2)
- Rust made my open source project 1000x faster
- Introducing Drogue Device
- 3 Things to Try When You Can't Make A Trait Object
- Making concurrency fearless with Rust (for C++ developers)
- Exploring WebSocket with Rust and Tide
- Macros in Rust: A tutorial with examples
- [PL] CrabbyBird #5 Obsługa kolizji
Miscellaneous
- RustBelt: Securing the Foundations of the Rust Programming Language
- Polymorphisation: Improving Rust compilation times through intelligent monomorphisation
- A Memory Safe TLS Module for the Apache HTTP Server
- Chats with James: 006 - Bryan Cantrill
- Long range networking with LoRa: an overview featuring a Rust modem driver
Crate of the Week
This week's crate is fancy-regex a regex implementation using regex for speed and backtracking for fancy features.
Thanks to Benjamin Minixhofer 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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
323 pull requests were merged in the last week
- rustc: stabilize
-Zrun-dsymutil
as-Csplit-debuginfo
- point only at generic arguments when they are unexpected
- improve diagnostics for Precise Capture
- account for existing
_
field pattern when suggesting..
- tweak suggestion for missing field in patterns
- visit only statements in always live locals
- avoid memory allocation when removing dead blocks
- make hitting the recursion limit in projection non-fatal
clashing_extern_declarations
: use symbol interning to avoid string alloc- miri: add random failures to
compare_exchange_weak
- trying to
Vec::shrink_to
greater than capacity should be no-op - implement Rust 2021 panic
- implement missing
AsMut<str>
forstr
- implement
io::Seek
forio::Empty
- let
io::copy
reuseBufWriter
buffers - add
Box::downcast()
fordyn Any + Send + Sync
- add
unwrap_unchecked()
methods forOption
andResult
- add
core::stream::Stream
- stabilize
core::slice::fill_with
- stabilize
unsigned_abs
- stabilize raw ref macros
- stabilize by-value
[T; N]
iteratorcore::array::IntoIter
- stabilise
cargo test -- --include-ignored
- stabilize
Arc::
{increment
,decrement
}_strong_count
- stabilize
Seek::stream_position
(featureseek_convenience
) - optimize decimal formatting of 128-bit integers
- stabilize int_bits_const
- hashbrown: reduce the amount of llvm IR instantiated
- libtest: wait for test threads to exit after they report completion
- cargo: impl warn for locked install without Cargo.lock
- rustdoc: improve docblock readability on small screen
Rust Compiler Performance Triage
Another week dominated by rollups, most of which had relatively small changes with unclear causes embedded. Overall no major changes in performance this week.
Triage done by @simulacrum. Revision range: 1483e67addd37d9bd20ba3b4613b678ee9ad4d68.. f6cb45ad01a4518f615926f39801996622f46179
2 Regressions, 1 Improvements, 1 Mixed
3 of them in rollups
See the full report for more.
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 RFCs are currently in the final comment period.
Tracking Issues & PRs
- [disposition: merge] Allow leading | anywhere we allow or-patterns
- [disposition: merge] libtest: allow multiple filters
- [disposition: merge] Stabilize remaining integer methods as
const fn
- [disposition: merge] Add an impl of Error on
Arc<impl Error>
. - [disposition: merge] expand/resolve: Turn
#[derive]
into a regular macro attribute - [disposition: merge] Tracking Issue for
partition_point
New RFCs
- consolidated usage of feature-name header field
- Use more common 'tests' module name over 'test' in examples
Upcoming Events
Online
- February 4, Berlin, DE - Rust Hack and Learn - Berline.rs
- February 4, Budapest, HU - Rust meetup S03! - Rust Hungary Meetup
- February 7, Indianapolis, IN, US - Monthly Meetup - Indy.rs
- February 9, Seattle, WA, US - Monthly Meetup - Seattle Rust Meetup
- February 9, Saarbücken, Saarland, DE - Meetup: 8u16 (virtual) - Rust Saar
North America
- February 10, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta
- February 11, 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
- Rust Software Engineer at Aleph Alpha (Heidelberg, Germany)
- Distributed Systems (Rust) Developer at Signal (Remote US Timezone)
- 3D Driver Development Engineer - Rust tooling for GPUs at AMD (Boxborough, MA, USA)
- Senior Software Engineer (Rust & C++) at NZXT (Remote)
- Senior Backend Engineer - Rust at Kraken (Remote)
- Core Backend - Developer Experience Engineer at Kraken (Remote)
- Rust API SDET at Kraken (Remote)
- Software Engineer - Trading Technology (Rust) at Kraken (Remote)
- Several Positions at Fluence Labs (Remote)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
This time we had two very good quotes, I could not decide, so here are both:
What I have been learning ... was not Rust in particular, but how to write sound software in general, and that in my opinion is the largest asset that the rust community tough me, through the language and tools that you developed.
Under this prism, it was really easy for me to justify the step learning curve that Rust offers: I wanted to learn how to write sound software, writing sound software is really hard , and the Rust compiler is a really good teacher.
[...]
This ability to identify unsound code transcends Rust's language, and in my opinion is heavily under-represented in most cost-benefit analysis over learning Rust or not.
and
Having a fast language is not enough (ASM), and having a language with strong type guarantees neither (Haskell), and having a language with ease of use and portability also neither (Python/Java). Combine all of them together, and you get the best of all these worlds.
Rust is not the best option for any coding philosophy, it’s the option that is currently the best at combining all these philosophies.
– /u/CalligrapherMinute77 on /r/rust
Thanks to 2e71828 and Rusty Shell for their respective suggestions.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.