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 impls 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.
  • 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.
  • The trait Foo for Sized? syntax has been obsoleted after a short deprecation period. Self is no longer implicitly Sized.
  • Likewise, the Sized? T syntax for trait bounds has been obsoleted in favor of T: ?Sized.
  • To futureproof for potential alternative designs, chain comparsion operators like a == b == c must now be parenthesized. RFC.
  • The FloatMath trait has merged into Float.
  • std::kinds is called std::marker.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 Kå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

Project Updates

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.