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.

What's cooking on master?

55 pull requests were merged in the last week.

Breaking Changes

Struct variants are no longer feature-gated. At the same time, struct variants no longer support visibility modifiers, for consistency with other variants. RFC.

The time crate, which is widely considered to be of poor quality, has been moved out of the distribution, but can still be accessed via cargo.

crate, which is widely considered to be of poor quality, has been moved out of the distribution, but can still be accessed via cargo. The new task pool that reem announced on reddit earlier in the week was speedily merged into the tree, replacing the old TaskPool . It includes some breaking API changes.

. It includes some breaking API changes. The compiler now treats () not as a distinct 'unit' type but as a zero-length tuple (though the docs continue to allow that () may be referred to as 'unit'). This may cause breakage for macros that expect () to be a literal, whereas now it is an expression.

not as a distinct 'unit' type but as a zero-length tuple (though the docs continue to allow that may be referred to as 'unit'). This may cause breakage for macros that expect to be a literal, whereas now it is an expression. io::Buffer has been refactored to be object-safe, moving some methods into other traits.

has been refactored to be object-safe, moving some methods into other traits. The Extendable trait for extending a collection via an Iterator has been renamed to Extend , and can now be used with EnumSet and LruCache .

trait for extending a collection via an has been renamed to , and can now be used with and . The old 'once_fns' feature gate has been removed (everybody thought it had been removed long ago). This is unrelated to the modern FnOnce type.

Other Changes

BTree implements the collection views API.

The #[stable] attribute is no longer inherited by child AST elements. This is intended to reduce the risk of accidentally marking things stable.

attribute is no longer inherited by child AST elements. This is intended to reduce the risk of accidentally marking things stable. AsRefReader and AsRefWriter have been renamed to ByRefReader and ByRefWriter for consistency with their method names. The original types remain and are deprecated.

and have been renamed to and for consistency with their method names. The original types remain and are deprecated. Performance of RingBuf has improved. Some subsequent reddit discussion lamented the introduction of unsafe code.

has improved. Some subsequent reddit discussion lamented the introduction of unsafe code. On Windows, rustc once again prefers the bundled MinGW linker over any system-installed MinGW linker in an attempt to make Rust on Windows cause the fewest surprises.

New Contributors

Adam Szkoda

Artem

Barosl Lee

Ian Connolly

Jeff Parsons

Josh Haberman

Josh Stone

Murarth

Ricky Taylor

Approved RFC's

New RFC's

Community

From the Team

Blog Posts

Discussions

New Projects

rust-id3 and rust-metaflac. Reading and writing audio file metadata.

rust-resistant-taskpool. A load-balancing task pool.

Rust-Welder. Experiments with error interop. Second discussion.

json_macros. Create JSON via Rust syntax.

rust-bitfield. A macro to generate bitfields.

rust-smtp. SMTP client.

yaglw. Yet another high-level OpenGL wrapper.

rustup.ps1. A rustup.sh equivalent for Windows, installs Cargo alongside Rust, which the Rust installer currently fails to do.

This Week in Servo 11.

Piston has seen some refactoring to how it handles event loops and windows.

Upcoming Meetups