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
- Welcome kodraus and withoutboats as full Libs Team members!
- Retooling the Rust Libs Team team for 2018.
- Rust by Example is now part of official Rust docs (nightly).
- Redox crash challenge.
- Introduction to lyon: 2D vector graphics rendering on the GPU in Rust.
- Brave new I/O: A new approach to I/O in embedded contexts.
- Oxidizing Source Maps with Rust and WebAssembly.
- Using Capabilities to design safer, more expressive APIs.
- State machines in a Rust game.
- Ref patterns, destructuring, and invisible borrows.
- WebRender capture infrastructure.
- Why is Rust difficult?
- This week in Rust docs 89.
- [podcast] The Changelog: Building a secure operating system with Rust.
- [podcast] New Rustacean: Interview – Diesel 1.0, with Sean Griffin, part 2. Getting Diesel to 1.0, writing docs and exposing problems with the API, improving Diesel in the future, and thinking about API design for open source libraries in general.
- [podcast] Rusty Spike Podcast - episode 15. Atom, Programming Rust, more books, Rust governance, http2 support, #rust2018 and more.
#Rust2018
Find all #Rust2018 posts at Read Rust.
Crate of the Week
This week's crate is actix-web, a small fast pragmatic open-source Rust web framework. Thanks to Vikrant 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
144 pull requests were merged in the last week
- implement repr(transparent)
- compute LLVM argument indices correctly in face of padding
- whitelist x86 fxsr feature
- rustc_trans: reorganize CrateContext and rename context types
- remove noop landing pads in cleanup shims
- custom error when moving arg outside of its closure
- tweaks to invalid ctor messages
- rename std::ptr::Shared to NonNull and stabilize it
- point at unused arguments for format string
- do not suggest to make
mut
binding external toFn
closure - add transpose conversions for nested Option and Result
- deprecate std::net::lookup_host
- optimize
slice::
{position
,rposition
} result bounds check - implement "only-
" for test headers - cargo: allow packaging of crates with unstable features
- rustdoc: switch to pulldown as default markdown renderer
- rust-installer: Stream the parallel xz/gz tarball generation
New Contributors
- Adam C. Foltzer
- andjo403
- Dominik Winecki
- Gauri
- Marcel Hellwig
- Mark Mansi
- Matthew Walinga
- Petr Sumbera
- Pieter Penninckx
- Pulkit Goyal
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. This week's FCPs are:
- [disposition: merge] Finalize syntax of
impl Trait
anddyn Trait
with multiple bounds. - [disposition: merge] Fallible collection allocation 1.0.
- [disposition: merge] Implicit caller location (third try to the unwrap/expect line info problem).
- [disposition: merge] Unsized rvalues.
- [disposition: merge] eRFC: Cargo build system integration.
- [disposition: merge] Type privacy and private-in-public lints.
New RFCs
Self
in type definitions allowingenum List<T> { Nil, Cons(T, Box<Self>) }
.?
repetition in macro rules.- Tuple struct construction with
Self(v1, v2, ..)
. - Add
Option::replace
to the core library. - Add
pub fn identity<T>(x: T) -> T { x }
to core::convert. - Introduce panic_thin, a fmtless alternative to panic_fmt.
- Implement parent items with child traits.
- Add std::num::NonZeroU32 and friends, deprecate core::nonzero.
- Inherent traits.
- Extend pattern API to OsStr.
- Make the
as
keyword considerInto
Trait implementations.
Upcoming Events
- Jan 25. Rust release triage.
- Jan 29. Rust London User Group - LDN Talks: January 2018.
- Jan 30. Rust Zurich - Embedded Rust.
- Jan 30. Mexico City - Rust MX - Rust Meetup #9.
- Jan 31. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jan 31. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Feb 2 - Feb 4. Multiple locations - Rust Roadshow Brazil 2018.
- Feb 6. Johannesburg Rust Meetup.
- Feb 7. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Feb 7. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- Feb 7. Indianapolis - Indy.rs - February 2018.
- Feb 7. Rust Atlanta - Grab a beer with fellow Rustaceans.
- Feb 8. Helsinki - Finland Rust-lang Group.
- Feb 8. Columbus Rust Society - Monthly Meeting.
- Feb 8. San Diego Rust February Meetup.
- Feb 8. Rust release triage.
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
No jobs listed for this week.
Quote of the Week
Rust is difficult because most programmers abuse shared mutable state and Rust makes you sacrifice your first-born to be able to do it.
Thanks to u/kixunil for the suggestion!