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 newsletters or research articles this week.
- rust-analyzer Changelog #82
- IntelliJ Rust Changelog #149
- rustymind - Parse and visualize brainwaves with Rust
- This Week In TensorBase 8
- Supporting Miguel Ojeda's Work on Rust in the Linux Kernel
- rustc_codegen_gcc: Progress Report #1
- Walking through "The Java Tutorials" with Rust - boxed trait objects and the search for inheritance
- WABT: A wonderful CLI for manipulating Wasm
- Type-checked keypaths in Rust
- Exploring ways to make async Rust easier
- Reading Back What You Wrote in Rust
- First Rust Project: A Chess Engine
- Rust vs C++ for game development
- Skipping Tests in Rust
- [ZH] Build a Gameboy emulator in Rust
- [video] Why the future of the cloud will be built on Rust - Oliver Gould, Buoyant
- Rust and AWS Lambda
- Deserializing Binary Data Files in Rust
- Yet Another Snazzy Rust CLI
- Build an API in Rust (Part 2)
- Polymorphism in Rust
- Getting started with MongoDB and Redis in Rust
- Making My Website Part 1: Monitoring On A Raspberry Pi
- [ZH] Develop WebAssembly Program in Rust
- [video] Rust Fuzzing #3: How to write (better) Rust fuzz targets?
- [video] Building a Web Application with Rust - Part III - Database Manager
- [video] Building a Web Application with Rust - Part IV - HTTP Server
- Rust is not a Company
- Google Wants To See Rust Code In The Linux Kernel, Contracts The Main Developer
- Rust is the most wanted language by Godot Engine users
Crate of the Week
This week's crate is serde-encrypt, a library that adds encryption to all
Thanks to Sho Nakatani for the nomination.
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.
- cargo - SearchIndexer takes time indexing \target on windows
- cargo - Ability to specify the output name for a bin target different from the crate name
- cargo - Using alternative registries names in text output
- cargo - A dependency on path = "." should have a good error message
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
301 pull requests were merged in the last week
partition_pointto look up assoc items
- lint for unused borrows as part of
- miri: report an error if a
#[export_name = ...]function has the same symbol name as a built-in shim
- fix span calculation in format strings
ops::ControlFlow(just the type)
- linear interpolation
- add functions
io::Bytes::size_hintfor more types
Eqimplementation for paths
- integrate binary search codes of
- futures: introduce
- cargo: don't allow config env to modify vars set by cargo
- cargo: avoid quadratic complexity when splitting output into lines
- rustdoc: fix ICE when using
#[doc(keyword = "...")]on non-items
- rustdoc: account for const-unstable functions
- clippy: fix wrong config option being suggested for deprecated
- clippy: improve panic message on "Found multiple rlibs" error in compile-test
- clippy: add
macro_braceslint to check for irregular brace use in certain macros
- clippy: check for unbalanced tick pairs in
- clippy: move
Rust Compiler Performance Triage
A few small regressions on smaller benchmarks (e.g., helloworld), likely centered around more IR being generated in a few cases.
Triage done by @simulacrum. Revision range: d192c80..3912083
2 Regressions, 1 Improvements, 0 Mixed; 1 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.
- [disposition: close] RFC: Add delete and delete_by methods to Iterator
- [disposition: merge] Redefine ErrorKind::Other and stop using it in std.
- [disposition: merge] When using process::Command on Windows, environment variable names must be case-preserving but case-insensitive
- [disposition: merge] Tracking Issue for std::io::Seek::rewind()
- [disposition: merge] Support forwarding caller location through trait object method call
- [disposition: merge] Tracking issue for ops::Bound::cloned()
- June 24, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs
- June 29, 2021, Dallas, TX, US - Last Tuesday - Dallas Rust
- July 6, 2021, Buffalo, NY, US - Buffalo Rust User Group, First Tuesdays - Buffalo Rust Meetup
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
At last, I can name my unsafe functions appropriately.
unsafe fn e͙̤͎̪͒x̲͓̞̤͍̻̺̂͗͛͆͡t̜̣͊̓ͩ̍̑e̩͖͙͎̼̖͉ͮṇ̨͖̎̓ͅd̗̼͕ͫ̅_̲̦̥̙̙͍͂́l͙͙̦̞̠̃͌͒i̹̘͍̳̊ͪͦͤ͒̊͋f̨ͥ̄̌ḛ̜͗̉̃̎̂̔̐t̩̲̘͕͉̺̫̓͗́i̹̤̭ͭ͆̔ͪͤ͢m̹̤̜̗̫̩͍ͨe̝͒ͣ<'b>(r: R<'b>) -> R<'static>
Thanks to Vincent de Phily for the suggestion!