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
Official
- [Foundation] Hello World!
- [Inside] 1.50.0 pre-release testing
Newsletters
Project/Tooling Updates
- rust-analyzer Changelog #63
- Launching wasm.rs: a collection of crates, a community
- A Memory Safe TLS Module for the Apache HTTP Server
Observations/Thoughts
- Benchmarking Tokio Tasks and Goroutines
- A Better Rust Profiler
- An unsafe tour of Rust's Send and Sync
- Improving texture atlas allocation in WebRender
Rust Walkthroughs
- Async Rust: Futures, Tasks, Wakers; Oh My!
- Rust for Haskell Programmers!
- Rust CLI Game of Life tutorial - Part 1
- Where everything went wrong...
- Rust for Clojurists
- [ES] El formato RON: Rusty Object Notation
- [video] 1Password Developer Fireside Chat: Introduction to Rust Macros
- [video] Dynamic vs Static Dispatch in Rust
Miscellaneous
- Congratulations, Rustaceans, on the creation of the Rust Foundation!
- Microsoft joins Rust Foundation
- Google joins the Rust Foundation
- Mozilla Welcomes the Rust Foundation
- Trusted Programming - Our Rust Mission at Huawei
- YSK: VSCode's most recent update fixed a quirk in Rust workflows
- curl supports rustls
- Architecting Artichoke Ruby: A Modular Ruby implementation written in Rust
- [video] Interview with Ashley Williams, Rust Foundation Interim Executive Director (Part 1)
Crate of the Week
This week's crate is threadIO, a crate that makes disk IO in a background thread easy and elegant.
Thanks to David Andersen 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.
Fuchsia has several issues available:
- [netstack3] ARP: Add tests for ARP on a broadcast medium
- [netstack3] Migrate all transport protocols to trait associated types
- [netstack3] Split IpProto into Ipv4Proto and Ipv6NextHeader
- [net-types] Add common prefix length calculation for IP addresses
- [netstack3] Make sure ICMP messages are not sent in response to non-initial fragment packets
- [internet-checksum] Clarify documentation around odd byte lengths
- [netstack3] IP fragment reassembly vulnerable to FragmentSmack
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
384 pull requests were merged in the last week
- add AArch64 big-endian and ILP32 targets
- improve handling of spans around macro result parse errors
- identify unreachable subpatterns more reliably
- fix issues with move closures and mutability
- const_evaluatable: consider sub-expressions to be evaluatable
- introduce future-compatibility warning for forbidden lint groups
Box
the biggestast::ItemKind
variants- improve error message for disallowed ptr-to-int casts in const eval
- typeck: emit structured suggestions for tuple struct syntax
- faster few span methods
- fix bug with
assert!()
calling the wrong edition ofpanic!()
- make
Allocator
object-safe - add Frames Iterator for Backtrace
- add
Vec::extend_from_within
method undervec_extend_from_within
feature gate BTreeMap
: makeOrd
bound explicit, compile-test its absence- implement
TrustedLen
forFuse<I: TrustedLen>
- rename
Iterator::fold_first
toreduce
and stabilize it - stabilize the
Wake
trait - stabilize
peekable_next_if
- stabilize poison API of
Once
, renamepoisoned()
- stabilize remaining integer methods as
const fn
- futures-rs: avoid
once_cell
in static wakers - hashbrown: implement
From<HashMap<T, ()>>
forHashSet<T>
- cargo: fix panic with doc collision orphan
- cargo: fix env/cfg set for
cargo test
andcargo run
- make rustdoc respect
--error-format short
in doctests - clippy: fix
let_underscore_drop
false positive - clippy: fix
let_and_return
false positive - clippy: don't trigger
exhaustive_structs
for structs with private fields - clippy: add new lint
missing_panics_doc
- compiletest: Add option to emit compiler stderr per bitwidth
Rust Compiler Performance Triage
No triage report this week
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] Allow leading | anywhere we allow or-patterns
- [disposition: merge]
impl PartialEq<Punct> for char
; symmetry for #78636 - [disposition: merge] Add an impl of Error on
Arc<impl Error>
. - [disposition: merge] Add
NotSupported
tostd::io::ErrorKind
- [disposition: close] Tracking issue for
Option::expect_none(msg)
andunwrap_none()
New RFCs
Upcoming Events
Online
- February 11, Washington, DC, US - Let's learn to Rust nice with others - Rust DC
- February 11, San Diego, CA, US - February 2021 Tele-Meetup - San Diego Rust
- February 17, Vancouver, BC, CA - Rust Study/Hack/Hang-out night - Vancouver Rust
- February 18, Berlin, DE - Rust Hack and Learn - Berline.rs
- February 23, Dallas, TX, US - Last Tuesday - Dallas Rust
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
- Rust Backend Engineer at TrueLayer (London, UK)
- Rust Backend Engineer at TrueLayer (Milan, Italy)
- Rust Technical Lead at TrueLayer (London, UK)
- Rust Technical Lead at TrueLayer (Milan, Italy)
- Senior Software Engineer (Rust & C++) at NZXT (Remote)
- Rust Software Engineer at JetASAP (Remote US or CA)
- Backend Engineer - Rust at Kraken (Remote)
- Backend Engineer, Kraken Futures - Rust at Kraken (Remote)
- Rust API SDET at Kraken (Remote)
- Rust Engineer, Desktop GUI - Cryptowatch at Kraken (Remote)
- Senior Banking Engineer - Rust at Kraken (Remote)
- Software Engineer - Trading Technology (Rust) at Kraken (Remote)
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
The main theme of Rust is not systems programming, speed, or memory safety - it's moving runtime problems to compile time. Everything else is incidental. This is an invaluable quality of any language, and is something Rust greatly excels at.
– /u/OS6aDohpegavod4 on /r/rust
Thanks to Chris for the suggestion.
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, and cdmistman.