Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safe, concurrent, and fast. This is a weekly summary of its progress and community. Want something mentioned? Send me an email! Want to get involved? We love contributions.

This issue brought to you by the fantastic Brian Anderson and Alexis Beingessner!

What's cooking on master?

101 pull requests were merged in the last week. Woo!

Breaking Changes

Other Changes

New blanket impls of the unboxed closure types allow them to interoperate. See test cases for examples.

impls can now be defined on trait objects.

P1start has been converting compiler messages that provide suggestions from 'notes' to 'help' messages.

The exceeding_bitshifts lint catches overlong shifts (which are currently undefined behavior) of static size. Due to bugs it is set to 'allow' be default.

lint catches overlong shifts (which are currently undefined behavior) of static size. Due to bugs it is set to 'allow' be default. Ariel removed a bunch of unsafe code from the compiler. Yay!

A new -l flag to the compiler has been added to specify linkage to native libraries, primarily for use by cargo. In the same PR, include! was updated to expand its arguments, allowing cargo to do for more complex compile-time code generation. RFC.

flag to the compiler has been added to specify linkage to native libraries, primarily for use by cargo. In the same PR, was updated to expand its arguments, allowing cargo to do for more complex compile-time code generation. RFC. #![cfg] and #[cfg_attr] can be applied to crates.

and can be applied to crates. On x86 Linux, random number generation now prefers the new [ getrandom ] syscall.

New Contributors

Cristi Burcă

juxiliary

Nathan Zadoks

qwitwa

Sean Jensen-Grey

Subhash Bhushan

thiagopnts

tshakah

Vitali Haravy

Vladimir Matveev

whataloadofwhat

Approved RFC's

Num reform: Strips down std::num to minimally support generic primitive numbers, without supporting a full mathematical hierarchy.

to minimally support generic primitive numbers, without supporting a full mathematical hierarchy. Higher-ranked trait bounds: Add the ability to have trait bounds that are polymorphic over lifetimes. Necessary for unboxed closures.

un-feature-gating struct variants: Woo!

Multiple lifetime bounds: Removes special cases from the type system and allows more complex lifetime relationships to be expressed that were previously only inferable.

New RFC's

Community

From the Team

Videos

An introduction to Servo: Lars Bergstrom from the Research team provides an overview of the Servo project, demonstrates its current status, and shows how to contribute to it.

November's Bay Area meetup happened on Thursday, featuring five presentations about Servo and browser architecture.

Blog Posts

Discuss

Pre-RFC: placement box with Placer trait: Add user-defined placement box expression (more succinctly, "a box expression"), an operator analogous to "placement new" in C++. This provides a way for a user to specify (1.) how the backing storage for some datum should be allocated, (2.) that the allocation should be ordered before the evaluation of the datum, and (3.) that the datum should preferably be stored directly into the backing storage (rather than temporary storage on the stack and then copying the datum from the stack into the backing storage).

Forbid -(unsigned integer): the eternal struggle continues. It's super handy when you want it, but also a common error to make.

Moving all built-in macros to plugins: Another proposal to handle some of the issues with macros for 1.0. May make it easier to bootstrap changes to the compiler.

Lifetime Notation: &'a -> a& . Some discussion of tradeoffs and details.

-> . Some discussion of tradeoffs and details. Poll: Foo::new() vs Foo() as the default constructor

Reddit

New Projects

this-week-in-rust: This Week in Rust's content is now publicly hosted in a Github repo! If you find any errors, just submit a PR to the relevant markdown file in /content ! If you'd like to help out, please contact cmr, brson, or Gankro on Github/Reddit/IRC.

! If you'd like to help out, please contact cmr, brson, or Gankro on Github/Reddit/IRC. rustaceans.org: This website is for finding Rustaceans. Wondering who is behind that GitHub username or IRC nick? Here is where to find out.

rust-modifier: Convenient chaining APIs for free

dockerfiles: Collection of lightweight and ready-to-use docker images

Window Tiling For The Win: A tiling window manager written in Rust

cxx2rs: A rust-binding generator for C/C++ files

sorting-rs: This is a set of sorting algorithms, written in Rust.

rust-chatserver: A barebone command line TCP chatserver written in Rust. Looking for feedback.

rust-irc: A simple example irc implementation. Looking for feedback

rusqlite: Ergonomic, semi-safe bindings to SQLite for Rust

Upcoming Meetups