Hello and welcome to the eighth issue of This Week in Rust. Due to me being busy and forgetful over the weekend, this is a special issue, Last Week in Rust.
What's cooking on master
?
Issue churn continues to be negative, -15 this week. A total of 63 PRs were merged.
Breaking Changes
There were impressively few breaking changes last week.
- You now need to pass
--cfg debug
torustc
to emit debug logging. mod.rs
is now "blessed".. When loadingmod foo;
, rustc will now look forfoo.rs
, thenfoo/mod.rs
, and will generate an error when both are present.- A bunch of
str
functions were renamed or shuffled around to be more consistent. SmallIntSet
was removed in favor for the more efficient, equivalentBitvSet
.Bitv
andBitvset
have switched to external iterators.extra::net
and a bunch of other obsolete features have been removed.
Notable library additions, bugfixes, and cleanup
- Various TCP/UDP additions have been made in the new rt.
- Some more atomic operations have been added.
- A
chain_mut_ref
method was added toOption
. - Random access iterators have been implemented.
- Some missing memory orderings on atomic types have been added.
- workcache has seen a bunch of attention.
- DList has seen some more cleanup too.
- Timers have been added to the new rt.
- Vectors now implement
slice_from
andslice_to
.
Notable compiler additions, bugfixes, and cleanup
- debuginfo for destructured locals and function args is now implemented.
- Raw representations are now consolidated.
- Impossible branches on constants are now omitted.
- It is now possible to link against crates with
#[no_std]
. - There is now a warning when matching against NaN, since it is impossible to match against NaN (NaN != NaN).
- A lot of default method and trait inheritance bugs have been fixed.
uint
enum discriminants are now allowed.- The section placement of static and fn items is now configurable.
- Some trans naming modernization has occured.
- Some unnecessary branches and blocks have been removed, resulting in a 10% speedup of unoptimized rustc.
Documentation, tools, and other stuff
- Some benchmarks, and some more benchmarks.
- Crnobog has fixed some Windows testsuite issues.
Makefile
dependencies have been fixed.rustc
will never be invoked without its dependencies being built.rust-mode
has been rewritten.- There are some build system changes surrounding the
--cfg debug
changes.
Meetings
The Tuesday meeting was quite productive. A quick summary:
- Graydon wants to investigate using the Memory Pool System as the Rust GC, rather than a bespoke one. The MPS is a very mature and robust memory management library.
- The buildbots now collect and report some metrics as JSON. Take a poke in
http://static.rust-lang.org/build-metrics/<git-sha1>/<builder>/<slave>/<metricsfile>.json
if you're interested. - pcwalton proposes allowing
Self
in impls, like in trait definitions. - There was some discussion of destructors taking
self
by value. - There was a proposal to remove
*mut
, but it can be useful. There was no consensus. - There was also some discussion on closures and mutable captures. I don't really have enough context to understand the conversation, something to do with "thunks".
- Removing
&const
was discussed as well. The "plan is that we add a lint flag but document it as a reserved word", as it doesn't really seem to be useful.
Discussion + Blog posts
- Iterator Blocks for Rust
- RFC: Removing
*T
- dherman's OSCON slides
- Mozilla is hiring a Rust research engineer
- An alpha release of the MongoDB Driver
- A fairly useless benchmark of random number generation