summaryrefslogtreecommitdiffstats
path: root/content/2014-03-29-this-week-in-rust.markdown
blob: 84d8580c49f45dad66079c33e3711d2dd443203e (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
Title: This Week in Rust 43
Date: 2014-03-29 21:56
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).

The 0.10 release will likely be this week. 3 months from 0.9 is April 3.

<!-- more -->

# What's cooking on master?

63 pull requests were merged this week.

## Breaking Changes

- The `sync` crate [has seen some significant
  cleanup](https://github.com/mozilla/rust/pull/12900). In particular,
  `RWArc<T>` and `MutexArc<T>` have been removed. `Mutex<T>` and `RWLock<T>`
  have been introduced, and can be used as `Arc<Mutex<T>>` and
  `Arc<RWLock<T>>` to replace `RWArc` and `MutexArc`. There are some other
  minor changes, see the pull request.
- Taking a reference to a static whose type contains an `Unsafe<T>` somewhere
  [is now forbidden](https://github.com/mozilla/rust/pull/13083).
- `Extendable` and `FromIterator` [now take their argument
  by-value](https://github.com/mozilla/rust/pull/13039).
- The crate map [has been
  removed](https://github.com/mozilla/rust/pull/13117), and with it a
  significant amount of complexity. As a consequence of its removal,
  `green::start` now takes the event loop it should use as an argument rather
  than looking in the crate map. [The documentation has an
  example](http://static.rust-lang.org/doc/master/green/index.html#starting-with-libgreen)
- The syntax for bounds on generic paths [has
  changed](https://github.com/mozilla/rust/pull/13079) from
  `Foo:Bound<Params>` to `Foo<Params>:Bound`.
- The default `Send` bound on trait objects [has been
  removed](https://github.com/mozilla/rust/pull/13050).
- The `serialize` infrastructure [now supports error reporting via
  `Result`](https://github.com/mozilla/rust/pull/13107).
- `Pod` [has been renamed](https://github.com/mozilla/rust/pull/13160) to
  `Copy`.
- The attribute syntax [has
  changed](https://github.com/mozilla/rust/pull/13162). Rather than saying
  `#[crate_type = "bin"];` (with a significant semicolon), you say
  `#![crate_type = "bin"]` (no semicolon).
- `collections::List` [has been
  removed](https://github.com/mozilla/rust/pull/13183). Use a vector, or
  `collections::DList` if you really want a linked list. Persistent data
  structures will live in a different crate than `collections`.

## Other Changes

- A `fill` method [has been added](https://github.com/mozilla/rust/pull/13049)
  to `Reader`, for reading an exact amount of bytes or erroring.
- As
  [discussed](https://mail.mozilla.org/pipermail/rust-dev/2014-January/007924.html)
  on the mailing list some months ago, [synchronous, bounded
  channels](https://github.com/mozilla/rust/pull/12991) have been added.
- `Share`'s documentation [has been
  expanded](https://github.com/mozilla/rust/pull/13070).
- A straggler from the doc sprint, [a few hundred lines of
  documentation](https://github.com/mozilla/rust/pull/13135) have been added
  to `std`.
- Some handy methods [have been
  added](https://github.com/mozilla/rust/pull/12780) to `Json` to make
  searching and selecting elements from JSON objects easier.
- There's a [new warn-by-default
  lint](https://github.com/mozilla/rust/pull/13108) for deriving traits on
  types which contain raw pointers.
- Many confusing lifetime-related ICE's [have been
  fixed](https://github.com/mozilla/rust/pull/13157). This is good progress
  towards closing [the notorious issue
  5121](https://github.com/mozilla/rust/issues/5121).
- We can now [emit debuginfo for
  `static`s](https://github.com/mozilla/rust/pull/13143). Yay debuginfo!

## New Contributors

- Davis Silverman
- Noam Gagliardi Rabinovich
- Sean McArthur

# Weekly Meeting

The [meeting this
week](https://github.com/mozilla/rust/wiki/Meeting-weekly-2014-03-25)
discussed various things: attribute parsing in macros, opt-in built-in traits,
SIMD, allowing square brackets in macro invocation, allowing bounds on type
parameters in structs, private fields by default, the fate of
`collections::List`, and bounds on trait paths.

# RFCs

- [Smaller refcounts](https://github.com/rust-lang/rfcs/pull/23)
- [Deserializing to a stream of tagged
  values](https://github.com/rust-lang/rfcs/pull/22)
- [Allow bounds on all type
  parameters](https://github.com/rust-lang/rfcs/pull/20)

# Project Updates

- [rust-highlight](https://github.com/KokaKiwi/rust-highlight) can be used to
  highlight Rust code in LaTeX, HTML, and JSON.
- [rust-tabular](https://github.com/arjantop/rust-tabular), a library for
  handling delimiter-separated values (commas, tabs, or any other character),
  as well as fixed columns of fixed width.
- [rust-csv](https://github.com/BurntSushi/rust-csv), a CSV library which
  implements `Encoder` and `Decoder` for `serialize` support.

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

In the last two weeks, we landed 33 PRs.

## Notable additions

- Lars Bergstrom landed a Rust upgrade, bringing us to late February in
  [#1934](https://github.com/mozilla/servo/pull/1934)
- ms2ger cleaned up some sketchy use of unsafe native pointers, wrapping them
  in a `JS<T>` in [#1915](https://github.com/mozilla/servo/pull/1915)
- Matt Brubeck named the WorkQueue tasks so that we'll know where failure is
  coming from during parallel layout in
  [#1977](https://github.com/mozilla/servo/pull/1977)

## New contributors

- Matt Brubeck (mbrubeck)

## Meetings and Notes

Patrick Walton authored and combined the final set of changes required to get
Servo [passing ACID2](https://twitter.com/pcwalton/status/449299846873108480)!

Matthew Brubeck has joined the Servo team full-time, coming over from the
Firefox Metro project.

In the meeting [two weeks
ago](https://github.com/mozilla/servo/wiki/Meeting-2014-03-17), we discussed
the Rust upgrade, z-index support, and ACID2. In the most recent
[meeting](https://github.com/mozilla/servo/wiki/Meeting-2014-03-24), we
provided an update on ACID2 and the status of Servo on Android.

# Other Announcements

- [Official Installers and
  Nightlies](https://mail.mozilla.org/pipermail/rust-dev/2014-March/009223.html)