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.
- rust-analyzer Changelog #91
- Apache Arrow Datafusion 5.0.0 release with major new features and performance improvements
- Apache Arrow Ballista 0.5.0 release
- This week in Fluvio #3: the programmable streaming platform
- SixtyFPS 0.1 Release and SixtyFPS Weekly Report
- nailgun: a DNS performance testing client
- nom 7.0 release: fast parser combinators, now without macros! And the new nom-bufreader
- Announcing egui 0.14
- miette: a fancy new diagnostics definition and reporting crate for apps and libraries!
- Rudra: Rust Memory Safety & Undefined Behavior Detection
- SnakeOS v0.1.0 released!
- Pueue v1.0.0 - Manage your shell commands. Reaching stable after 3.5 years
- Announcing Persy 1.0: a simple transactional storage
- This week in Datafuse #4
- Overview of the Rust cryptography ecosystem
- Using KLEE on Rust-for-Linux (part 1)
- Large Rust Workspaces
- Using Rust with Elixir for code reuse and performance
- Models of Generics and Metaprogramming: Go, Rust, Swift, D and More
- Shaking Off the Rust 2: Ray Tracing in WebAssembly
- Async Overloading
- Scoped Arena Allocator
- Rust vectors
- Daily Rust: Iterators
- Getting Started with Systems Programming with Rust (Part 1)
- Getting Started with Systems Programming with Rust (Part 2)
- Optimizing Immutable Strings in Rust
- Rust for Data Science: Tutorial 1
- Rust and WebAssembly Serverless functions in Vercel
- Pin, Unpin, and why Rust needs them
- Rust: How to Unwrap Multiple Required Options
- Hexagonal architecture in Rust #1
- Hexagonal architecture in Rust #2
- Cross compiling Windows binaries from Linux
- Rust Trait Objects Demystified
- End-to-End Encryption through Kafka, with Rust
- [ZH] Formal Concept Analysis with Rust, Part1, Part2, Part3
- [video] Building a small Finite State Machine in Rust
- [video] Rust Community Stuttgart - "Traits and trait objects - more than just interfaces"
- An exhaustive list of all Rust resources regarding automated or semi-automated formalization efforts in any area, constructive mathematics, formal algorithms, and program verification.
- Aggregate streaming data in real-time with WebAssembly
- I re-implemented the legendary "Typing the technical interview" article using only Rust types!
- Chromium adds a Rust toolchain as a potential dependency
- New very promising Linux syscall for creating secret memory even the kernel can't read. I'll be working for creating a crate for using it out
- [picture] Field Init Shorthand in Rust
This week's crate is kube-leader-election, a crate to implement leader election for Kubernetes workloads.
Thanks to hendrikmaus for the self-suggestion.
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.
- rust-lang/cargo - "error: binary xxx already exists in destination" should print the full destination path
- ockam-network/ockam - Like ngrok, but using Ockam
- ockam-network/ockam - Forwarder in Rust
- andreev-io/little-raft - New Contributors Wanted
If you are a Rust project owner and are looking for contributors, please submit tasks here.
293 pull requests were merged in the last week
- upgrade to LLVM 13
hir::ExprKind::Let- Take 2
- enable compiler consumers to obtain
mir::Bodywith Polonius facts
- force warn improvements
- account for tabs when highlighting multiline code suggestions
- use more accurate spans when proposing adding lifetime to item
- add notes to macro-not-found diagnostics to point out how things with the same name were not a match
- improve wording of the
- improve NLL's "higher-ranked subtype error"s
- suggest importing the right kind of macro
- improve error reporting for closure return type mismatches
- canonicalize consts before calling
- I/O safety (RFC #3128)
- constified implementations of
- optimize unnecessary check in
- where available use
128} instead of mutex for
- add fast path for
Path::cmpthat skips over long shared prefixes
- cargo: fix panic with build-std of a proc-macro
- clippy: add new lints
- clippy: move
- clippy: remove stderr limit
A few regressions but largely an improvement this week, mostly due to the upgrade to LLVM 13.
Triage done by @simulacrum. Revision range: aa8f27b..33fdb79
2 Regressions, 1 Improvements, 2 Mixed; 0 of them in rollups
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.
Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.
- [disposition: merge] Stabilize std::os::unix::fs::chroot
- [disposition: merge] Stabilize reserved prefixes
- [disposition: merge] stabilize disjoint capture in closures (RFC 2229)
- [disposition: merge] BTree: remove Ord bound from new
- [disposition: merge] Update Windows Argument Parsing
- [disposition: merge] Support #[track_caller] on closures and generators
- [disposition: merge] Stabilize "force warn" option
- [disposition: merge] Extend -Cdebuginfo with new options and named aliases
- [disposition: merge] Allow writing of incomplete UTF-8 sequences to the Windows console via stdout/stderr
- [disposition: merge] Tracking Issue for Iterator::intersperse
- [disposition: merge] Provide an API to extract fields from Command builder
- August 31, 2021, Dallas, TX, US - Last Tuesday - Dallas Rust
- September 2, 2021, Zurich, CH - Exciting new Rustdoc features landing in 1.55.0 - Hybrid Meetup (Livestream!) - Rust Zurich
- September 2, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs
- September 8, 2021, Denver, CO, US - Rust Q&A - Rust Denver
Tweet us at @ThisWeekInRust to get your job offers listed here!
Code doesn't deal with resources until it does. Similarly with everything else that forces you to reason about control flow - you don't care about thread management until you do, you don't care about action logs until you do, you don't care about performance until you do... and from the other side, code doesn't need to be exception-safe until it does. The trouble with this kind of "magic" language feature is that correctness becomes non-compositional: you can take two working pieces of code and put them together and get something that doesn't work.
Thanks to Stephan Sokolow for the suggestion!