Last Week in Rust
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
Issue churn continues to be negative, -15 this week. A total of 63 PRs were merged.
There were impressively few breaking changes last week.
- You now need to pass
rustcto emit debug logging.
mod.rsis now “blessed”.. When loading
mod foo;, rustc will now look for
foo/mod.rs, and will generate an error when both are present.
- A bunch of
strfunctions were renamed or shuffled around to be more consistent.
SmallIntSetwas removed in favor for the more efficient, equivalent
Bitvsethave switched to external iterators.
extra::netand 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.
chain_mut_refmethod was added to
- 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
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
- 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.
uintenum 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.
Makefiledependencies have been fixed.
rustcwill never be invoked without its dependencies being built.
rust-modehas been rewritten.
- There are some build system changes surrounding the
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>.jsonif you’re interested.
- pcwalton proposes allowing
Selfin impls, like in trait definitions.
- There was some discussion of destructors taking
- 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”.
&constwas 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
- 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