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 Week in Rust is openly developed on Github. If you find any errors or omissions in this week's issue, please submit a PR.

The big story

This week in Rust was crazy. Rust boldly moved to 1.0 alpha status, and the effort put in to make it happen in the last week was staggering, involving a lot of massive patches, a lot of breakage, and not a lot of sleep. Thanks to everybody for pitching in.

Rust 1.0 is going to arrive very quickly and from now to then the focus is going to be on nestling it into a warm cradle of stability, getting the Cargo ecosystem on the stability bandwagon and making sure the stage is set for all those 1.0 newbies to have a swell ride.

It was discussed on Hacker News, /r/rust, /r/programming, LWN and surely other corners of the Internet.

What's cooking on master?

Around 171 pull requests were merged in the last week. It was a long week.

Now you can follow breaking changes as they happen!

Breaking Changes

Boxed closures have finally been removed. The pull request includes a detailed description of the impact.

Unused type parameters on impl s are prohibited. This fixes some soundness holes and generally makes things more sensible. RFC.

s are prohibited. This fixes some soundness holes and generally makes things more sensible. RFC. int and uint have been renamed to isize and usize to emphasize that they are not the 'default' integers. The old names are temporarily behind the int_uint feature gate to provide a transitionary window. The int and uint modules are now called isize and usize . RFC.

and have been renamed to and to emphasize that they are not the 'default' integers. The old names are temporarily behind the feature gate to provide a transitionary window. The and modules are now called and . RFC. There are new restrictions in the orphan check for impls that ensure that if the implemented trait is not defined in the local crate that the Self type is constrained by local types. Fixes soundness holes revealed by multidispatch. The commit message includes more details.

c_str and c_vec have been redesigned. There are no longer any scenerios where Rust frees strings allocated by C, and the APIs are more consistent with modern conventions. Details in the RFC.

and have been redesigned. There are no longer any scenerios where Rust frees strings allocated by C, and the APIs are more consistent with modern conventions. Details in the RFC. The trait Foo for Sized? syntax has been obsoleted after a short deprecation period. Self is no longer implicitly Sized .

syntax has been obsoleted after a short deprecation period. is no longer implicitly . Likewise, the Sized? T syntax for trait bounds has been obsoleted in favor of T: ?Sized .

syntax for trait bounds has been obsoleted in favor of . To futureproof for potential alternative designs, chain comparsion operators like a == b == c must now be parenthesized. RFC.

must now be parenthesized. RFC. The FloatMath trait has merged into Float .

trait has merged into . std::kinds is called std::marker .

is called . The std::thread API has changed again. spawn always creates a detached thread, and scoped creates one which must be joined. The intention is that by requiring a completely different name to create an attached thread it will be harder to accidentally create a deadlock by misunderstanding the join semantics.

API has changed again. always creates a detached thread, and creates one which must be joined. The intention is that by requiring a completely different name to create an attached thread it will be harder to accidentally create a deadlock by misunderstanding the join semantics. The target_word_size compiler-defined cfg value has been renamed to target_pointer_width .

Other Changes

Feature staging has been partially implemented in a series of patches. Under the current behavior, stability attributes only mean anything when applied to the crates distributed with Rust (primarily std), and the 'experimental' stability level has merged into 'unstable'. Use of unstable APIs is now a warning on the nightly and beta (alpha) release channels, and a new lint, unstable_features , that checks for activation of feature gates, is set to warn in betas. RFC.

, that checks for activation of feature gates, is set to warn in betas. RFC. The various guides have been merged into a book called 'The Rust Programming Language'.

The box has been hidden behind the box_syntax feature gate. until it is more fully-baked. For the primary use of constructing boxes, just use Box::new for now. /r/rust.

has been hidden behind the feature gate. until it is more fully-baked. For the primary use of constructing boxes, just use for now. /r/rust. Syntax for negative impls has been added been added behind the optin_builtin_traits feature gate. This will let Sync and Send be implemented completely in the library eventually. RFC.

feature gate. This will let and be implemented completely in the library eventually. RFC. Florian Hahn landed a series of patches to improve the model lexer.

New Contributors

Cristian Kubis

Dabo Ross

Daniel Grunwald

Dylan Ede

FakeKane

Guillaume Gomez

Hyeon Kim

Jakub Vrána

John Ericson

John Kåre Alsaker

Kelvin Ly

Kevin Rauwolf

Laurence Tratt

Mike English

Nathan Stoddard

Peter Schuller

Raul Gutierrez S

Sean T Allen

Thiago Pontes

Tim Dumol

York Xiang

克雷

Approved RFC's

New RFC's

Community

The #rust IRC channel now peaks at more than 900 users.

From the Team

Blog Posts

Discussions

New Projects

This Week in Servo 18.

Grisu and rust-strconv. Yurume talks about his implementation of the Grisu algorithm for converting floats to strings. This work is likely to make it into std someday.

Announcing support for 1.0 in Rust Explorer. Shows the assembly of Rust code.

Upcoming Events

January 12 - Seattle Meetup. January 17 - Beijing Meetup. Presantations about servo and zmq.rs. January 17 - Getting starting contributing to Rust. A special SF Bay area meetup.