summaryrefslogtreecommitdiffstats
path: root/content/2014-02-01-this-week-in-rust.markdown
blob: 3146115ca40474141d1dd221ded5476ac9f10823 (plain)
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
Title: This Week in Rust 35
Date: 2014-02-01 18:45
Category: This Week in Rust


Hello and welcome to another issue of *This Week in Rust*!
[Rust](http://rust-lang.org) 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!](mailto:corey@octayn.net?subject=This%20Week%20in%20Rust%20Suggestion)
Want to get involved? [We love
contributions](https://github.com/mozilla/rust/wiki/Note-guide-for-new-contributors).

This was a good week, with default type parameters, `do` removal, `@[]`
removal, and some code bloat reduction.

<!-- more -->

# What's cooking on master?

61 pull requests were merged this week.

## Breaking Changes

- `do` [has been removed](https://github.com/mozilla/rust/pull/11868). Replace
`do spawn { ... }` with `spawn(proc() { ... })`.
- `libextra` [has exploded](https://github.com/mozilla/rust/pull/11787). [It
exploded some more](https://github.com/mozilla/rust/pull/11867). It will
continue to explode until it no longer exists.
- `#[simd]` [has been feature
gated](https://github.com/mozilla/rust/pull/11738).
- We [now generate static
libraries](https://github.com/mozilla/rust/pull/11706) by default, rather than
dynamic libraries.
- `@[]` and `@str` [have been removed from the
language](https://github.com/mozilla/rust/pull/11974). All that is left is
`@T`!
- Various methods on vectors [now return
Options](https://github.com/mozilla/rust/pull/11944), to be in line with the
rest of everything else.
- `next_power_of_two_opt` [has been renamed
to](https://github.com/mozilla/rust/pull/11930) `checked_next_power_of_two`.
Additionally, the various functions for division in `std::uint` were removed.
- `#[no_send]` etc [have been removed in favor of marker
types](https://github.com/mozilla/rust/pull/11768). Additionally, variance of
types and lifetimes can explicitly be annotated with these marker types. They
are zero-sized and have no runtime impact.
- `std::borrow` [has been
removed](https://github.com/mozilla/rust/pull/11895).
- `Times` [has finally been
removed](https://github.com/mozilla/rust/pull/11672). Good riddance.
- The various `CopyableVector`-like types have [been
renamed](https://github.com/mozilla/rust/pull/11893) to
`CloneableVector` etc.

## Other Changes

- There are now lints for [unused
values](https://github.com/mozilla/rust/pull/11754). Types annotated with
`#[must_use]` will now warn when (surprise) their results are not used.
- debuginfo [should now be fixed on OS
X](https://github.com/mozilla/rust/pull/11864), due to us now explicitly
setting the DWARF version.
- `fp-elim` [has been re-disabled, but only if debuginfo generation is
disabled](https://github.com/mozilla/rust/pull/11879).
- Errors from `#[deriving(...)]` have
[seen](https://github.com/mozilla/rust/pull/11826) some
[work](https://github.com/mozilla/rust/pull/11834).
- The evil environment pointers [has been removed from bare
functions](https://github.com/mozilla/rust/pull/11595), as well as `self` now
being a mostly-normal argument, to the compiler. This was a huge effort (88
changed files with 1,436 additions and 2,138 deletions) by Eduard Burtescu,
and is awesome!
- Also from Eduard is [default type
parameters](https://github.com/mozilla/rust/pull/11217)! They are currently
behind a feature flag, but allow you to say, for example, `struct Foo<T =
uint>` and use `Foo` as a bare type.
- The tydesc [is used in less
places](https://github.com/mozilla/rust/pull/11909) to help fend off code
bloat.
- The occasional infinite recursion in some recursive types [has been
fixed](https://github.com/mozilla/rust/pull/11839).
- Take glue [has been removed from
tydescs](https://github.com/mozilla/rust/pull/11723), also to fend off code
bloat.
- `fail!()` [also generates less code
now](https://github.com/mozilla/rust/pull/11841), to fend off bloat. In
particular, `fn main() { fail!() }` now compiles 2-3x faster due to generating
less code.

## New Contributors

- JeremyLetang
- Johannes Muenzel
- Keshav Kini
- Michael Darakananda
- Nathaniel Herman

# Weekly Meeting

The [weekly
meeting](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-01-28)
discussed default type parameters, the unused result lint, minor changes to
the attribute syntax, how to deal with I/O splitting, and the visit glue.

# 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.

This week, we landed 32 PRs, significantly above our usual PR landing rate!

## Notable additions

- Patrick Walton landed a huge number of PRs that significantly improved our
performance and parallelism
[#1600](https://github.com/mozilla/servo/pull/1600),
[#1564](https://github.com/mozilla/servo/pull/1564),
[#1567](https://github.com/mozilla/servo/pull/1567),
[#1589](https://github.com/mozilla/servo/pull/1589),
[#1566](https://github.com/mozilla/servo/pull/1566)
[#1574](https://github.com/mozilla/servo/pull/1574),
[#1571](https://github.com/mozilla/servo/pull/1571),
[#1559](https://github.com/mozilla/servo/pull/1559), etc.
- Rui (xiongmao86) fixed a linking issue in our Makefiles in
[#1603](https://github.com/mozilla/servo/pull/1603).
- Isabelle Carter landed multiple display list support in
[#1579](https://github.com/mozilla/servo/pull/1579).
- Lars Bergstrom finally re-enabled ref tests in
[#1565](https://github.com/mozilla/servo/pull/1565) and started a quest to
improve test reliability in
[#1597](https://github.com/mozilla/servo/pull/1597) and
[#1570](https://github.com/mozilla/servo/pull/1570).
- Bruno Abinader pushed on more DOM features in
[#1583](https://github.com/mozilla/servo/pull/1583) and
[#1580](https://github.com/mozilla/servo/pull/1580).
- Clark Gaebel (wowus) enabled a limit on the number of redirects Servo
follows in [#1562](https://github.com/mozilla/servo/pull/1562).
- Tetsuharu Ohzeki cleaned up Node's `remove` and `insert` members
[#1582](https://github.com/mozilla/servo/pull/1582).
- Deokjin Kim implemented `whitespace:pre` in
[#1547](https://github.com/mozilla/servo/pull/1547).
- Patrick Kim landed border support for inline flows in
[#1546](https://github.com/mozilla/servo/pull/1546).
- Simon Sapin used his CSS wizardry to redo a performance tweak we made so
that it's actually spec-compliant in
[#1560](https://github.com/mozilla/servo/pull/1560).

## New contributors

- Clark Gaebel (wowus)
- Rui (xiongmao86)

## Meetings

In this week's
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-01-27), we
discussed moving the build of fontconfig on Linux into Servo to avoid
situations where the system version is old and not threadsafe, what's blocking
the JSManaged conversion (which is required for our next Rust upgrade), and
the status of ref and content tests.

Josh Matthews is at FOSDEM this weekend, giving a
[talk](http://www.joshmatthews.net/fosdemservo/) on Servo. Look for video on
air.mozilla.org shortly!

# Announcements, etc

- [An xxHash implementation in
Rust](http://www.reddit.com/r/rust/comments/1wqjsf/more_xxhash_benchmarks/),
as well as some benchmarks comparing to gcc and clang.
- [Using LLVM From Within
Rust](http://hydrocodedesign.com/2014/01/31/llvm-with-rust/)
- [Felix's CodeMesh presentation](http://vimeo.com/85253071)
- [A 1.0 roadmap
spreadsheet](https://docs.google.com/a/octayn.net/spreadsheet/ccc?key=0AlWBWplsaTZvdGdSdEVzZW1BeDA5dm0zM2FFeW0ySEE&usp=drive_web#gid=0)
- [rust-lua](https://github.com/kballard/rust-lua), safe bindings to Lua 5.1
- [InfoQ interview with
Felix](http://www.infoq.com/interviews/klock-rust?utm_source=infoq&utm_medium=videos_homepage&utm_campaign=videos_row1#.Uupx3qddN-w.reddit)
- [Parameters and Bounds in
Rust](http://blog.safaribooksonline.com/2014/01/30/parameters-bounds-rust/)
- [Network Communication and Serialization in
Rust](http://blog.safaribooksonline.com/2014/01/28/network-communication-serialization-rust/)
- [Recording of the Bay Area Rust January
meetup](https://air.mozilla.org/rust-meetup-january-2014/), wherein Brian
talks about 1.0, Niko talks about DST, Kevin talks about rust-lua, and I talk
about evangelism.
- [Deprecating
rustpkg](https://mail.mozilla.org/pipermail/rust-dev/2014-January/008224.html)