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
News & Blog Posts
- Stacked borrows: An aliasing model for Rust.
- Implementing ArrayVec using const generics.
- Thoughts on error handling in Rust.
- Understanding Serde.
- rust-analyzer: Find usages.
- Global executors.
- Rust Infrastructure team: Evaluating GitHub Actions.
- Rust bug minimization patterns.
- Teaching Rust in IoT with PineTime smart watch.
#Rust2020
Find all #Rust2020 posts at Read Rust.
Crate of the Week
This week's crate is wasmtime, a standalone JIT-style runtime for WebAssembly.
Thanks to Josh Triplett for the suggestions!
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.
- Governance WG call for participation.
- [good first issue] async-std: Add Future::timeout.
- crates.io: carols10cents will be mentoring multiple issues for the month of November & December.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
252 pull requests were merged in the last week
- add a callback that allows compiler consumers to override queries
- update LLVM submodule
- expand source_util macros with def-site context
- improve errors after re rebalance coherence
- move
Session
fields toCrateStore
- improve non-exhaustiveness handling in usefulness checking
- refactor integer range handling in the usefulness algorithm
- remove some stack frames from
.async
calls - avoid hashing the key twice in
get_query()
- don't warn labels beginning with
_
on unused_labels lint - only include "already existing ..." comment in gitignore on conflict
- suggest borrowing when it would satisfy an unmet trait bound
- fully integrate derive helpers into name resolution
- push
ast::{ItemKind, ImplItemKind}::OpaqueTy
hack down into lowering - add a HIR pass to check consts for
if
,loop
, etc. - fix MIR lowering evaluation order and soundness bug
- split
ConstValue
into two enums - fix two OOM issues related to
ConstProp
- make dataflow-based const qualification the canonical one
- miri: use new isize_max method in FS accesses
- miri panic_unwind: fix hack for SEH platforms
- make chalk-rust-ir generic over type-family
- chalk: refactor fold
- chalk: implement
zip_binders
and add somedyn Trait
/impl Trait
tests - add
Result::map_or
- fix
HashSet::union
performance - add raw ptr variant of
UnsafeCell::get
- proposal for
BTree
{Map
,Set
}::
{min
,max
} - make the semantics of
Vec::truncate(_)
consistent with slices - libc: add support for making functions
const
- cargo: Don't panic when parsing
/proc/stat
- stabilize rustdoc theme options
- rustup build: make clippy faster by using checking before that operation
- rustup: retry downloads
- rustup: fix/improve human-readable units
- measureme: only use 48 bits for encoding timestamps and 32 bits for encoding thread IDs in
RawEvent
in order to make it smaller
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
No RFCs are currently in final comment period.
Tracking Issues & PRs
- [disposition: merge] Stabilize Result::map_or_else.
- [disposition: merge] Scope format! temporaries.
- [disposition: merge] Stabilize cfg(doc).
New RFCs
Upcoming Events
Online
Africa
Asia Pacific
Europe
- Nov 21. Turin, IT - Mozilla Torino - Gruppo di studio Rust.
- Nov 26. Vienna, AT - Rust Vienna - El rust de vienna.
- Nov 27. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- Nov 27. Copenhagen, DK - Copenhagen Rust Hack Night #20.
North America
- Nov 25. Durham, NC, US - Triangle Rustaceans - Project Night & Lightning Talks.
- Nov 26. Dallas, TX, US - Dallas Rust - Last Tuesday.
- Nov 27. Vancouver, BC, CA - Vancouver Rust meetup.
- Nov 27. Mesa, AZ, US - Desert Rust - Rust: Crates and Organization.
- Dec 3. San Francisco, CA, US - Rust Bay Area - [@ Cloudflare] Declarative UIs in Rust and Real-world production CLIs.
- Dec 4. Indianapolis, IN, US - Indy.rs.
- Dec 4. Portland, OR, US - PDXRust - macros_rule!.
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
- Official /r/rust "Who's Hiring" thread for job-seekers and job-offerers [Rust 1.39].
- Senior Software Engineer at ConsenSys R&D, Remote.
- Embedded Software Engineer at Sense (Rust/C/Python), Cambridge, MA, US.
- Rust/Core Developer at Parity, Berlin, DE (Remote available).
- Senior Rust WebGL Developer at Luna, Kraków, PL (Remote available).
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
This week, we have two quotes:
Telling a programmer there's already a library to do X is like telling a songwriter there's already a song about love.
– PeteCordell on twitter, as quoted in a recent Rust Gamedev meetup
Well a Museum purpose is also memory safety, I guess.
– /u/xav_19 on /r/rust commenting on a post asking why "The Rust Programming Language" is sold in Washington D.C.'s spy museum's gift shop
Thanks to Matthieu M. and ZiCog for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.