summaryrefslogtreecommitdiffstats
path: root/content/2015-02-23-this-week-in-rust.md
blob: 27c42877902e828fba9c0c40d7f5157b3b4cd6bc (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
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
Title: This Week in Rust 71
Date: 2015-02-23
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:
safety, concurrency, and speed. 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/rust-lang/rust/wiki/Note-guide-for-new-contributors).

*This Week in Rust* is openly developed [on GitHub](https://github.com/cmr/this-week-in-rust).
If you find any errors or omissions in this week's issue, [please submit a PR](https://github.com/cmr/this-week-in-rust/pulls).

# The big news

Rust [1.0.0-alpha.2] was released on Friday, but keep using
nightlies. Six more weeks until the beta, which should become
1.0. *Only* six more weeks.

[1.0.0-alpha.2]: http://blog.rust-lang.org/2015/02/20/Rust-1.0-alpha2.html

# What's cooking on master?

157 pull requests were [merged in the last week][merged], and 15 [RFC PRs][rfcs].

[merged]: https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Amerged+merged%3A2015-02-16..2015-02-23
[rfcs]: https://github.com/rust-lang/rfcs/pulls?q=is%3Apr+is%3Amerged+merged%3A2015-02-16..2015-02-23

Now you can follow breaking changes *[as they happen][BitRust]*!

[BitRust]: http://bitrust.octarineparrot.com/

## Breaking Changes

* A [variety of tweaks][thread] have been made to `std::thread` before
  declaring it stable.
* The `vec!` macro accepts a new form, `vec![element; len]`, which
  [produces a vector containing a number of clones of the same
  element][elem].
* The `CString` type has seen a few modifications, as well as the
  [introduction of the `CStr` type][cstr].
* `IntoIterator` now has an [associated type for specifying the element
  type][into].
* `ExactSizeIterator` is [no longer implemented][exact] for 64-bit
  ranges.
* In target specs, `target-word-size` [is now called
  `target-pointer-width`][tpw], to match the recently changed
  `target_pointer_width` cfg attribute.
* [`fmt::Writer` was renamed to `fmt::Write`][write].
* `us`/`is`/`u`/`i` suffixes are now [replaced with
  `usize`/`isize`][ussuffix].
* A [number][audit1] of [modules][audit2] have been [audited][audit3]
  for incorrect use of `isize` and `usize`.
* Use of arbitrary attributes not defined by the language [is feature
  gated][attr].

[cstr]: https://github.com/rust-lang/rust/pull/22482
[elem]: https://github.com/rust-lang/rust/pull/22455
[thread]: https://github.com/rust-lang/rust/pull/22435
[tpw]: https://github.com/rust-lang/rust/pull/22191
[exact]: https://github.com/rust-lang/rust/pull/22299
[write]: https://github.com/rust-lang/rust/pull/22311
[into]: https://github.com/rust-lang/rust/pull/22313
[ussuffix]: https://github.com/rust-lang/rust/pull/22497
[audit1]: https://github.com/rust-lang/rust/pull/22339
[audit2]: https://github.com/rust-lang/rust/pull/22401
[audit3]: https://github.com/rust-lang/rust/pull/22485
[attr]: https://github.com/rust-lang/rust/pull/22364

## Other Changes

* [`Send` no longer requires `'static`][send], which make it possible
  to express various data-parallel scenarious by sharing interior
  pointers. [RFC][send-rfc].
* The ['Macros'] chapter of TRPL has been overhauled and a new
  ['Advanced Macros'] chapter added.
* `rustc --version` now reports the [build date] in addition to the
  commit date, to make it more clear what nightly you are on.
* Florian Hahn [added a new category of 'parse-fail' tests][parse] to
  the test suite. This makes it easier to compare model parsers to the
  production parser.

[send]: https://github.com/rust-lang/rust/pull/22319
[send-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0458-send-improvements.md
[build date]: https://github.com/rust-lang/rust/pull/22201
[parse]: https://github.com/rust-lang/rust/pull/22118
['Macros']: http://doc.rust-lang.org/book/macros.html
['Advanced Macros']: http://doc.rust-lang.org/book/advanced-macros.html

## New Contributors

* Adam Jacob
* Alexander Bliskovsky
* Brian Brooks
* caipre
* Darrell Hamilton
* Dave Huseby
* Denis Defreyne
* Elantsev Serj
* Henrik Schopmans
* Ingo Blechschmidt
* Jormundir
* Lai Jiangshan
* posixphreak
* Ryan Riginding
* Wesley Wiser
* Will
* wonyong kim

## Approved RFCs

This covers two weeks since last week I wasn't able review RFCs in time.

* [RFC 458: Improve the Send trait][rfc-458].
* [RFC 505: API comment conventions][rfc-505].
* [RFC 528: Add a generic string pattern matching API][rfc-528].
* [RFC 563: Remove ndebug][rfc-563].
* [RFC 572: Feature gate unused attributes][rfc-572].
* [RFC 580: Rename some std colloctions][rfc-580].
* [RFC 592: CStr][rfc-592].
* [RFC 593: Forbid `Self` identifier][rfc-593].
* [RFC 599: Default object lifetime bounds][rfc-599].
* [RFC 601: Replace `be` with `become`][rfc-601].
* [RFC 735: Lift restrictions on defition site of inherent impls][rfc-735].
* [RFC 736: Privacy-respecting FRU][rfc-736].
* [RFC 738: Variance for type params][rfc-738].
* [RFC 769: Sound generic drop][rfc-769].
* [RFC 809: `box` and placement `in`][rfc-809].
* [RFC 823: Simplify `std::hash`][rfc-823].
* [RFC 832: Add back `Vec::from_elem`][rfc-832].
* [RFC 840: No panic in CString][rfc-840].

[rfc-458]: https://github.com/rust-lang/rfcs/blob/master/text/0458-send-improvements.md
[rfc-505]: https://github.com/rust-lang/rfcs/blob/master/text/0505-api-comment-conventions.md
[rfc-528]: https://github.com/rust-lang/rfcs/blob/master/text/0528-string-patterns.md
[rfc-563]: https://github.com/rust-lang/rfcs/blob/master/text/0563-remove-ndebug.md
[rfc-572]: https://github.com/rust-lang/rfcs/blob/master/text/0572-rustc-attribute.md
[rfc-580]: https://github.com/rust-lang/rfcs/blob/master/text/0580-rename-collections.md
[rfc-592]: https://github.com/rust-lang/rfcs/blob/master/text/0592-c-str-deref.md
[rfc-593]: https://github.com/rust-lang/rfcs/blob/master/text/0593-forbid-Self-definitions.md
[rfc-599]: https://github.com/rust-lang/rfcs/blob/master/text/0599-default-object-bound.md
[rfc-601]: https://github.com/rust-lang/rfcs/blob/master/text/0601-replace-be-with-become.md
[rfc-735]: https://github.com/rust-lang/rfcs/blob/master/text/0735-allow-inherent-impls-anywhere.md
[rfc-736]: https://github.com/rust-lang/rfcs/blob/master/text/0736-privacy-respecting-fru.md
[rfc-738]: https://github.com/rust-lang/rfcs/blob/master/text/0738-variance.md
[rfc-769]: https://github.com/rust-lang/rfcs/blob/master/text/0769-sound-generic-drop.md
[rfc-809]: https://github.com/rust-lang/rfcs/blob/master/text/0809-box-and-in-for-stdlib.md
[rfc-823]: https://github.com/rust-lang/rfcs/blob/master/text/0823-hash-simplification.md
[rfc-832]: https://github.com/rust-lang/rfcs/blob/master/text/0832-from-elem-with-love.md
[rfc-840]: https://github.com/rust-lang/rfcs/blob/master/text/0840-no-panic-in-c-string.md

## New RFCs

* [`rustdoc` or `cargo doc` should pass `--cfg doc`][doc].
* [Never allow reads from uninitialized memory in safe Rust][never].
* [Have collections impl Extend<&T> where T: Clone][extend].
* [Changing struct literals][struct].
* [Item grouping][group].
* [Put `div_rem` back in the standard library][rem].
* [New struct syntax][new].
* [Use globs as][as].
* [Remove lifetime elision in type parameter position][el].
* [Replace IteratorExt::zip with tuple iteration][tup].
* [Allow macros in types][mactype].
* [Lex binary and octal literals more eagerly][lex]
* [Improvements to range match patterns][range].
* [Make function pointer types look like borrowed pointer types for forwards compatability][fn].
* [Allow types to be parameterized by integer (and bool) constant values][bounds].
* [Allow `#[must_use]` on functions, rather than just types. Mark `Result::{ok,err}` `#[must_use]`][must].
* [Add single-threaded fences][fence].
* [Custom preludes][prelude].
* [Approx asserts][approx].

[doc]: https://github.com/rust-lang/rfcs/pull/834
[never]: https://github.com/rust-lang/rfcs/pull/837
[extend]: https://github.com/rust-lang/rfcs/pull/839
[struct]: https://github.com/rust-lang/rfcs/pull/841
[group]: https://github.com/rust-lang/rfcs/pull/849
[rem]: https://github.com/rust-lang/rfcs/pull/850
[new]: https://github.com/rust-lang/rfcs/pull/866
[as]: https://github.com/rust-lang/rfcs/pull/867
[el]: https://github.com/rust-lang/rfcs/pull/869
[tup]: https://github.com/rust-lang/rfcs/pull/870
[mactype]: https://github.com/rust-lang/rfcs/pull/873
[lex]: https://github.com/rust-lang/rfcs/pull/879
[range]: https://github.com/rust-lang/rfcs/pull/880
[fn]: https://github.com/rust-lang/rfcs/pull/883
[bounds]: https://github.com/rust-lang/rfcs/pull/884
[must]: https://github.com/rust-lang/rfcs/pull/886
[fence]: https://github.com/rust-lang/rfcs/pull/888
[prelude]: https://github.com/rust-lang/rfcs/pull/890
[approx]: https://github.com/rust-lang/rfcs/pull/897

# Friend of the Tree

The Rust Team likes to occassionally recognize people who have made
outstanding contributions to The Rust Project, its ecosystem, and its
community. These people are 'friends of the tree'.

This week's friend of the tree was ... Toby Scrace.

"Today I would like to nominate Toby Scrace as Friend of the
Tree. Toby emailed me over the weekend about a login vulnerability on
crates.io where you could log in to whomever the previously logged in
user was regardless of whether the GitHub authentication was
successful or not. I very much appreciate Toby emailing me privately
ahead of time, and I definitely feel that Toby has earned becoming
Friend of the Tree."

# Quote of the Week

```
<Manishearth> In other news, I have r+ on rust now :D
<Ms2ger> No good deed goes unpunished
```

[From #servo](http://logs.glob.uno/?c=mozilla%23servo&s=21+Feb+2015&e=21+Feb+2015&h=In+other+news#c175503). Thanks to SimonSapin for the tip.

# Notable Links

* [Weekly-meetings/2015-02-17][mtg]. fott; security bugs; code completion; open-ended proposals; struct syntax; alpha2; integer suffixes; overflow.
* [McPherrin succeeds at transcribing two hours of meetup talks, but
  at great cost][mc].
* [Radical statements about the mobile web][radical]. Servo is going to fix it al.
* [Embedded Rust Right Now!][now].
* [On Rust and Nim][nim]. [HN][nim-hn].
* [Rust Debugging in Emacs][emacs].
* [Thoughts of a Rustacean learning Go][go]. [/r/rust][go-r-rust].
* [Some notes on Send and Sync][sendand].
* [Turing tarpits in Rust's macro system][tarp].
* [Bay Area Rust Meetup: Blocking and Async I/O][air]. Video.
* [Memory management in Oxischeme][oxy].

[mtg]: https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2015-02-17.md
[mtg-reddit]:
[mc]: http://i.gyazo.com/bb91d17de95587ccbbf146dc5c638e85.png
[radical]: http://jlongster.com/Radical-Statements-about-the-Mobile-Web
[nim]: https://andreaferretti.github.io/on-rust-and-nim/
[nim-hn]: https://news.ycombinator.com/item?id=9088640
[now]: http://spin.atomicobject.com/2015/02/20/rust-language-c-embedded/
[emacs]: https://bjbell.wordpress.com/2015/02/17/emacs-rust-debugging/
[go]: http://inpursuitoflaziness.blogspot.in/2015/02/thoughts-of-rustacean-learning-go.html
[go-r-rust]: https://www.reddit.com/r/rust/comments/2wj6fh/thoughts_of_a_rustacean_learning_go/
[sendand]: http://huonw.github.io/blog/2015/02/some-notes-on-send-and-sync/
[tarp]: http://mainisusuallyafunction.blogspot.com/2015/02/turing-tarpits-in-rusts-macro-system.html
[air]: https://air.mozilla.org/bay-area-rust-meetup-february-2015/
[oxy]: http://fitzgeraldnick.com/weblog/60/

# Project Updates

* [Raft Update 2: Hacking the log][raft].
* [Rewriting Rust serialization part 2][ser].
* [rustdox.com]. Rust documentation hosting.
* [var]. A macro for declaring multiple mutable variables at once.
* [rexiv2]. A library for reading and writing EXIF data.
* There was a good HackerNews thread about [exa], the replacement for `ls` written in Rust. Also
  on [/r/rust][exa-r-rust].
* [rust-netbeans]. Rust plugin for the NetBeans IDE, with Cargo support.
* [This Week in Servo 24][twis].
* [rtracker]. A bittorrent tracker in Rust.
* [dns2]. A DNS library.
* [rust-media]. Portable media player framework.
* [ipc]. Clone of ipcalc.
* [multilist]. Safe intrusive doubly-linked lists.
* [rustle]. Install Cargo apps without installing Rust.
* [xsv]. BurntSushi's CSV toolkit.
* [suffix]. Suffix arrays for fast searching.
* [Rust Share]. Share to play.rust-lang.org from SublimeText.
* [chess]. Written in Rust!

[var]: http://users.rust-lang.org/t/ann-var-is-a-macro-for-declaring-multiple-mutable-variables-at-once/370
[rexiv2]: http://users.rust-lang.org/t/announcing-rexiv2-library-for-image-metadata-request-for-code-review/414
[exa]: https://news.ycombinator.com/item?id=9087108
[exa-r-rust]: https://www.reddit.com/r/rust/comments/2wp3pp/ive_added_loads_more_features_to_exa_my_ls/
[rust-netbeans]: https://github.com/drrb/rust-netbeans
[raft]: http://www.hoverbear.org/2015/02/18/raft-update-2/
[ser]: http://erickt.github.io/blog/2015/02/13/rewriting-rust-serialization-there-can-be-only-one-serde/
[twis]: http://blog.servo.org/2015/02/18/twis-24/
[rtracker]: https://github.com/brutal-chaos/rtracker
[dns2]: https://github.com/mahkoh/dns2
[rustdox.com]: https://www.reddit.com/r/rust/comments/2wku7e/introducing_rustdoxcom_alpha_an_easy_way_to_host/
[rust-media]: https://github.com/pcwalton/rust-media
[ipc]: https://github.com/mfs/ipc
[multilist]: https://github.com/pcwalton/multilist
[rustle]: https://github.com/brson/rustle
[xsv]: https://www.reddit.com/r/rust/comments/2wrtjn/a_fast_csv_toolkit_written_in_rust/
[suffix]: https://github.com/BurntSushi/suffix
[Rust Share]: https://github.com/GravityScore/Rust-Share
[chess]: https://github.com/Yayformee/chess

# Upcoming Events

* [Feb 26. Rust NY][ny].

[ny]: http://www.meetup.com/Rust-NYC/

If you are running a Rust event please add it to the [calendar] to get
it mentioned here. Email [Erick Tryzelaar][erickt] or [Brian
Anderson][brson] for access.

[calendar]: https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com
[erickt]: mailto:erick.tryzelaar@gmail.com
[brson]: mailto:banderson@mozilla.com