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
- Rust cheat sheet for beginners.
- Deriving traits in Rust with procedural macros.
- Using Rust for Gamedev.
- Are we async yet?
- Building a JS interpreter in Rust part 2.
- New Rustacean interview: Carol Nichols || Goulding and Jake Goulding. Talking with Carol and Jake about The Rust Programming Language, Rust in Motion, and Rust Belt Rust.
#Rust2019
Find all #Rust2019 posts at Read Rust.
Crate of the Week
This week's crate is gfx-hal, a hardware abstraction layer for gfx-rs. Thanks to Vikrant Chaudhary 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.
- A call for #Rust2019 Roadmap blog posts.
- A call for #RustWasm2019 Roadmap blog posts.
- [medium] Mundane: Run tests with ASan and MSan. Mundane is a Rust cryptography library backed by BoringSSL.
- [medium] Mundane: Test BoringSSL refcounting.
- [easy] Mundane: CONTRIBUTING.md: Document that you need to pull from googlesource.com.
- Tetra: Black screen/shader issues on MacOS. Tetra is a 2D game framework written in Rust.
- UX Developer at Amethyst.
- Team Artist at Amethyst.
- Core Developer at Amethyst.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
166 pull requests were merged in the last week
- implement the Re-rebalance coherence RFC
- forbid recursive
impl trait
- allow to dispatch fn traits depending on number of parameters
- rustc: fix regression where jemalloc isn't used
- syntax: fix regression in diagnostics for patterns in trait method parameters
- resolve: simplify treatment of ambiguity errors
- calculate privacy access only via query
- privacy: fix regression in impl reachability
- tweak unicode escape diagnostics
- suggest using raw identifiers in 2018 edition when using keywords
- do not complain about missing crate named as a keyword
- use structured suggestions for nonexistent fields
- use structured suggestion for method calls
- add specific diagnostic when attempting to transmute between equal generic types
- don't emit
Unevaluated
fromconst_eval
- make
CompileController
thread-safe - NLL: user type annotations refactor, associated constant patterns and ref bindings
- universes
- rustdoc: force binary filename for compiled doctests
- improve
Box<T>
→Pin<Box<T>>
conversion - eliminate
Receiver::recv_timeout
panic VaList::copy
should not require a mutable ref- add duration constants
- NLL: fix bug in associated constant type annotations
- make sure feature gate errors are recoverable
- cargo: fix error message when resolving dependencies
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
- [disposition: merge] Implement Debug, Eq, PartialEq, and Hash for libc structs.
Tracking Issues & PRs
- [disposition: merge] Summary issue for const-stabilizing
const_int_overflowing
. - [disposition: merge] Const-stabilize
const_int_ops
+const_ip
. - [disposition: merge] Stabilize
let
bindings and destructuring in constants and const fn. - [disposition: merge] Stablilize const_int_{rotate,wrapping,sign}.
- [disposition: merge] Stabilize
uniform_paths
. - [disposition: merge] Stabilize the
integer_atomics
feature: Atomic{I,U}{8,16,32,64}. - [disposition: merge] Stabilization proposal for #![feature(if_while_or_patterns)].
- [disposition: merge] Tracking issue for RFC 2306, "Add core::convert::identity".
- [disposition: merge] Tracking issue for write_all_at/read_exact_at convenience methods.
- [disposition: merge] Tracking issue for non-panicking pow.
- [disposition: merge] Tracking Issue for Result.
New RFCs
Upcoming Events
Online
Europe
- Jan 10. Brno, CZ - Rust meetup at Masaryk University.
- Jan 14. Cologne, DE - Rust Cologne Meetup.
- Jan 15. Rome, IT - Rust Rome Meetup.
- Jan 22. Lyon, FR - TupperRust.
- Jan 23. Berlin, DE - Berlin Rust Hack and Learn.
North America
- Jan 10. Columbus, US - Columbus Rust Society.
- Jan 10. Utah, US - Utah Rust monthly meetup.
- Jan 10. Arlington, US - Rust DC—Mid-month Rustful.
- Jan 13. Mountain view, US - Rust Dev in Mountain View!.
- Jan 15. Los Angeles, US - Los Angeles Rust Meetup.
- Jan 20. Mountain View, US - Rust Dev in Mountain View!.
- Jan 23. Ann Arbor, US - Ann Arbor Rust Meetup.
- Jan 23. Vancouver, CA - Vancouver Rust meetup.
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 Intern (Summer 2019) at Mozilla, San Francisco, US.
- Kernel Engineer at System76, Denver, US.
- Senior Software Engineer at Prevoty, Los Angeles, US.
- Rust Developer at Parity, Berlin, DE.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
The name Rust suggests what it is: a thin layer on top of the metal.
– c3534l on reddit
Thanks to Cauê Baasch De Souza for the suggestion!
Please submit your quotes for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.