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.
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
No newsletters or research articles this week.
Official
Project/Tooling Updates
- 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
Observations/Thoughts
- Walking through "The Java Tutorials" with Rust - boxed trait objects and the search for inheritance
- 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 Walkthroughs
- 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
Miscellaneous
- 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 Serialize
impls.
Thanks to Sho Nakatani for the nomination.
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.
- 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
- use
AttrVec
forArm
,FieldDef
, andVariant
- prefer
partition_point
to look up assoc items - lint for unused borrows as part of
UNUSED_MUST_USE
- miri: report an error if a
#[no_mangle]
/#[export_name = ...]
function has the same symbol name as a built-in shim - fix span calculation in format strings
- stabilize
span_open()
andspan_close()
- stabilize
ops::ControlFlow
(just the type) - linear interpolation
- add functions
Duration::try_from_secs_
{f32
,f64
} - specialize
io::Bytes::size_hint
for more types - optimize
Eq
implementation for paths - integrate binary search codes of
binary_search_by
andpartition_point
- futures: introduce
stream::select_with_strategy
- 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
wrong_pub_self_convention
lint - clippy: improve panic message on "Found multiple rlibs" error in compile-test
- clippy: add
macro_braces
lint to check for irregular brace use in certain macros - clippy: check for unbalanced tick pairs in
doc_markdown
lint - clippy: move
from-iter-instead-of-collect
to pedantic
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
Approved RFCs
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.
RFCs
- [disposition: close] RFC: Add delete and delete_by methods to Iterator
Tracking Issues & PRs
- [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()
New RFCs
Upcoming Events
Online
- 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
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
ChainSafe Systems
Kollider
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!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.