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.
Updates from Rust Community
- rust-analyzer Changelog #63
- Launching wasm.rs: a collection of crates, a community
- A Memory Safe TLS Module for the Apache HTTP Server
- Benchmarking Tokio Tasks and Goroutines
- A Better Rust Profiler
- An unsafe tour of Rust's Send and Sync
- Improving texture atlas allocation in WebRender
- 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
- 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!
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
- 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 of
- add Frames Iterator for Backtrace
Ordbound explicit, compile-test its absence
reduceand stabilize it
- stabilize the
- stabilize poison API of
- stabilize remaining integer methods as
- futures-rs: avoid
once_cellin static wakers
- hashbrown: implement
- cargo: fix panic with doc collision orphan
- cargo: fix env/cfg set for
- make rustdoc respect
--error-format shortin doctests
- clippy: fix
- clippy: fix
- clippy: don't trigger
exhaustive_structsfor structs with private fields
- clippy: add new lint
- compiletest: Add option to emit compiler stderr per bitwidth
Rust Compiler Performance Triage
No triage report this week
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.
- [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
- [disposition: merge] Add
- [disposition: close] Tracking issue for
- 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
- 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.
Thanks to Chris for the suggestion.