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
- Why Rust closures are (somewhat) hard.
- Rust pattern: Iterating an over a
Rc<Vec<T>>
. - FlatBuffers adds support for Rust.
- RPCS3 and Dolphin on macOS using gfx-portability.
- Learning generics in Rust.
- Feasible functors in Rust.
- Programming Servo: A generic “worker event-loop”.
- Serde deserialize This or That into u64.
- This Week in Rust and WebAssembly 7.
- The Embedded WG newsletter 10.
Crate of the Week
This week's crate is cgroups, a native Rust library for managing control groups under Linux. 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.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
109 pull requests were merged in the last week
- enable ThinLTO with incremental compilation
- build LLVM with ThinLTO enabled (2nd attempt)
- update LLVM submodule (mainly WASM improvements)
- ADD more Cortex-R targets
- change the default linker of the ARM Cortex-M targets to rust-lld
- begin preparation for Rust 2018
- fix promotion stability hole in old borrowck
- Miri engine cleanup
- Miri refactor: Final round
- use partial but correct vtable layout
- replace
AccumulateVec
bySmallVec
HybridIdxSet
tweaks- NLL: experiment with inverting liveness
- fix NLL ICEs
- set rustfix auto-applicability for a few lints
- use
FxHash
{Map
,Set
} instead of the defaultHash
{Map
,Set
} - various small diagnostic and code clean up
- save-analysis: record info for the types in
where
clauses - fix
u32
steps_between
for 16-bit systems - reduce number of syscalls in
rand
- reoptimize
VecDeque::append
- add more const int ops
- make
std::intrinsics::transmute()
const fn
impl PartialEq for TryFromIntError
- add
--allow-staged
tocargo fix
- add rust-gdbgui script
- set
cfg(rustdoc)
when rustdoc is running on a crate - rustbuild: distribute libLLVM.so with rustc
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- RFC 2471: Add lint warning for inner function marked as
#[test]
. - RFC 2521: Unify
std::os::raw::c_void
andlibc::c_void
via libcore.
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] Amend RFC 2175 to support for loops and leading vert.
- [disposition: merge] Rustfmt stability.
- [disposition: postpone] Add futures and task system to libcore.
Tracking Issues & PRs
- [disposition: merge] Tracking issue for a minimal subset of RFC 911, const fn.
- [disposition: merge] Add a implementation of
From
for converting&'a Option<T>
intoOption<&'a T>
. - [disposition: merge] Add trim_start, trim_end etc.; deprecate trim_left, trim_right, etc. in future.
- [disposition: merge] Add
-Z emit-stack-sizes
. - [disposition: merge] Tracking issue for RFC 2070: stable mechanism to specify the behavior of panic! in no-std applications .
- [disposition: merge] Tracking issue for the
#[used]
attribute.
New RFCs
- Or patterns, i.e
Foo(Bar(x) | Baz(x))
. - Write References for Direct and Partial Initialization using &out T and &uninit T.
Upcoming Events
Online
- Sep 11. Rust Community Content Subteam Meeting at channel #rust-community.
- Sep 12. Rust Community Team Meeting in Discord.
- Sep 12. Rust Events Team Meeting in Telegram.
- Sep 19. Rust Community Team Meeting in Discord.
Europe
- Sep 7. Darmstadt, DE - Rhein Main Rust Meetup / Mentoring Round.
- Sep 18. Amsterdam, NL - Amsterdam Rust Meetup - Concurrency fundamentals, Tokio & WebAssembly.
- Sep 18. Rapperswil-Jona, CH - Rapperswil-Jona, Zürichsee Meetup - Looking for a speaker.
- Sep 19. Berlin, DE - Berlin Rust Hack and Learn.
- Sep 20. Cambridge, GB - Cambridge Rust Meetup.
North America
- Sep 9. Mountain View, US - Rust Dev in Mountain View!.
- Sep 10. Seattle, US - Seattle Rust Meetup.
- Sep 12. Boulder, US - Rust Boulder/Denver Monthly Meeting.
- Sep 13. Columbus, US - Columbus Rust Society - Monthly Meeting.
- Sep 13. Arlington, US - Rust DC - Mid-month Rustful.
- Sep 13. San Diego, US - San Diego Rust September Meetup - WASM, "failure" library, or ???.
- Sep 13. Utah, US - Utah Rust monthly meetup.
- Sep 16. Mountain View, US - Rust Dev in Mountain View!.
- Sep 19. Vancouver, CA - Vancouver Rust meetup - Study/Hack/Hang-out.
- Oct 19 & 20. Ann Arbor, US - Rust Belt Rust 2018.
South America
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 Developer at Parity, Berlin.
- Rust Backend Engineer at Kraken, Remote.
- Rust Lead Engineer at Setter, Torronto.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Zeitgeist of Rust: developing load bearing software that will survive us.
– Bryan Cantrill on Youtube: "The Summer of Rust (1:08:10)".
Thanks to Matthieu M for the suggestion!
Please submit your quotes for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.