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
- Understanding the difference between
Box<Trait>
,&Trait
,impl Trait
, anddyn Trait
. - varkor joins the Compiler Team!
- First screenshot of Dota2 running on gfx-portabilty with Metal backend.
- Actix – an actor framework for Rust.
- Migrating to Actix from Rocket.
- A Rust-based unikernel: First version of a Rust-based libOS.
- Where do Rust threads come from?
- To do a Rust GUI.
- Integrating QML and Rust: Creating a QMetaObject at compile time.
- crates.rs: An alternative to crates.io.
- nphysics: A Physics engine in Rust now has 3D demos running in modern browsers.
- [podcast] Rusty Spike Podcast - episode 32. 1.26.2 release, the arch (video and site), compiler speed-ups, crates.rs, and more thoughts on the Rust design process.
Crate of the Week
This week's crate is clap-verbosity-flag, a small crate to easily add a verbosity setting to Rust command line applications. Thanks to Yoshuawuyts 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.
- Sponsor work on Rust!
- wasm-pack has several open good first issues available to new contributors.
- Get started with these beginner-friendly issues.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
110 pull requests were merged in the last week
- Keyword unreservations (pure, sizeof, alignof, offsetof) (RFC #2421)
- parser: split
+=
into+
and=
where+
is explicitly requested (such as generics) - enable fall through past $:lifetime matcher
- deny
#[cfg]
and#[cfg_attr]
on generic parameters - include parens to type parameter
- use scope tree depths to speed up
nearest_common_ancestor
- avoid useless Vec clones in
pending_obligations
- NLL performance boost
- NLL: report type moved from behind borrow of array/slice
- deduplicate auto traits in trait objects
- remove dependency on fmt_macros from typeck
- re-enable trivial bounds
- use spans pointing at the inside of a rustdoc attribute
- suggest parentheses when a struct literal needs them
- suggest not mutably borrowing a mutable reference
- add deprecation lint for duplicated
macro_export
s - accept
..
in incorrect position to avoid further errors - fix the use of closures within
#[panic_implementation]
- refactor the const eval diagnostic API
- check array indices in constant propagation
ScalarPairs
are offset==0 field + other non-zst field- blocking Rayon queries
- reexport
fmt::Alignment
intostd
- add
Future
and task system to the standard library - futures: add a few blanket impls to
std
- fix confusing error message for sub_instant
- stabilize
Iterator::step_by
- stabilize
iterator_repeat_with
- stabilize
entry-or-default
- stabilize unit tests with non-
()
return type - cargo: allow rustc bootstrap to use unstable features even though it's using a beta-cargo
- fix crate-name option in rustdoc
- rustbuild: allow enabling incremental via config.toml
- rustbuild: do not require stage 2 compiler for rustdoc
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: close] Reserve
throw
andfail
as keywords in edition 2018.
Tracking Issues & PRs
- [disposition: merge] Exhaustive integer matching.
- [disposition: merge] Stabilize
std::path::Path::ancestors
. - [disposition: merge] Add ability to apply custom derive to union types.
- [disposition: merge] Tracking issue for
ToOwned::clone_into
(toowned_clone_into
). - [disposition: merge] Tracking issue for "macro naming and modularisation" (RFC #1561).
- [disposition: merge] Tracking issue for promoting
!
to a type (RFC 1216).
New RFCs
Upcoming Events
Online
- Jun 19. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- Jun 20. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jun 20. Rust Events Team Meeting.
- Jun 27. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
Europe
- Jun 21. Cambridge, GB - Cambridge Rust Meetup.
- Jun 27. Berlin, DE - OpenTechSchool - Rust Hack and Learn.
North America
- Jun 14. Columbus, US - Columbus Rust Society - Monthly Meeting.
- Jun 14. San Diego, US - San Diego Rust June Meetup.
- Jun 14. Utah Valley, US - Utah Rust meetup.
- Jun 14. Arlington, US - Rust DC - Mid-month Rustful.
- Jun 17. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Jun 19. Denver, US - Rust Boulder/Denver - June Meetup in Boulder.
- Jun 19. Kitchener, CA - Graph Mining in Rust & Your Project Demos.
- Jun 24. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Jun 26. Dallas, US - Last Tuesday Meetup.
- Jun 26. New York City, US - Procedural Macros - parse JSX using nom.
- Jun 27. Vancouver, CA - Rust Study/Hack/Hang-out night.
- Jun 28. San Francisco, US - Rust Bay Area - Zero Knowledge Proof Macros and Cernan (data pipelining).
- Aug 17. Portland, US - RustConf 2018. Registration is now open.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email the Rust Community Team for access.
Rust Jobs
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
explicit lifetimes no longer scare me the way they used to.
– Nicholas Nethercote on his blog
(selected by llogiq per one unanimous vote)