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>
andMutexArc<T>
have been removed.Mutex<T>
andRWLock<T>
have been introduced, and can be used asArc<Mutex<T>>
andArc<RWLock<T>>
to replaceRWArc
andMutexArc
. 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
andFromIterator
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>
toFoo<Params>:Bound
. - The default
Send
bound on trait objects has been removed. - The
serialize
infrastructure now supports error reporting viaResult
. Pod
has been renamed toCopy
.- 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, orcollections::DList
if you really want a linked list. Persistent data structures will live in a different crate thancollections
.
Other Changes
- A
fill
method has been added toReader
, for reading an exact amount of bytes or erroring. - As discussed on the mailing list some months ago, synchronous, bounded channels have been added.
Share
's documentation has been expanded.- A straggler from the doc sprint, a few hundred lines of
documentation have been added
to
std
. - Some handy methods have been
added to
Json
to make searching and selecting elements from JSON objects easier. - There's a new warn-by-default lint for deriving traits on types which contain raw pointers.
- Many confusing lifetime-related ICE's have been fixed. This is good progress towards closing the notorious issue 5121.
- We can now emit debuginfo for
static
s. Yay debuginfo!
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
andDecoder
forserialize
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.