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 this week.
Official
- Announcing Rust 1.51.0
- [Foundation] Introducing Mark Rousskov
- [Foundation] Introducing Nell Shamrell-Harrington
Project/Tooling Updates
- rust-analyzer changelog #70
- IntelliJ Rust Changelog #144
- Knurling-rs Financial Update and Call for Funding
- Ockam | End-to-end encrypted messaging and mutual authentication between distributed applications
- Announcing the Deno Company
Observations/Thoughts
- Using Rust to corrode insane Python run-times
- The current state of Rust web frameworks
- GhostCell: Separating Permissions from Data in Rust
- Using const generics in slipstream
- Rust iterators tips and tricks
Rust Walkthroughs
- Pin and suffering
- Embedding Rust Into Zephyr Firmware using C-bindgen
- Parser combinators in Rust
- Grids in Rust, part 2: const generics
- Ergonomic error handling with Rust
- Implementing SHA2 (256/512) algorithm with Rust const generics
- Analisando alocações de memória em Rust utilizando GNU Debugger
- Testing an embedded application
- Using Const Generics To Model An Electronics Graph
- Rust's Module System Explained
- [series] Working with the trust-dns-resolver crate
- [video] Safer Rust: Program Verification with Creusot
Miscellaneous
Crate of the Week
This week's crate is tide-acme, a crate for automatic HTTPS certification using Let's Encrypt for Tide.
Thanks to Josh Triplett 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.
- AWS Rust lambdas and Bioinformatics
- darpi-rs/darpi is looking for users and contributors
- RoaringBitmap/roaring-rs seeks a review of this Pull Request
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
327 pull requests were merged in the last week
- coverage bug fixes and optimization support
- ban custom inner attributes in expressions and statements
GenericParam
does not need to be a HIR owner- remove assignments to ZST places instead of marking ZST return place as unused
- run analyses before thir-tree dumps
- import small cold functions
- implement
feature(const_generics_defaults)
- stabilize
debug_non_exhaustive
- simplify encoder and decoder
- remove (lots of) dead code
- use
TrustedRandomAccess
for in-place iterators where possible - instruct LLVM that
binary_search
returns a valid index - make
NonNull::as_ref
(and friends) return refs with unbound lifetimes - add function
core::iter::zip
- revert reverting of stabilizing
integer::BITS
- generalize and inline
slice::fill
specializations - add
Result::into_err
where the Ok variant is the never type - remove
Option::
{unwrap_none
,expect_none
} - futures: add
AsyncSeekExt::stream_position
- cargo: default macOS targets to unpacked debuginfo
- rustdoc: sidebar trait items order
- docs.rs: stop displaying and serving authorship information
Rust Compiler Performance Triage
A somewhat negative weak for performance where regressions outweigh improvements. Sadly, a lot of the regressions don't seem very straight-forward to understand, and so more investigation will be necessary.
Triage done by @rylev. Revision range: 9b6339e4..4896450
2 Regressions, 2 Improvements, 3 Mixed
2 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
Tracking Issues & PRs
- [disposition: merge] Add strong_count mutation methods to Rc
- [disposition: merge] Turn old edition lint (anonymous-parameters) into warn-by-default on 2015
- [disposition: merge] reduce threads spawned by ui-tests
- [disposition: merge] Stabilize
peekable_peek_mut
- [disposition: merge] Stabilize
rustdoc::bare_urls
lint - [disposition: merge] Adding diesel to the cargotest suite
- [disposition: merge] Stabilize
cmp_min_max_by
- [disposition: merge] Allow qualified paths in struct construction (both expressions and patterns)
- [disposition: merge] Tracking issue for RFC 2457, "Allow non-ASCII identifiers"
New RFCs
- RFC: Add a standard trait for getting many &mut to places
- RFC:
cargo
-miri
integration - Raw Keywords
- rustdoc URL conflict resolution
Upcoming Events
Online
- April 1, Berlin, DE - Rust Hack and Learn - Berline.rs
- April 6, Buffalo, NY, US - Buffalo Rust User Group - Buffalo Rust Meetup
- April 7, Johannesburg, ZA - Monthly Joburg Rust Chat! - Johannesburg Rust Meetup
- April 7, Indianapolis, IN, US - Indy.rs - with Social Distancing - Indy Rust
- April 13, Seattle, WA, US - Monthly Meetup - Seattle Rust Meetup
North America
- April 8, Columbus, OH, US - Monthly Meetup - Columbus Rust Society
- April 14, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta
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
e.ventures
Wallaroo
Ockam
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Despite all the negative aspects, I must say that I do generally really like the poll-based approach that Rust is taking. Most of the problems encountered are encountered not because of mistakes, but because no other language really has pushed this principle this far. Programming language design is first and foremost an “artistic” activity, not a technical one, and anticipating the consequences of design choices is almost impossible.
Thanks to Michael Howell for the suggestion.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.