1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
Title: Last Week in Rust 8
Date: 2013-07-29 06:55
Category: This 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*.
<!-- more -->
# 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` to `rustc` to emit debug logging.**
- [**`mod.rs` is now "blessed".**](https://github.com/mozilla/rust/pull/7926).
When loading `mod foo;`, rustc will now look for `foo.rs`, then
`foo/mod.rs`, and will generate an error when both are present.
- [A bunch of `str` functions](https://github.com/mozilla/rust/pull/7996) were
renamed or shuffled around to be more consistent.
- [`SmallIntSet` was removed](https://github.com/mozilla/rust/pull/7934) in
favor for the more efficient, equivalent `BitvSet`.
- [`Bitv` and `Bitvset` have switched to external
iterators](https://github.com/mozilla/rust/pull/7703).
- [`extra::net` and a bunch of other obsolete
features](https://github.com/mozilla/rust/pull/7883) have been removed.
## Notable library additions, bugfixes, and cleanup
- Various [TCP/UDP additions](https://github.com/mozilla/rust/pull/8040) have
been made in the new rt.
- Some more [atomic operations](https://github.com/mozilla/rust/pull/8039)
have been added.
- A [`chain_mut_ref` method](https://github.com/mozilla/rust/pull/7931) was
added to `Option`.
- [Random access iterators](https://github.com/mozilla/rust/pull/7982) have
been implemented.
- Some missing [memory orderings on atomic
types](https://github.com/mozilla/rust/pull/7993) have been added.
- [workcache has seen a bunch of
attention](https://github.com/mozilla/rust/pull/7885).
- [DList has seen some more cleanup
too](https://github.com/mozilla/rust/pull/7944).
- [Timers have been added to the new
rt](https://github.com/mozilla/rust/pull/7916).
- [Vectors now implement `slice_from` and
`slice_to`](https://github.com/mozilla/rust/pull/7943).
## Notable compiler additions, bugfixes, and cleanup
- [debuginfo for destructured locals and function
args](https://github.com/mozilla/rust/pull/8045) is now implemented.
- [Raw representations are now
consolidated](https://github.com/mozilla/rust/pull/7986).
- [Impossible branches on
constants](https://github.com/mozilla/rust/pull/8041) are now omitted.
- [It is now possible to link against crates with
`#[no_std]`](https://github.com/mozilla/rust/pull/7924).
- [There is now a warning when matching against
NaN](https://github.com/mozilla/rust/pull/8029), since it is impossible to
match against NaN (NaN != NaN).
- A lot of [default method and trait inheritance
bugs](https://github.com/mozilla/rust/pull/8015) have been fixed.
- [`uint` enum discriminants are now
allowed](https://github.com/mozilla/rust/pull/8000).
- The [section placement of static and fn items is now
configurable](https://github.com/mozilla/rust/pull/7958).
- Some [trans naming modernization has
occured](https://github.com/mozilla/rust/pull/7848).
- Some unnecessary branches and blocks [have been
removed](https://github.com/mozilla/rust/pull/7941), resulting in a 10%
speedup of unoptimized rustc.
## Documentation, tools, and other stuff
- [Some benchmarks](https://github.com/mozilla/rust/pull/7912), and [some more
benchmarks](https://github.com/mozilla/rust/pull/7980).
- Crnobog has [fixed](https://github.com/mozilla/rust/pull/8001)
[some](https://github.com/mozilla/rust/pull/7979) Windows testsuite issues.
- [`Makefile` dependencies](https://github.com/mozilla/rust/pull/7820) have
been fixed. `rustc` will never be invoked without its dependencies being
built.
- [`rust-mode` has been rewritten](https://github.com/mozilla/rust/pull/8031).
- [There are some build system changes surrounding the `--cfg debug`
changes](https://github.com/mozilla/rust/pull/8020).
# Meetings
The [Tuesday
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2013-07-23) 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](http://www.ravenbrook.com/project/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](http://michaelwoerister.github.io/2013/07/26/Iterator-Blocks.html)
- [RFC: Removing
`*T`](http://www.reddit.com/r/rust/comments/1j5vbn/rustdev_rfc_removing_t/)
- [dherman's OSCON
slides](https://speakerdeck.com/dherman/rust-low-level-programming-without-the-segfaults)
- [Mozilla is hiring a Rust research
engineer](https://careers.mozilla.org/en-US/position/oKiEXfwn)
- [An alpha release of the MongoDB
Driver](http://blog.mongodb.org/post/56426792420/introducing-the-mongodb-driver-for-the-rust-programming)
- [A fairly useless benchmark of random number
generation](https://togototo.wordpress.com/2013/07/23/benchmarking-level-generation-go-rust-haskell-and-d/)
# Projects
- [color-rs: A library that provides types and conversions for working with
various color formats.](https://github.com/bjz/color-rs)
- [grease-bench: a runtimeless
benchmarker](https://github.com/Aatch/grease-bench)
- [rustfind, a "jump to definition"
tool](https://github.com/dobkeratops/rustfind)
- [RustyXML, a pure-Rust XML parser](https://github.com/Florob/RustyXML)
|