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
- Clippy is now available as a rustup component.
- Announcing State of Rust.
- Auditing popular crates: how a one-line unsafe has nearly ruined everything.
- The tale of a bug in Arc: Synchronization and data races.
- Running Rust on a drone flight controller.
- Writing a GPU-accelerated path tracer in Rust - part 2.
- Programming Servo: a 'script' event-loop.
- Artifact 2.0 - Rust full stack web and cli application.
- Compatibility with dependencies.
- This week in Rust and WebAssembly 4.
- The Embedded WG newsletter 7.
- 2018 Edition - end of week post (2018-07-13).
- Possible stabilizations for 2018 Edition Preview 2.
Crate of the Week
This week's crate is paste, a self-hosted pastebin made of a lot of Rust and a little Ruby. Thanks to Kyle Clemens for both crate and 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.
- Help port musl's libm to Rust, for math support in WASM/core/no_std code.
- image-png: Unbounded memory consumption on malformed inputs.
- 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
172 pull requests were merged in the last week
- add the
amdgpu-kernel
ABI - infinite loop detection for const evaluation
- chalk lowering rule: WellFormed-TraitRef
- fix ICE when using a pointer cast as array size
- implement
#[alloc_error_handler]
- improve error message shown for unsafe operations
- remove most of
PartialEq
andHash
impls from AST and HIR structures - deny bare trait objects in the rest of rust
- reach the body of functions returning
impl Trait
but don't treat it as public - NLL: suggest
ref mut
and&mut self
- resolve: functions introducing procedural macros reserve a slot in the macro namespace as well
- proc_macro: fix crate root detection
- correct suggestion for println
- do not attempt to recompile codegen backend(s) with --keep-stage
- openbsd fix
- rustc: stabilize the
proc_macro
feature - ensure StorageDead is created even if variable initialization fails
- rustc_codegen_llvm: replace the first argument early in FnType::new_vtable
- change RangeInclusive to a three-field struct
- add ExactChunks::remainder and ExactChunks::into_remainder
- implement
Option::replace
in the core library - add
#[repr(transparent)]
toAtomic*
types - remove sync::Once::call_once 'static bound
- improve Debug display for a few types
- cargo: most sorts can be unstable
- cargo: Make index lookup robust to _ vs -, but don't let the user get it wrong.
- implement default-run option to set default binary for cargo run
- rustdoc: don't panic when the cross-re-export handler sees a proc-macro
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] Associated type bounds of form
MyTrait<AssociatedType: Bounds>
.
Tracking Issues & PRs
- [disposition: merge] resolve: Modularize crate-local
#[macro_export] macro_rules
. - [disposition: merge] Change behavior of
?
as a macro separator and Kleene op in 2018 edition. - [disposition: merge] Deprecation of
str::slice_unchecked(_mut)
. - [disposition: merge] Tracking issue for
ToOwned::clone_into
(toowned_clone_into
). - [disposition: close] NLL lets borrowck observe drop order for
let (a, b);
. - [disposition: close] adds Default impl for Instant.
New RFCs
- if- and while-let-chains, take 2.
- Pattern API.
- Hygiene opt-out (escaping) for declarative macros 2.0.
Upcoming Events
Online
- Jul 25. Rust Community Team Meeting in Discord.
- Jul 31. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- Aug 1. Rust Events Team Meeting in Telegram.
- Aug 1. Rust Community Team Meeting in Discord.
Asia-Pacific
Europe
- Jul 20. Barcelona, ES - BcnRust 1st meetup with Ashley Williams & Steve Klabnik.
- Jul 24. Rome, IT - Rust learning and hacking evening #10.
- Jul 25. Wrocław, PL - Rust Wroclaw Meetup #3.
- Jul 25. Berlin, DE - OpenTechSchool - Rust Hack and Learn.
- Jul 25. Milan, IT - Rust Language Milano - Rust Exercises.
- Aug 1. Cologne, DE - Rust Cologne.
North America
- Jul 22. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Jun 23. Durham, US - Triangle Rustaceans - Project Night & Lightning Talks.
- Jul 24. Denver, US - Rust Boulder/Denver - Rust Denver July Meetup.
- Jul 25. Chicago, US - Rust Meetup July 2018.
- Jul 25. New York, NY US - Rust NYC Meetup
- Jul 25. Vancouver, CA - Rust Study/Hack/Hang-out night.
- Jul 29. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Jul 31. Dallas, US - Last Tuesday Meetup.
- Aug 1. Indianapolis, US - Indy.rs.
- Aug 1. Atlanta, US - Grab a beer with fellow Rustaceans.
- Aug 17. Portland, US - RustConf 2018.
South America
- Jul 21. São Paulo, BR - Rust at The Developers Conference - TDC2018.
- Jul 28. Florianópolis, BR - 2º Encontro Rust Floripa.
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
References are not pointers, but temporary locks on data
Thanks to Squirrel for the suggestion!