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
Project/Tooling Updates
- IntelliJ Rust Changelog #142
- rust-analyzer changelog #66
- Knurling-rs changelog #18
- Last Month in Flott - March 2021
- RampMaker 0.2 - Stepper Motor Acceleration Ramp Generator
Observations/Thoughts
- Why we built the core auth library in Rust (interview with CTO of Oso)
- Data Manipulation: Pandas vs Rust
- Evolution of Kube
- Temporal RDO update optimization
- Introducing The Calypso Chronicles
- Rust: Beware of Escape Sequences\n
- Introducing Rustybot (part 3 of n)
- Delete Cargo Integration Tests
Rust Walkthroughs
- C++ to Rust - or how to render your mindset
- Generic
impl
blocks are kinda like macros... - Make a Back-End Number Guessing Game with Rust
- Captures in closures and async blocks
- Testing a driver crate
- Using Rust for AWS Lambdas
- Always-On Benchmarking in Rust
- Building an OpenStreetMap app in Rust, Part IV
- Solving Advent of Code 2020 in under a second
- The Case for the Typestate Pattern - Introducing Algebraic Data Types
- [DE] Weniger Frust mit Rust
- [video] Learning Rust: Procedural Macros
- [video] Rust proxy server with Warp and Hyper
Miscellaneous
- Ferrocene Part 3: The Road to Rust in mission- and safety-critical
- How our AWS Rust team will contribute to Rust's future successes
- Librsvg, Rust, and non-mainstream architectures
Crate of the Week
This week's crate is camino, a library with UTF-8 coded paths mimicking std::os::Path
's API.
Thanks to piegames 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.
No calls for participation this week
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
402 pull requests were merged in the last week
- implement -Z hir-stats for nested foreign items
- suggest character encoding is incorrect when encountering random null bytes
- suggest
return
ing tail expressions that match return type - improve suggestion for tuple struct pattern matching errors
- improve error message when found type is deref of expected
- AST: remove some unnecessary boxes
- apply lint restrictions from renamed lints
- remove storage markers if they won't be used during code generation
- remove many
RefCell
s fromDocContext
- prevent computing Item attributes twice
- new mir-opt pass to simplify gotos with const values
- add an impl of
Error
onArc<impl Error>
- make
ptr::write
const - make
char
andu8
methods const - slight perf improvement on
char::to_ascii_lowercase
- stabilize
str_split_once
- specialize
slice::fill
withCopy
type andu8
/i8
/bool
- futures:
future::SelectAll::into_inner
- futures:
futures_util::stream::SelectAll::push
should use&self
- cargo: run rustdoc doctests relative to the workspace
- cargo: throw error if
CARGO_TARGET_DIR
is an empty string - cargo: add support for
[env]
section in .cargo/config.toml - cargo: make it more clear which module is being tested when running cargo test
Rust Compiler Performance Triage
Quiet week, a couple regressions and several nice improvements.
Triage done by @simulacrum. Revision range: 301ad8..edeee
2 Regressions, 3 Improvements, 0 Mixed
0 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:
No RFCs were approved 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] Deprecate
doc(include)
- [disposition: merge] Implement Extend and FromIterator for OsString
- [disposition: merge] Allow specifying alignment for functions
- [disposition: close] resolve: allow super in module in block to refer to block items
New RFCs
Upcoming Events
Online
- March 4, Berlin, DE - Rust Hack and Learn - Berline.rs
- March 9, Saarbücken, Saarland, DE - Meetup: 9u16 (virtual) - Rust Saar
- March 9, Buffalo, NY, US - Buffalo Rust User Group - Buffalo Rust Meetup
- March 9, Seattle, WA, US - Monthly meetup - Seattle Rust Meetup
- March 10, New York, NY, US - Seemingly Dark Magic with Rust Types with Nikolai Vazquez - Rust NYC
- March 11, Columbus, OH, US - Monthly Meeting - Columbus Rust Society
- March 13th, DE - Chemnitzer Linux Tage - Talk on Rust and its ecosystem
- March 16, Washington, DC, US - Rust and Tell Lightning Talks - Rust DC
- March 17, Vancouver, BC, US - Rust Study/Hack/Hang-out night
North America
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
Crown
Polymath
Tweede golf
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
It's a great example of the different attitudes of C/C++ and Rust: In C/C++ something is correct when someone can use it correctly, but in Rust something is correct when someone can't use it incorrectly.
Thanks to Vlad Frolov for the suggestion.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.