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 on master?
83 pull requests were merged this week.
Breaking Changes
- IterBytes and
std::to_bytes
have been removed. If you were depending on them for anything non-Hash
related, look into usingserialize
instead. break
andcontinue
are now hygienic in macros, with respect to labels. Unfortunately there's a bug in it where loop labels hide variables of the same name.extern fn
now always meansextern "C" fn
, rather than being context-dependent.std::run
has been removed, andstd::io::process
improved to pick up the slack.#[deriving(ToStr)]
has been removed in favor of#[deriving(Show)]
.ToStr
is now implemented over all types which implementShow
, asformat!("{}" val)
.flate
now returns aCVec<u8>
rather than a~[u8]
, for efficiency.extra::json
has been liberated and now lives inlibserialize
.swap_remove
on vectors now returns anOption
.- A curious bug where bindings in match weren't treated as assignment has been fixed. See the associated bug report for examples which this will break.
- Some useless reexports have been removed from the prelude.
- The
Bool
trait has been removed. - A bug where operator overloads were over-zealous has been fixed.
- Statics are no longer allowed to contain anything with destructors. The exact rules are laid out quite nicely in the PR.
collections:List
has been refactored to use iterators.HashMap
is now generic over hashers.assert_eq!
now uses{}
instead of{:?}
for the error message.- Type parameter overrides are now feature gated.
Other Changes
- Invalid crate handling is now more graceful.
std::io::stdout()
andstderr()
are buffered by default now.- Improper operator overloads are no longer an ICE.
- There's now a warning for publicly exposing private types in function signatures.
libnative
's Windows file handling has been rewritten and now actually works. rustc uses libnative by default now.- Generated binary size has been brought down a bit. There is much more room for improvement.
- "Strict Version Hashes" have been introduced. This is a purely internal change. The hash is of the crate's public ABI and rustc checks this when linking crates together, to avoid problems such as "def id drift".
New Contributors
- Daniel Fagnan
- Felix Crux
- Gary M. Josack
- George Papanikolaou
- Jag Talon
- Johannes Löthberg
- Mickaël Delahaye
Weekly Meeting
The weekly
meeting
discussed TotalEq/TotalOrd, weak extern functions, channel naming, and a brief
discussion on use
paths being absolute.
It was announced that a Sam Wright has been contracted to work on the tutorial, and the Michael Woerister has been contracted to work on debug info.
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 27 PRs.
Notable additions
- Josh Matthews landed the massive changes to remove
@mut
from the DOM types in preparation for a Rust upgrade in #1735 #1591 and #1755. - Tetsuharu Ohzeki refactored our commandline options out of the rendering crate and into a more reasonable place in #1738.
- Ms2ger simplified our Document implementation in #1739.
- Patrick Walton removed the need to explicitly create leaf sets during parallel layout in #1700.
- Harrison Gentry cleaned up some type names in #1781.
- Keegan McAllister moved fontconfig in-tree on Linux in order to get a thread-safe implementation in #1780.
- Saurabh Anand made the DOM parser pass in the correct content types in #1775.
- tgkokk fixed the bindings generator to no longer produce .pyc files in #1735.
New contributors
- Saurabh Anand (sawrubh)
- Harrison Gentry (hgentry)
- tgkokk
Meetings
At this week's meeting, we discussed embedding, the JSManaged conversion, a Rust upgrade, vtables, and recruiting efforts.
Announcements, etc
- RFC: Opt-in Builtin Traits
- Structural single-inheritance counter-proposal
- RFC: Stronger Guarantees for Mutable Borrows
- Dark, an experimental universal data compressor based on the BWT-DC scheme
- cargo-lite v1.1.0 release
- Revamped parallel layout in servo
- February Bay Area Rust Recording
- A bloom filter implementation
- A tweening library