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 issue combines this week and last, since I was very busy with school last week, and did not have time to write.
What's cooking on master?
153 pull requests were merged in the last two weeks.
Breaking Changes
- Auto-rooting of
@
has been removed. The exact fallout of this isn't obvious to me, but presumably this makes some uses of@
not work. std::task::task
has been renamed toTaskBuilder::new
.- Closures can no longer be
applied through a
&
-pointer. This fixes some memory unsafety. - The
Round
trait has been removed, and is now part ofFloat
, andFloat
now takes things by-value. Unsafe<T>
is now alwaysShare
, regardless of whether or not the contained type isShare
.- Modulo (
%
operator) on float types has been removed, use therem
method instead. ~[T]
is no longer growable.- Some
Bitv
method names have changed. - The
priv
keyword is no longer used, but is still reserved. - Some cases where destructors were not run have been fixed.
unwrap
andunwrap_err
onResult
now require the wrapper type to implementShow
.- Some return types in
std::comm
have been made consistent.
Other Changes
- There is now a pure-Rust regular expression library in the standard library. As I've come to expect from burntsushi, the docs are fantastic.
- Unix sockets and TCP sockets now support accept with a timeout. TcpStream::connect can also take a timeout.
- 64-bit Windows is now partially supported. Unwinding still doesn't work.
&&
is now parsed as& &
when appropriate.- Errors about use of moved values are much nicer now.
- Cloning vectors is now much much faster.
- SipHash has also been optimized.
- Steve Klabnik's 30 minute introduction to Rust has been added as official documentation.
New Contributors
- Aaron Turon
- Adolfo Ochagavía
- Andrew Gallant
- Brandon Waskiewicz
- Brendan McLoughlin
- Chris Shea
- Jacob Hegna
- James Sanders
- John Fresco
- John Simon
- Manish Goregaokar
- Meyer S. Jacobs
- Michael Fairley
- Richo Healey
- Ryan Mulligan
- Rüdiger Sonderfeld
- Thomas Backman
- iancormac84
- mdinger
Weekly Meeting
- Two weeks ago, a bunch of RFCs were discussed, as well as a breaking change log.
- [Last week], some more RFCs were discussed, notably the regex crate, numeric type inference, and disableable asserts.
RFCs
- Linker placement attribute
- Avoiding integer overflow
- Writer size hints
- Revised trait matching
- Disableable assertions
- Macro name resolution
- Private trait items
- Coroutines
Community Updates
- For all Mac users, there is now dash-rust, for Rust API docs in Dash.
- Another Rust By Example has been created. This one is much more complete and also looks pretty nice.
- Teepee has been
announced, the successor to
rust-http
. - zinc, a bare-metal Rust stack.
- An IntelliJ Rust plugin.
- Rust for C++ Programmers.
- A very fast n-queens solver.
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 week, we landed 29 PRs. There are several very large PRs waiting to land behind an impending Rust upgrade, which will bring us April 10th.
Notable additions
- Matt Brubeck worked around a long-standing issue causing Servo to look crunched on HIDPI displays in #2224
- Harry Maclean made
Node.Normalize()
work on all its descendants in #2221 - jgraham cleaned up the Web Platform Tests integration in #2216
- ms2ger, among many other things, added support for the
Any
type in dictionaries in #2225 - Tetsuharu Ohzeki added helpers that significantly cleaned up script's layout queries in #2210
- jdm brought back the "I tried" star for failed pages in #2200
- Peiyong Lin implemented
Element.localName
in #2209 - Tom Schuster implemented
ParentNode.children
in #2192 - jdm also added a basic browser context in #2111
- Manish Goregaokar added support for tracking the WPT manifest in #2187
- Sankha Guria implemented
Element.prefix
in #2199 - Bruno Abinader implemented
createDocument
in #2072
New Contributors
- Harry Maclean (hazz)
Meetings and Notes
In this week's meeting we went over the Rust upgrade status, some medium-sized project brainstorming we've been doing, the Web Platform Tests support in Servo, and fixing iframes.
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 week, we landed 39 PRs.
Notable additions
- Manish Goregaokar landed support of the Web Platform Tests in #2089
- ms2ger improved the integration of WPT with our build system in #2162 and #2180
- Philip Horger handled treating HTTPS request as a network error in #2166
- Peiyong Lin cleaned up some parser code in #2157
- James Sanders associated ResourceTask with URLProvenance in #2152
- Josh Matthews added
Traceable
andUntraceable
types to clean up rooting in #2147 - Lars Bergstrom changed the default rendering mode to CPU on Android #2148
- Simon Sapin removed some unnecessary
unsafe
code in #2145 - Matthew Brubeck fixed some terrible bugs in #2135 and #2134 and #2130
- Sanhka Guria added attribute setters and getters for
HTMLImageElement
in #2054
Meetings and Notes
In this week's meeting we went over our Rust upgrade strategy, linking, embedding, rooting, Android support, and the commit we missed landing in one submodule for Acid2.