Welcome to another issue of This Week in Rust. We're gearing up for a 0.8 release, tentatively planned for Thursday. Additionally, a huge welcome of Alex Crichton to the Rust team! He's been doing some great work, it's wonderful to have another full-time Rust dev.
What's cooking in master?
There were 86 PRs merged this week.
rustdoc_ng
rustdoc_ng was merged into mainline and enabled as the new rustdoc, in time for 0.8. This makes me incredibly happy, as it marks the conclusion of my quest to a better rustdoc. Not to say that rustdoc is finished or perfect, but it's already much better than the old rustdoc. My sincere thanks go to Jordi Boggiano (Seldaek), who worked unceasingly to create a beautiful, usable frontend, and to Meret Vollenweider (meretv) for donating her amazing design skills. Also thanks to Huon Wilson (dbaupp) for moral support and creating the awesome DocFolder interface that passes over the documentation use. And, of course, to Alex Crichton, who pushed these past few days to port the static site generator to Rust and to integrate it into the build system.
The new docs have replaced the old docs. You can view them on the Rust
website. Still to-do
is proper cross-crate doc hyperlinking. To run it on your own crate, build a
recent Rust and do rustdoc html path/to/your/crate.rs
. It will eventually be
integrated into rustpkg
.
Breaking changes
extra::par
has been removed.- Some unsound functional struct updates (FSU,
{a: 5, ..b}
) are now disallowed. --cfg debug
is no longer required. If you want to disable debug logging, use--cfg ndebug
.- The various uses of
NaN
are now lowercased tonan
. std::util::unreachable
has been removed in factor of theunreachable!
macro.extra::future
has been cleaned up a bit, including some method shuffling/renames.extra::getopts
has been cleaned up as well, with most free functions now being methods.- The
from_str
methods in the numeric modules have been removed in favor of the FromStr trait and thefrom_str
free function in the prelude. Same forfrom_str_radix
. - The
Drop
trait now uses&mut self
, as part of the transition to by-value drops. extra::json
uses a different encoding when encoding/decoding enums, so any Rust-generated JSON before this patch will now be rejected by the decoder.
Other changes
- debuginfo now works for recursive types.
- You can now pass parameters to
the generated test with
rust test
. extern fn
s from external crates now use the declared ABI, rather than assuming cdecl.CString
has gained anas_str
method.- Some overflow bugs in
vec
andstr
have been fixed. statics
are now properly inlined cross-crate.- The
bytes!
macro's error reporting has been tightened up to make it more obvious where the error is. rustpkg init
has been added, to create a new workspace.- File IO in newrt has been massively reworked and is much more complete than the oldrt.
- The exact meaning of "unsafety" is now documented.
\0
escapes in strings is now supported.rustpkg
now thinks in terms of crates, not packages, to you can now have multiple crates in a single package and have things work correctly.- newrt has pipes and process support now.
format!
now allows trailing commas in its arguments.- The lexer now throws vastly better errors.
Weekly Meeting
The weekly
meeting
discussed quite a bit, most interesting to me was the crypto discussion,
putting macro_rules!
behind an experimental flag, and the default arguments
discussion.
Project announcements etc
- rustymem - a pure-rust memcached library.
- "Where to learn more about Rust's concurrency model?"
- q3 now has skeletal animation!.