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.
RustFest Global
The RustFest schedule is now online! RustFest offers free tickets until November 1st. It happens across all timezones and is accessible to everyone!
Updates from Rust Community
No newsletters this week.
Official
- [Inside] Core team membership changes
Tooling
Observations/Thoughts
- Fighting Rust's Expressive Type System
- XMHell: Handling 38GB of UTF-16 XML with Rust
- LudumDare 47 - The Island
- Building a Recipe Manager - Part 3 - Parsing and more Druid
- Imitating specialization with OIBITs
- Flask Creator Armin Ronacher Interview
- clue solver now in Rust with more accurate simulations!
Learn Rust
- Rust for a Gopher Lesson 1
- Rust for a Gopher Lesson 2
- Build a "todo list" backend with AssemblyLift ๐๐
- So you want to write object oriented Rust
- [series] A Web App in Rust
- Contributing to the IntelliJ Rust plugin: Implementing a refactoring
- 5x Faster Rust Docker Builds with cargo-chef
- Writing a simple AWS Lambda Custom Runtime in Rust
- Is Rust Web Yet? Yes, and it's freaking fast!
- [video] (Live Coding) Audio adventures in Rust: Local files playback & library interface
Project Updates
- Introducing Ungrammar
- A new group of maintainers has taken ownership of the deps.rs project and revived the deps.rs page, making the page and generated badges for READMEs usable again.
Miscellaneous
- Sandbox Rust Development with Rust Analyzer
- [audio] Security Headlines: Tokio special with Carl Lerche
Crate of the Week
This week's crate is rust-gpu from Embark Studios, a system to compile Rust code into Vulkan graphics shaders (with other shader types to follow).
Thanks to Vlad Frolov 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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
400 pull requests were merged in the last week
- tweak
if let
suggestion to be more liberal with suggestion and to not ICE - reduce diagram mess in 'match arms have incompatible types' error
- tweak match arm semicolon removal suggestion to account for futures
- explain where the closure return type was inferred
- rewrite
collect_tokens
implementations to use a flattened buffer - fix trait solving ICEs
- stop promoting union field accesses in 'const'
- ensure that statics are inhabited
- rustc_mir: track inlined callees in
SourceScopeData
- optimize const value interning for ZST types
- calculate visibilities once in resolve
- mir-opt: disable MatchBranchSimplification
- implement
TryFrom
betweenNonZero
types - add
Pin::static_ref
,static_mut
- support custom allocators in
Box
- hashbrown: parametrize RawTable, HashSet and HashMap over an allocator
- rustdoc: greatly improve display for small mobile devices screens
- clippy: add linter for a single element for loop
- clippy: add lint for
&mut Mutex::lock
- clippy: add new lint for undropped
ManuallyDrop
values - clippy: lint unnecessary int-to-int and float-to-float casts
Rust Compiler Performance Triage
- 2020-10-27: 0 Regressions, 2 Improvements, 3 Mixed
See the full report for more.
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- Destructuring assignment
- RFC: Reading into uninitialized buffers
- RFC: Promote aarch64-unknown-linux-gnu to a Tier-1 Rust target
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] Allow making
RUSTC_BOOTSTRAP
conditional on the crate name - [disposition: merge] consider assignments of union field of ManuallyDrop type safe
- [disposition: merge] Define
fs::hard_link
to not follow symlinks. - [disposition: merge] repr(transparent) on generic type skips "exactly one non-zero-sized field" check
- [disposition: merge] Rename/Deprecate LayoutErr in favor of LayoutError
- [disposition: merge] Tracking Issue for raw_ref_macros
New RFCs
Upcoming Events
Online
- October 29. Berlin, DE - Rust Hack and Learn - Berline.rs
- November 4. Johannesburg, ZA - Monthly Joburg Rust Chat! - Johannesburg Rust Meetup
- November 4. Dublin, IE - Rust Dublin November - Rust Dublin
- November 4. Indianapolis, IN, US - Indy.rs - with Social Distancing - Indy.rs
- November 7 & 8, Global, RustFest Global
- November 10, Seattle, WA, US - Seattle Rust Meetup
Asia Pacific
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 at IOHK (Remote - EU Time Zone)
- Senior Software Engineer - Data Access at Roblox (San Mateo, CA)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
what many devs often miss initially when talking about Rust is that it isn't just about the design & details of the language (which is great), Rust's super power is that in combination with its fantastic community & ecosystem, and the amazing friendly people that create & form it
โ Johann Andersson on twitter
llogiq is pretty pleased with his own suggestion and unanimously voted for it.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.