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.
What's cooking in master?
74 pull requests were merged this week.
Breaking Changes
- Struct fields now inherit the privacy of the struct itself.
- A bug in instantiability checking (determining whether a value of a given type could ever be constructed) has been fixed.
Zero
andOne
have been tightened up, and fewer types implement them now.- A lot of things have changed regarding functions that fail or return Options. Almost everything that used to fail now returns an Option instead.
- Many incorrect usages of types from
std::libc
now use Rust types. This might introduce an extraas
or few in code using these (relatively obscure) interfaces. invert
onDoubleEndedIterator
has been renamed torev
.- The numeric constants have been uppercased.
- Some privacy in std and extra has been shuffled around.
Other Changes
- Most macros are no longer injected as a hard-coded string and in fact live in libstd.
- Using
-Z no-landing-pads
actually disables landing pad generation. It was accidentally broken. - The FFI documentation now includes a section on callbacks.
- A lint for unnecessary parens on control flow conditions etc has been added.
- Support for ARM's thumb instructions has been added.
- libnative now implements timers.
- There is now exponential notation for float formatting.
Vec<T>
has been added, which is intended to eventually replace~[T]
.- Borrow checker errors now have better spans and should be more understandable.
- It is now possible to opt out of using rpaths.
- libnative now implements
get_host_addresses
. - A new synchronization primitive, Barrier, has been added.
New Contributors
- Andre Arko
- Aydin Kim
- Ben Harris
- Ben Noordhuis
- Chris Wong
- Daniel MacDougall
- Hong Chulju
- Jake Greenfield
- Matthias Einwag
- Philippe Delrieu
- Salem Talha
- Sean Chalmers
- Trent Ogren
- Virgile Andreani
- comex
Weekly Meeting
The weekly meeting discussed a bunch of open pull requests, but nothing too groudbreaking.
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.
This week, we landed 19 PRs and had a Servo workweek in the Mozilla San Francisco office from Tuesday through Friday (Monday was a US federal holiday).
Notable additions
- Bruno Abinader implemented Document::createHTMLDocument in #1523.
- Patrick Walton implemented parallel layout for two of our three layout passes in #1493.
- Patrick Kim fixed computation of image box sizes in #1520 and text-decoration in #1506.
- Deokjin Kim landed the
white-space:pre
property in #1507. - Aydin Kim and Lars Bergstrom landed fixes for Servo on Android.
- Teodor Szente fixed up a type signature in #1541.
- Lars Bergstrom changed ref tests so that they now emit a PNG showing the image-diff between the baseline and incorrect rendering in #1544.
New contributors
- Teodor Szente
Meetings
There was no separate Servo meeting, but during the workweek we discussed details in our designs for layers, generated content, tables, HiDPI/pixels, and DisplayList creation.
Announcements, etc
- Rust contribution ideas
- RustAlgebloat, a linear algebra library
- Table of Potential Closure Types
- rust-ci updates, categorization and documentation uploading
- Channel API proposal