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
- [Inside] Splitting the const generics features
- [Inside] 1.55.0 pre-release testing
Newsletters
Project/Tooling Updates
- rust-analyzer Changelog #93
- This week in Fluvio #5: the programmable streaming platform
- rustc_codegen_gcc: Progress Report #3
- This week in Datafuse #6
- Announcing Relm4 v0.1
- SixtyFPS (GUI crate) weekly report for 6th of September 2021
Observations/Thoughts
- Why Rust for offensive security
- Had a blast porting one of my serverless applications from Go to Rust - some things I learned
- Broken Encapsulation
- Faster Top Level Domain Name Extraction with Rust
- Rust programs written entirely in Rust
- Fast Rust Builds
- Virtual Machine Dispatch Experiments in Rust
- Rust Verification Tools - Retrospective
- How to avoid lifetime annotations in Rust (and write clean code)
- Using SIMD acceleration in Rust to create the world's fastest
tac
- Overview of the Rust cryptography ecosystem
- Rustacean Principles
- Writing software that's reliable enough for production
- Plugins in Rust: Getting Started
- A Gopher's Foray into Rust
- Building a reliable and tRUSTworthy web service
- [audio] The Rustacean Station Podcast - Rust in cURL
Rust Walkthroughs
- The Why and How of Rust Declarative Macros
- Build a secure access tunnel to a service inside of a Remote Private Network, using Rust
- Rust on RISC-V BL602: Rhai Scripting
- Rudroid - Writing the World's worst Android Emulator in Rust
- Hexagonal architecture in Rust #3
- Hexagonal architecture in Rust #4
- Explaining How Memory Management in Rust Works by Comparing with JavaScript
- Postgres Extensions in Rust
- Let's overtake go/fasthttp with rust/warp
- How we built our Python Client that's mostly Rust
- Combining Rust and C++ code in your Bela project
- Data-oriented, clean&hexagonal architecture software in Rust - through an example project
- Let's build an LC-3 Virtual Machine
- How to think of unwrap
- Learning Rust: Interfacing with C
- How to build a job queue with Rust and PostgreSQL
- [ID] Belajar Rust - 02: Instalasi Rust
- [video] Crust of Rust: async/await
- [video] Concurrency in Rust - Sharing State
- [video] Setting up an Arduino Project using Rust
Miscellaneous
- Unity files patent for ECS in game engines that would probably affect many Rust ECS crates, including Bevy's
- Rust 2021 celebration and thanks
- Rust on RISC-V BL602: Rhai Scripting
- Wanted: Rust sync web framework
- [audio] Rust 2021 Edition
Crate of the Week
Sadly, we had no nominations this week. Still, in the spirit of not leaving you without some neat rust code, I give you gradient, a command line tool to extract gradients from SVG, display and manipulate them.
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!
- Rust for the Polyglot Programmer - a guide in need of review by and feedback from the Rust Community
- Survey - How People Use Rust
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
300 pull requests were merged in the last week
- introduce
let...else
- update const generics feature gates
- allow
~const
bounds on trait assoc functions - emit specific warning to clarify that
#[no_mangle]
should not be applied on foreign statics or functions - fix 2021 dyn suggestion that used code as label
- warn when
[T; N].into_iter()
is ambiguous in the new edition - detect bare blocks with type ascription that were meant to be a struct literal
- use right span in prelude collision suggestions with macros
- improve structured tuple struct suggestion
- move global analyses from lowering to resolution
fmt::Formatter::pad
: don't callchars().count()
more than one time- add
carrying_add
,borrowing_sub
,widening_mul
,carrying_mul
methods to integers - stabilize
UnsafeCell::raw_get
- stabilize
Iterator::intersperse
- stabilize
std::os::unix::fs::chroot
- compiler-builtins: optimize
memcpy
,memmove
andmemset
- futures: add
TryStreamExt::try_forward
, removeTryStream
bound fromStreamExt::forward
- futures: correcting overly restrictive lifetimes in vectored IO
- cargo: stabilize 2021 edition
- cargo: improve error message when unable to initialize git index repo
- clippy: add the
derivable_impls
lint - rustdoc: clean up handling of lifetime bounds
- rustdoc: don't panic on ambiguous inherent associated types
- rustdoc: box
GenericArg::Const
to reduce enum size - rustdoc: display associated types of implementors
Rust Compiler Performance Triage
A busy week, with lots of mixed changes, though in the end only a few were deemed significant enough to report here.
Triage done by @pnkfelix. Revision range: fe379..69c4a
3 Regressions, 1 Improvements, 3 Mixed; 0 of them in rollups 57 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: close] Proposal: Else clauses for for and while loops
- [disposition: merge] Scrape code examples from examples/ directory for Rustdoc
- [disposition: merge] Rust-lang crate ownership policy
Tracking Issues & PRs
- [disposition: merge] Deprecate array::IntoIter::new
- [disposition: merge] Partially stabilize array_methods
- [disposition: merge] Tracking issue Iterator map_while
New RFCs
Upcoming Events
Online
- September 8, 2021, Denver, CO, US - Rust Q&A - Rust Denver
- September 14, 2021, Seattle, WA, US - Monthly Meetup - Seattle Rust Meetup
- September 15, 2021, Vancouver, BC, CA - Considering Rust - Vancouver Rust
- September 16, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs
- September 18, 2021, Tokyo, JP - Rust.Tokyo 2021
North America
- September 8, 2021, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta
- September 9, 2021, Pleasant Grove, UT, US - Rusty Engine: A 2D game engine for learning Rust with Nathan Stocks (and Pizza)
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
Formlogic
OCR Labs
ChainSafe
Subspace
dcSpark
Kraken
Kollider
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
In Rust, soundness is never just a convention.
Thanks to Riccardo D'Ambrosio for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.