NOTE: THIS BLOG IS RETIRED! See blog.octayn.net for new content.

This Week in Rust

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 weeks flips the switch from libgreen-by-default to libnative-by-default.

What’s cooking on master?

91 pull requests were merged this week, topping the previous record of 89.

Breaking Changes

  • Logging has been extracted to its own crate. Using the logging macros (debug! etc) now requires a #[phase(syntax, link)] extern crate log;.
  • The AtomicFlag type has been removed.
  • std::vec has been renamed to std::slice, and the old std::vec_ng moved into its place.
  • A Share built-in trait has been added. It also adds an Unsafe<T> type, which is now the only “safe” way of achieving internal mutability (what the Cell types etc do). This Share trait means that the type is thread-safe. See the pull request for more details. In particular, taking the address of a static who contains an Unsafe member is not allowed.
  • std::cast::transmute_immut_unsafe has been removed because it is expressible by safe code.
  • libnative is now the default runtime. In the process, the #[no_uv] attribute was renamed to #[no_start].
  • Atomics no longer require mutable references to change, due to the work on Share, they can safely use interior mutability. Additionally, the generic atomics have been hidden and AtomicU64 has been removed, because not all targets support it.
  • The push_bytes and read_bytes methods on Reader and Writer have been renamed for clarity.
  • RefCell::with and RefCell::with_mut have been removed, because the Deref changes make them unnecessary.
  • The get methods on Ref and RefMut (helpers returned by RefCell) have been removed, because the Deref changes make them unnecessary.
  • The Freeze trait has been removed
  • std::managed has been removed from the public API.
  • HashMap now correctly uses TotalEq.
  • The to_owned_vec method on Iterator has been removed.
  • The equals method has been removed from TotalEq, due to the recent changes in TotalEq’s semantics.
  • Trait implementations may no longer implement a method twice.

Other Changes

The doc sprint happened last week. A bunch of pull requests for docs for this landed:

New Contributors

  • Eunchong Yu
  • Jonathan S
  • Jorge Aparicio
  • Ms2ger
  • Olle Jonsson
  • Ryan Scheel (Havvy)

Weekly Meeting

The weekly meeting discussed using GitHub for RFCs, the docsprint, and one of the RFCs.

RFCs

Some new RFCs:

Project Updates

rustfind, doomlord’s code browser for Rust, has been updated. This is a very nice librustc-integrated tool that supports jump-to-definition.

Relatedly, I’m reminded of unfold, doomlord’s tool for displaying “brace context” of code. It includes an “rg” script, which is a simple grep for item definitions.

In leiu of a “This Week in Servo”, Servo has been making progress on Acid2.

Other Announcements