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.
Updates from Rust Community
- Announcing Arti, a pure-Rust Tor implementation
- Programmatic stream filtering using WebAssembly
- Filecoin Rust implementation "Forest" project update
- Mina Rust implementation update: Web 3.0 with Rust x Wasm
- This Week In TensorBase 11
- Rust Analyzer Changelog #85
- (Risp (in (Rust) (Lisp)))
- [series] Learning Rust #6: Understanding ownership in Rust
- [series] Why and how we wrote a compiler in Rust: Part 2
- [audio] What's New in Rust 1.52 and 1.53
- Inline In Rust
- Using WebAssembly threads from C, C++ and Rust
- Host a wasm module on Raspberry Pi easily Part 1
- Hello, Video Codec! - Demystify video codecs by writing one in ~100 lines of Rust
- Learning Idiomatic Rust with FizzBuzz
- Rust + Tauri + Svelte Tutorial
- Rust Nibbles : Gazebo - An introduction to the Gazebo library
- A Rust controller for Kubernetes
- First steps with Docker + Rust
- [series] Writing an RPG using rg3d - #1 - Character Controller
- [series] Rust #4: Options and Results (Part 2)
- [series] Basic CRUD with rust using tide - refactoring
- [video] End-to-end Encrypted Messaging in Rust, with Ockam by Mrinal Wadhwa
- [video] [series] Building a Web Application with Rust - Part IX - Deploying on Kubernetes
- [video] [series] ULTIMATE Rust Lang Tutorial! - Smart Pointers Part 1
- [video] [series] Implementing Hazard Pointers in Rust (part 2)
- Introducing hyperfunctions: new SQL functions to simplify working with time-series data in PostgreSQL
Crate of the Week
This week's crate is endbasic, an emulator friendly DOS / BASIC environment running on small hardware and the web.
Thanks to Julio Merino 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.
- Specify collections on import
- Add tests for examples (i.e. bank_db)
- Implemented a converter for timestamptz
- Feature: Doc template generator
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
254 pull requests were merged in the last week
- improve opaque pointers support
- recover from
&dyn mut... parse errors
- improve error reporting for modifications behind
- do not suggest adding a semicolon after ?
#[track_caller]in const panic diagnostics
- query-ify global limit attribute handling
- support forwarding caller location through trait object method call
- shrink the deprecated span
- report an error if resolution of closure call functions failed
RangeFrompatterns in 1.55
- account for capture kind in auto traits migration
- stop generating
memcmpfor simple short array equality
Iterator as IntoIterator
- optimize unchecked indexing into
- special case for integer log10
- cargo: unify cargo and rustc's error reporting
- rustdoc: fix rendering of reexported macros 2.0 and fix visibility of reexported items
Rust Compiler Performance Triage
Mostly quiet week; improvements outweighed regressions.
Triage done by @simulacrum. Revision range: 9a27044f4..5aff6dd
1 Regressions, 4 Improvements, 0 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:
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] Move assert_matches to an inner module
- [disposition: merge] Stabilize arbitrary_enum_discriminant
- [disposition: close] regression: infallible residual could not convert error
- [disposition: merge] Document iteration order of retain functions
- [disposition: merge] Partially stabilize const_slice_first_last
- [disposition: merge] Stabilize const_fn_transmute, const_fn_union
- [disposition: merge] Allow leading pipe in matches!() patterns.
- [disposition: close] Add expr202x macro pattern
- [disposition: merge] Remove P: Unpin bound on impl Future for Pin
- [disposition: merge] Stabilize core::task::if_ready!
- [disposition: merge] Tracking Issue for IntoInnerError::into_parts etc. (io_into_inner_error_parts)
- [disposition: close] Implement RFC 2500 Needle API (Part 1)
- July 14, 2021, Malaysia - Rust Meetup July 2021 - Golang Malaysia, feat Rustlang, Erlang, Haskelllang and
- July 14, 2021, Dublin, IE - Rust Dublin July Remote Meetup - Rust Dublin
- July 20, 2021, Washington, DC, US - Mid-month Rustful - Rust DC
- July 21, 2021, Vancouver, BC, CA - Rust Adoption at Huawei - Vancouver Rust
- July 22, 2021, Tokyo, JP - Rust LT Online#4 - Rust JP
- July 22, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs
- July 27, 2021, Dallas, TX, US - Last Tuesday - Dallas Rust
- July 14, 2021, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta
- July 27, 2021, Chicago, IL, US - Rust in production at Tempus - Chicago Rust Meetup
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Beginning Rust: Uh why does the compiler stop me from doing things this is horrible
Advanced Rust: Ugh why doesn't the compiler stop me from doing things this is horrible
Thanks to Nixon Enraght-Moony for the self-suggestion!