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.
0.9 was released this week, bringing with it a restructuring of our documentation and the usual influx of attention.
What's cooking on master?
57 pull requests were merged this week.
Breaking Changes
- Float literals are now more strict. Octal and hex float literals are no longer allowed.
- A nasty soundness bug reported on reddit has been fixed.
print
andprintln
have been removed from the prelude. Use theprint!
andprintln!
macros instead.Rc
now supports weak pointers, and it no longer requires the wrapped type to be Freeze or Send. That is, it no longer statically avoids cycles using the type system. It was found to be too restrictive. The only constructor is nowRc::new
.- The
eof
method onReader
has been removed, as only files really know when they are at eof. It is now a method on the types it makes sense for such asMemReader
andBufReader
. std::num
is seeing some simplification. Many traits have been merged intoReal
.- Similarly,
ApproxEq
has been removed. - The
std::io::Decorator
trait has been removed. - A nasty resolve bug has been fixed. Importing a trait made it available to all child modules; now it is only available in the module that imported it, as it should be.
- Some method renaming has been
done to
Option
.map_default
is nowmap_or
andmutate_default
is nowmutate_or_set
.
Other Changes
- A lint for unnecessary casts has been added. It is set to allow by default.
- Mutable iterators have been
added to
std::trie
. - A bug in rustpkg preventing it from finding any static libraries, and libnative, has been fixed.
u64_from_be_bytes
has seen some optimization, it is 3-6x faster.box
has been kinda-implemented.box(GC)
andbox(HEAP)
now work.- Typed arenas have been added. They're really fast!
stderr
/stdout
is now per-task, which will allow capturing or redirecting a task's output.
New Contributors
- Andrew Chin
- Clinton Ryan
- Derek Chiang
- Mick Koch
- Nick Cameron
- Niels langager Ellegaard
- Nif Ward
- Raphael Catolino
- Rich Lane
- Dzmitry Malyshau
Weekly Meeting
The weekly meeting discussed Windows XP support, bounded channels, the Rc changes, using guard pages, loadable syntax extensions, and functions that fail.
Quotes of the Week
"[I] find it easy to get lost in this file." -
kud1ing on
libc.rs
- "A language is more than just semantics, syntax, and an implementation -
it's about an ecosystem and a community. Without that it dies." -
bjz
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.
The Servo tree has been mostly frozen for a large part of this week, as the nearly month-long Rust upgrade is finally getting close and we wanted to avoid additional rebases. We did land 7 PRs, many with associated fixes, however.
Notable additions
- Patrick Kim fixed anonymous boxes and images disappearing during line breaking in #1461 and #1463.
- Patrick Walton fixed a race issue with window sizes and script code in #1409.
- Jaeman Park landed CSS parsing and selector matching for pseudo element :before and :after in #1464.
- Bruno Abinder made some DOM additions in #1466 and #1472.
Meetings
In this week's meeting, we discussed the upcoming workweek, the Rust upgrade, ARM buildbots for Rust and Servo, and some research we're doing into the breakdown of page load.
Announcements, etc
- Bay Area Rust Meetup: 1/28/2014
- The Rust language: memory, ownership and lifetimes, Niko's presentation at Linux.conf.au
- An appeal for correct, capable, future-proof math in nascent programming languages
- An in-progress redesign of the website
- Combining rust-http with route-recognizer.rs to create routable HTTP
- A TOML configuration file parser
- Mapping High-Level Constructs to LLVM IR, a peek at what drives the underbelly of the compiler
- Add garbage collector to
std::gc
- rust-workspace, a simple shell to make maintaining Rust projects easier
- Semantic code browser for Rust
- Rvalue Lifetimes in Rust
- Nobody Knows Rust - Steve Klabnik's slides
- 0.9 Release Announcement
- A 3d-printable Rust logo