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
Project/Tooling Updates
- rust-analyzer changelog #140
- GCC Rust Monthly Report #19 July 2022
- This Month in hyper: July 2022
- Bevy 0.8
- This week in Fluvio #41: The programmable streaming platform
- Fornjot (code-first CAD in Rust) - Weekly Release - 2022-W31
- Zellij 0.31.0: Sixel support, search panes and custom status-bar keybindings
- Ogma v0.5 Release
- Slint UI crate weekly updates
- HexoSynth 2022 - Devlog #7 - The DSP JIT Compiler
- This week in Databend #53: A Modern Cloud Data Warehouse for Everyone
Observations/Thoughts
- Rust linux kernel development
- Proc macro support in rust-analyzer for nightly rustc versions
- Manage keybindings in a Rust terminal application
- Safety
- Paper Review: Safe, Flexible Aliasing with Deferred Borrows
- Uncovering a Blocking Syscall
- nt-list: Windows Linked Lists in idiomatic Rust
- [audio] Beyond the Hype: Most-loved language – does Rust justify the hype?
Rust Walkthroughs
- Patterns with Rust types
- Fully generic recursion in Rust
- Advanced shellcode in Rust
- STM32F4 Embedded Rust at the HAL: Analog Temperature Sensing using the ADC
- [video] Are we web yet? Our journey to Axum
- [video] Build your Rust lightsaber (my Rust toolkit recommendations)
- [video] Rust Tutorial Full Course
- [video] Bevy 0.7 to 0.8 migration guide
Research
Miscellaneous
- Meta approves 4 programming languages for employees and devs
- [DE] Meta setzt auf die Programmiersprachen C++, Python, Hack und neuerdings Rust
Crate of the Week
This week's crate is lending-iterator, a type similar to std::iter::Iterator
, but with some type trickery that allows it to .windows_mut(_)
safely.
Thanks to Daniel H-M for the self-nomination!
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!
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.
- EuroRust Call for Papers is Open
- pq-sys - Setup a CI
- ockam - Make
ockam message send ...
support-
to represent STDIN in its addr argument - ockam - Display a node's default identifier in output of
ockam node create | show | list
commands - ockam - Refactor
ockam portal ...
commands intoockam tcp-...
commands
Updates from the Rust Project
391 pull requests were merged in the last week
- Add diagnostic when using
public
instead ofpub
- Expose
size_hint()
forTokenStream
's iterator - suggest dereferencing index when trying to use a reference of usize as index
- suggest removing a semicolon and boxing the expressions for if-else
- suggest removing the tuple struct field for the unwrapped value
- improve
cannot move out of
error message - don't ICE on invalid dyn calls
- chalk: solve auto traits for closures
- add
Self: ~const Trait
to traits with#[const_trait]
- miri: add default impls for
FileDescriptor
methods - miri: use
cargo_metadata
in cargo-miri - miri: use real exec on
cfg(unix)
targets - codegen: use new {re,de,}allocator annotations in llvm
- use
FxIndexSet
forregion_bound_pairs
- lexer improvements
- optimize
UnDerefer
- implement network primitives with ideal Rust layout, not C system layout
- fix
slice::ChunksMut
aliasing - optimize
vec::IntoIter::next_chunk
impl - cargo: support for negative --jobs parameter, counting backwards from max CPUs
- rustdoc: add support for
#[rustc_must_implement_one_of]
- rustdoc: align invalid-html-tags lint with commonmark spec
- rustfmt: nicer skip context for macro/attribute
- clippy: move
assertions_on_result_states
to restriction - clippy: read and use deprecated configuration (as well as emitting a warning)
- clippy: remove "blacklist" terminology
- clippy:
unwrap_used
: don't recommend usingexpect
when theexpect_used
lint is not allowed - rust-analyzer: find original ast node before compute ref match
- rust-analyzer: find standalone
proc-macro-srv
on windows too - rust-analyzer: publish extension for 32-bit ARM systems
- rust-analyzer: calculate completions after type anchors
- rust-analyzer: do completions in path qualifier position
- rust-analyzer: don't complete marker traits in expression position
- rust-analyzer: fix pattern completions adding unnecessary braces
- rust-analyzer: complete path of existing record expr
Rust Compiler Performance Triage
Call for Testing
An important step for RFC implementation is for people to experiment with the implementation and give feedback, especially before stabilization. The following RFCs would benefit from user testing before moving forward:
- No RFCs issued a call for testing this week.
If you are a feature implementer and would like your RFC to appear on the above list, add the new call-for-testing
label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature
need testing.
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
- No RFCs entered Final Comment Period this week.
Tracking Issues & PRs
- [disposition: merge] relate
closure_substs.parent_substs()
to parent fn in NLL - [disposition: merge] Don't derive
PartialEq::ne
. - [disposition: merge] Guarantees of content preservation on
try_reserve
failure? - [disposition: merge] Partially stabilize std::backtrace from backtrace
- [disposition: merge] Tracking Issue for ptr_const_cast
New and Updated RFCs
- No New or Updated RFCs were created this week.
Upcoming Events
Rusty Events between 2022-08-03 - 2022-08-31 🦀
Virtual
- 2022-08-03 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2022-08-03 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
- 2022-08-05 | Virtual + Portland, OR, US | RustConf
- 2022-08-09 | Virtual (Dallas, TX, US) | Dallas Rust
- 2022-08-09 | Virtual (Myrtle Point, OR, US) | #EveryoneCanContribute Cafe
- 2022-08-10 | Virtual (Boulder, CO, US) | Boulder Elixir and Rust
- 2022-08-11 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2022-08-12 | Virtual + Tokyo, JP | tonari
- 2022-08-13 | Virtual | Rust Gamedev
- 2022-08-16 | Virtual (Washington, DC, US) | Rust DC
- 2022-08-17 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2022-08-18 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2022-08-18 | Virtual (Stuttgart, DE) | Rust Community Stuttgart
- 2022-08-24 | Virtual + Wellington, NZ | Rust Wellington
- 2022-08-30 | Virtual + Dallas, TX, US | Dallas Rust
Asia
- 2022-08-12 | Tokyo, JP + Virtual | tonari
Europe
- 2022-08-30 | Utrecht, NL | Rust Nederland
North America
- 2022-08-05 | Portland, OR, US + Virtual | RustConf
- 2022-08-06 | Portland, OR, US | Rust Project Teams
- 2022-08-10 | Atlanta, GA, US | Rust Atlanta
- 2022-08-11 | Columbus, OH, US| Columbus Rust Society
- 2022-08-16 | San Francisco, CA, US | San Francisco Rust Study Group
- 2022-08-23 | Toronto, ON, CA | Rust Toronto
- 2022-08-25 | Ciudad de México, MX | Rust MX
- 2022-08-25 | Lehi, UT, US | Utah Rust
Oceania
- 2022-08-24 | Wellington, NZ + Virtual | Rust Wellington
- 2022-08-26 | Melbourne, VIC, AU | Rust Melbourne
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.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
❤️🦀❤️
100,000 issues filled with love, compassion and a wholesome community. Thank you, Rust community, for being one of the most, if not straight out the most, welcoming programming communities out there. Thank you, Rust teams, for the tireless hours you spend every day on every aspect of this project. Thank you to the Rust team alumni for the many hours spent growing a plant and the humility of passing it to people you trust to continue taking care of it. Thank you everyone for RFCs, giving voice to the community, being those voices AND listening to each other.
This community has been and continue to be one of the best I have ever had the pleasure of being a part of. The language itself has many things to love and appreciate about it, from the humane error messages to giving the people the power to express high performance code without sacrificing readability for the ones to come after us. But nothing, truly nothing, takes the cake as much as the community that's building it, answering questions, helping and loving each other. Every single day.
Congratulations everyone for 100,000 issues and PRs! And thank you for being you. Because Rust is Beautiful, for having you as part of it.
To the times we spent together and the many more to come!
– mathspy on the rust-lang/rust github
Thanks to Sean Chen for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, andrewpollack, U007D, kolharsam, joelmarcey, mariannegoldin.
Email list hosting is sponsored by The Rust Foundation