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.

The 0.10 release will likely be this week. 3 months from 0.9 is April 3.

What’s cooking on master?

63 pull requests were merged this week.

Breaking Changes

  • The sync crate has seen some significant cleanup. In particular, RWArc<T> and MutexArc<T> have been removed. Mutex<T> and RWLock<T> have been introduced, and can be used as Arc<Mutex<T>> and Arc<RWLock<T>> to replace RWArc and MutexArc. There are some other minor changes, see the pull request.
  • Taking a reference to a static whose type contains an Unsafe<T> somewhere is now forbidden.
  • Extendable and FromIterator now take their argument by-value.
  • The crate map has been removed, and with it a significant amount of complexity. As a consequence of its removal, green::start now takes the event loop it should use as an argument rather than looking in the crate map. The documentation has an example
  • The syntax for bounds on generic paths has changed from Foo:Bound<Params> to Foo<Params>:Bound.
  • The default Send bound on trait objects has been removed.
  • The serialize infrastructure now supports error reporting via Result.
  • Pod has been renamed to Copy.
  • The attribute syntax has changed. Rather than saying #[crate_type = "bin"]; (with a significant semicolon), you say #![crate_type = "bin"] (no semicolon).
  • collections::List has been removed. Use a vector, or collections::DList if you really want a linked list. Persistent data structures will live in a different crate than collections.

Other Changes

New Contributors

  • Davis Silverman
  • Noam Gagliardi Rabinovich
  • Sean McArthur

Weekly Meeting

The meeting this week discussed various things: attribute parsing in macros, opt-in built-in traits, SIMD, allowing square brackets in macro invocation, allowing bounds on type parameters in structs, private fields by default, the fate of collections::List, and bounds on trait paths.

RFCs

Project Updates

  • rust-highlight can be used to highlight Rust code in LaTeX, HTML, and JSON.
  • rust-tabular, a library for handling delimiter-separated values (commas, tabs, or any other character), as well as fixed columns of fixed width.
  • rust-csv, a CSV library which implements Encoder and Decoder for serialize support.

This Week in Servo

Servo is a web browser engine written in Rust and is one of the primary test cases for the Rust language.

In the last two weeks, we landed 33 PRs.

Notable additions

  • Lars Bergstrom landed a Rust upgrade, bringing us to late February in #1934
  • ms2ger cleaned up some sketchy use of unsafe native pointers, wrapping them in a JS<T> in #1915
  • Matt Brubeck named the WorkQueue tasks so that we’ll know where failure is coming from during parallel layout in #1977

New contributors

  • Matt Brubeck (mbrubeck)

Meetings and Notes

Patrick Walton authored and combined the final set of changes required to get Servo passing ACID2!

Matthew Brubeck has joined the Servo team full-time, coming over from the Firefox Metro project.

In the meeting two weeks ago, we discussed the Rust upgrade, z-index support, and ACID2. In the most recent meeting, we provided an update on ACID2 and the status of Servo on Android.

Other Announcements