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.
Updates from Rust Community
No official blog posts this week.
- 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
- 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.
- 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
- 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!
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
- 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
- trying to
Vec::shrink_togreater than capacity should be no-op
- implement Rust 2021 panic
- implement missing
dyn Any + Send + Sync
- stabilize raw ref macros
- stabilize by-value
cargo test -- --include-ignored
- 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.
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.
No RFCs are currently in the final comment period.
- [disposition: merge] Allow leading | anywhere we allow or-patterns
- [disposition: merge] libtest: allow multiple filters
- [disposition: merge] Stabilize remaining integer methods as
- [disposition: merge] Add an impl of Error on
- [disposition: merge] expand/resolve: Turn
#[derive]into a regular macro attribute
- [disposition: merge] Tracking Issue for
- consolidated usage of feature-name header field
- Use more common 'tests' module name over 'test' in examples
- 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
- February 10, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta
- February 11, Columbus, OH, US - Monthly Meeting - Columbus Rust Society
- 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.
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.