summaryrefslogtreecommitdiffstats
path: root/content/2015-02-16-this-week-in-rust.md
blob: 8961f8e5284103d9d247786c5f77f1a5c6577cd6 (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
Title: This Week in Rust 70
Date: 2015-02-16
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).

# What's cooking on master?

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

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

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

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

## Breaking Changes

* In types that implement `Drop`, [lifetimes must outlive the
  value][drop]. This will soon make it possible to safely implement
  `Drop` for types where `#[unsafe_destructor]` is now required. Read
  the [gorgeous RFC][drop-rfc] for details.
* The reserved keyword `be`, for invoking guaranteed tail calls, [has
  been replaced with `become`][be], but `be` will remain in our
  hearts. [RFC][be-rfc].
* [`Self` is a keyword][Self].
* `#[unsafe_no_drop_flag]` is now under the
  [`unsafe_no_drop_flag`][flag] feature gate.
* [Some float constants were renamed][float].
* [`std::failure` moved to `std::panicking`][fail]. This is an
  unstable module dealing with unwinding, not likely to cause
  breakage.

[be]: https://github.com/rust-lang/rust/pull/21918
[be-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0601-replace-be-with-become.md
[drop]: https://github.com/rust-lang/rust/pull/21972
[drop-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0769-sound-generic-drop.md
[Self]: https://github.com/rust-lang/rust/pull/22158
[flag]: https://github.com/rust-lang/rust/pull/22178
[float]: https://github.com/rust-lang/rust/pull/22254
[fail]: https://github.com/rust-lang/rust/pull/22347

## Other Changes

* Objects now have [default lifetime bounds][obj], so you don't have
  to write `Box<Trait+'static>` when you don't care about storing
  references. [RFC][obj-rfc].
* The new [`std::fs`][fs] and [`std::process`][proc] modules have arrived! They are much the
  same as the old but follow new conventions as described in [RFC 579] and [RFC 739].
* On Unix Rust will soon be [uninstallable][un] by running
  `/usr/local/lib/rustlib/uninstall.sh`.
* Richo Healey added lints for putting `#[no_mangle]` on [`const`s, as well as on private `static`s][no_mangle]. `#[no_mangle]` only makes sense for things with public symbol names.
* eddyb endured an [epic struggle][epic] with @bors to make borrows of constants `&'static`.

[obj]: https://github.com/rust-lang/rust/pull/22230
[obj-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0599-default-object-bound.md
[epic]: https://github.com/rust-lang/rust/pull/21744
[no_mangle]: https://github.com/rust-lang/rust/pull/21881
[fs]: https://github.com/rust-lang/rust/pull/21936
[proc]: https://github.com/rust-lang/rust/pull/22119
[`Path`]: http://doc.rust-lang.org/nightly/std/path/
[RFC 579]: https://github.com/rust-lang/rfcs/pull/579
[RFC 739]: https://github.com/rust-lang/rfcs/pull/739
[un]: https://github.com/rust-lang/rust/pull/22256

## New Contributors

* Duane Edwards
* Geoffrey Thomas
* Hugo van der Wijst
* Jorge Israel Peña
* Mátyás Mustoha
* Michael Budde
* Pierre Baillet
* Renato Alves
* Thiago Carvalho
* Tim Cuthbertson

## Approved RFCs

We'll catch up on RFCs next week.

# 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 ... Jonathan Reem (reem)

[Jonathan Reem] has been making an impact on Rust since May 2014. His primary contribution has been as the main author of the prominent Iron web framework, though he has also created several other popular projects including the testing framework stainless. His practical experience with these projects has led to several improvements in upstream Rust, most notably his complete rewrite of the TaskPool type. Reem is doing everything he can to advance the Rust cause.

[Jonathan Reem]: https://github.com/reem/

# Quote of the Week

*"You may be wondering whether this algorithm is correct. The answer is 'sort of'."* [@horse_rust] (after [Niko]).

[Niko]: https://github.com/rust-lang/rust/blob/ad2efdc67d871b18cc984eeb0b8d1d9b38daffb7/src/librustc/middle/infer/higher_ranked/README.md#shortcomings-and-correctness
[@horse_rust]: https://twitter.com/horse_rust/status/566801735750930432

# Notable Links

* [1.0 final timeline][fin]. Promises are made.
  [HN][fin-hn]. [/r/rust][fin-r-rust]. [/r/programming][fin-r-programming].
* The "Author of Unix in Rust abandons Rust in favor of Nim" headline
  spread to [/r/rust][nim-r-rust],
  [/r/programming][nim-r-programming], and
  [HackerNews][nim-hn]. Everybody stay calm!
* [What are Rust's exact auto-dereferencing rules?][deref] Valuable
  intel with which all rusticians should be equipped.
* [The incredible rewards of creating a programming
  language][reward]. Creating a programming language is fun. Join us
  and have fun.
* [Samsung OSG is hiring for Rust/Servo related work][osg].
* [Codius + Rust = ❤][codius]. Codius is creating some far-out smart
  contract things and Rust is part of the secure foundation.
* Hematite, our resident Minecraft clone from the Piston project,
  [made the HackerNews rounds][hema].
* [Duck typing in Piston][duck]. Piston is possessed of some radical
  notions.
* The ACM SIGMOD programming competition [welcomes Rust
  entries][sigmod].
* [License stats for crates.io][lic]. A surprisingly strong showing
  for the WTFPL.
* [Rust needs net/http][needs]. And net/http needs Rust.
* [First look at Cap'n Proto][capn]. Cap'n Proto for Rust is mega
  fast.
* [Getting Rusty][getting]. Watch people code in Rust.

[fin]: http://blog.rust-lang.org/2015/02/13/Final-1.0-timeline.html
[fin-r-rust]: https://www.reddit.com/r/rust/comments/2vsmy3/10_final_timeline/
[fin-hn]: http://news.ycombinator.com/item?id=9046526
[fin-r-programming]: https://www.reddit.com/r/programming/comments/2vsmzi/rust_10_final_timeline/
[nim-r-rust]: https://www.reddit.com/r/rust/comments/2vqy81/author_of_unix_in_rust_abandons_rust_in_favor_of/
[nim-r-programming]: https://www.reddit.com/r/programming/comments/2vvcbm/author_of_unix_in_rust_abandons_rust_in_favour_of/
[nim-hn]: http://news.ycombinator.com/item?id=9049698
[deref]: http://stackoverflow.com/questions/28519997/what-are-rusts-exact-auto-dereferencing-rules
[reward]: http://mikedrivendevelopment.blogspot.com/2015/02/the-incredible-rewards-of-creating.html
[osg]: http://mikedrivendevelopment.blogspot.com/2015/02/the-incredible-rewards-of-creating.html
[codius]: https://codius.org/blog/codius-rust/
[hema]: https://news.ycombinator.com/item?id=9023168
[duck]: http://blog.piston.rs/2015/02/10/duck-typing-in-piston/
[sigmod]: https://www.reddit.com/r/rust/comments/2w2yfo/acm_sigmod_2015_programming_contest_with_rust/
[lic]: https://www.reddit.com/r/rust/comments/2vxv8m/license_stats_for_crates_on_cratesio/
[needs]: https://www.reddit.com/r/rust/comments/2vnxng/rust_needs_nethttp/
[capn]: http://www.hoverbear.org/2015/02/12/capn-proto-in-rust/
[getting]: https://www.youtube.com/watch?v=mQZiDsGutJ8

# Project Updates

* [rust-cbor]. An implementation of [Concise Binary Object
  Representation][cbor].
* [xsv]. A CSV swiss-army knife.
* [rimd]. Library for working with MIDI.
* [rust-jack]. Bindings to the Jack low-latency Linux audio API.
* stomp-rs, an implementation of the [STOMP messaging
  protocol][stomp], has [matured a lot in 6 months][stomp-rs].
* [timely-dataflow]. An implementation of the low-latency dataflow
  model from [Naiad].
* [Trace Quest 5][tq5], the youtube series about building a raytracer
  in Rust, [wrapped up][tq5-final] its final episode.
* [rust-ptrace]: Wrapper for the `ptrace` syscall, from Codius.
* [bytes]. A crate for working with bytes!
* [RustAudio]. A collection of crates for audio processing, from the
  mind of mitchmindtree.
* [Helion]. An [Ambilight] clone for making your TV produce ambient
  lighting in concert with the video. Watch the [test
  video][helion-test].
* [rhex]. A hexagonal roguelike with a live instance you can telnet
  into.
* [comm]: An alternate implementation of channels.
* [This Week in Servo 23][twis]. With screenshots of Servo running on
  FxOS.
* [syntex]: Syntax extensions that work with stable Rust, from Erick
  Tryzelaar.

[rust-cbor]: https://github.com/BurntSushi/rust-cbor
[cbor]: https://tools.ietf.org/html/rfc7049
[xsv]: https://github.com/BurntSushi/xsv
[rimd]: https://github.com/nicklan/rimd
[rust-jack]: https://github.com/nicklan/rust-jack
[stomp]: https://stomp.github.io/
[stomp-rs]: https://github.com/zslayton/stomp-rs
[Naiad]: http://research.microsoft.com/en-us/projects/naiad/
[timely-dataflow]: https://github.com/frankmcsherry/timely-dataflow
[tq5]: https://www.youtube.com/playlist?list=PLMHbQxe1e9MlR80JVZCa0uJf9cz_PxlCY
[tq5-final]: https://www.reddit.com/r/rust/comments/2vva9y/trace_quest_5_season_1_results/
[rust-ptrace]: https://codius.org/blog/rust-ptrace-0-1-released/
[bytes]: https://github.com/carllerche/bytes
[RustAudio]: https://www.reddit.com/r/rust/comments/2vn0xx/rustaudio_a_collection_of_crates_for_audio_and/
[Helion]: https://github.com/bryal/Helion
[Ambilight]: https://en.wikipedia.org/wiki/Ambilight
[helion-test]: https://www.youtube.com/watch?v=3ZARz9ELfA4&feature=youtu.be
[rhex]: https://www.reddit.com/r/rust/comments/2vms2s/rhex_hexagonal_roguelike_in_rust/
[comm]: https://github.com/mahkoh/comm
[twis]: http://blog.servo.org/2015/02/10/twis-23/
[syntex]: http://erickt.github.io/blog/2015/02/09/syntex-syntex-extensions-for-rust-1-dot-0/

# Upcoming Events

* [February 16, Rust Paris][paris].
* [February 19, Rust Bay Area][sf]. Subject is I/O.
* [February 26, Rust NY][ny]. With Steve, Niko and Jack.

[paris]: http://www.meetup.com/Rust-Paris
[sf]: http://www.meetup.com/Rust-Bay-Area/events/219697152/
[ny]: http://www.meetup.com/Rust-NYC/