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.
There is no This Week in Rust podcast this week, next week's episode will cover both this week and next week.
We Stand With You
Since our previous issue, there has been a lot of news about the civil rights discourse in the United States, spawned by the murder of George Floyd by a member of the Minneapolis Police Department. We stand with Black Lives Matter and our Black siblings now and always.
We believe this is not a matter of taking a political stance, but a matter of supporting basic human rights and equality.
We believe that Rustaceans have a duty to our community and to the rest of the world to ensure that people feel comfortable and welcome wherever they may be. In our own community, the Rust Code of Conduct explicitly states that we intend to make everybody feel safe, but this does not just apply to us.
Just as we support Rustaceans, we also support humanity as a whole. It is time for social progress to be made. We support those risking their own well-being to show support for George Floyd, Breonna Taylor, Ahmaud Aubery, and everyone else who has faced injustice at the hands of members of the police. We stand with the protesters hoping to make the world better.
If you want to show your support, here is a website of curated resources. We encourage you to speak out, as one more voice is one step closer to a better world.
Updates from Rust Community
News & Blog Posts
- RustConf 2020 Registration is Open
- 2020 Contributor Survey
- A retrospective on the 2018 rust-lang.org redesign
- Rust Disassembly: Part 1
- Fuzzing Sequoia-PGP
- Mutex in async world
- Custom types in Diesel
- Auto-Vectorization for Newer Instruction Sets in Rust
- Current State of Embedded Rust for Flight Controllers
- 3D boids swimming along in perfect harmony; Implementing the boids flocking algorithm in Rust
- Coverage Marks
- Ringbahn: a safe, ergonomic API for io-uring in Rust
- rust-analyzer changelog #26
- Why I'm enjoying learning Rust as a Java programmer
- Contributing to Rust
- 10 Most Loved Programming Languages: Rust, TypeScript, and More
- Creating a Ruby Gem with Rust
- Designing the Rust Unleash API client
- How to build a WebSocket server with Rust
- Invoking Functions on Distributed Game Objects
- IPv6 and Rust
- Rust as a High Level Language
- Sorting algorithms in Rust
- Programming Servo: integrating streams
- To Rust or not to Rust
- [Spanish] Aprende Rust en español
- [video] A Rust & Wasm tutorial on building Bitcoin infrastructure. Rust beginner-friendly!
- [video] Crust of Rust: Iterators
- [video] Rust and Tell Berlin - May 2020
Crate of the Week
This week's crate is jql, a JSON Query Language CLI tool.
Thanks to Davy Duperron for the suggestion!
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.
- ruma-events: Add predefined push notification rules
- ruma-events: Add helpers to construct the fallback for rich replies
- ruma-events: Create a distinct type for PushCondition::RoomMemberCount::is
- Writing database management system in Rust. When the flame is born from the ashes
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
442 pull requests were merged in the last week
- implement unsafe blocks in unsafe fn (RFC #2585)
- exhaustiveness checking: work around type normalization issues
- suggest using
std::mem::drop
function instead of explicit destructor call - add a lint against references to packed fields
- avoid setting wrong obligation cause span of associated type mismatch
- account for trailing comma when suggesting
where
clauses - fix diagnostics for
@ ..
binding pattern in tuples and tuple structs - chalk: request hidden opaque types lazily
- miri: synchronization primitive cleanup
from_u32_unchecked
: check validity, and fix UB in Wtf8- implement
total_cmp
forf32
,f64
- override
Box::<[T]>::clone_from
- add
Extend::
{extend_one
,extend_reserve
} - make pointer offset methods/intrinsics const
impl From<[T; N]> for Box<[T]>
- stabilization of
weak-into-raw
- resolve UB in Arc/Weak interaction, part 2
- stabilize
str_strip
feature impl Step for char
(makeRange*<char>
iterable)- add
Peekable::next_if
- various minor improvements to
Ipv6Addr::Display
SocketAddr
and friends now correctly pad its content- implement PartialOrd and Ord for SocketAddr*
- tweak and stabilize
Atomic
N::fetch_update
- stabilize
Atomic
N::fetch_
{min
,max
} - stdarch: add 64 bit integer AVX512f comparisons and the intrinsics needed to test them
- stdarch: add 64 bit AVX512f le and ge comparisons
- libm: use macros for more division/array checks
Rust Compiler Performance Triage
This is a new section containing the results of a weekly check on how rustc's perf has changed.
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
No RFCs are currently in the final comment period.
Tracking Issues & PRs
- [disposition: merge]
impl AsRef<[T]>
forvec::IntoIter<T>
- [disposition: merge] Add raw_ref macros
- [disposition: merge] Tracking issue for
std::io::{BufReader, BufWriter}::capacity
New RFCs
- add lang-team Major Change Proposals as a "pre-RFC" step
- Unsafe statics
- Request for creating pipes with fd other than 0,1,2
Upcoming Events
Online
- June 3. Johannesburg, ZA - Remote - Johannesburg Rust Meetup
- June 8. Auckland, NZ - Remote - Rust AKL
- June 9. Seattle, WA - Remote - Seattle Rust Meetup
- June 11. San Diego, CA - Remote - San Diego Rust Meetup
North America
- June 3. Indianapolis, IN, US - Indy.rs Meetup
- June 11. Columbus, OH, US - Columbus Rust Society Monthly Meeting
- June 11. Lehi, UT, US - Utah Rust - Lightning Talks
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
- Software Engineer - Rust - IOTA Foundation - Remote
- Senior Rust Engineer - Polymath - Remote
- Rust Back End Engineer, Core Banking - TrueLayer - Milan, Italy
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Rust enables belligerent refactoring – making dramatic changes and then working with the compiler to bring the project back to a working state.
– Joe Wilm
Thanks to Maxim Vorobjov for the suggestions!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.