summaryrefslogtreecommitdiffstats
path: root/content/2015-04-06-this-week-in-rust.md
blob: 51d0ee737cb8d918e461b90884f3722e08554f62 (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
Title: This Week in Rust 76
Date: 2015-04-06
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).

This week's issue covers the previous *two* weeks.

# What's cooking on master?

266 pull requests were [merged in the last *two* weeks][merged], and 10 [RFC PRs][rfcs].

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

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

[BitRust]: http://rawgit.com/mrmonday/bitrust/gh-pages/index.html

# Breaking Changes

* [Update orphan and overlap rules for RFC 1023][orphan].
* [Lex binary and octal literals more eagerly][lex].
* [Remove IteratorExt][it].
* [Move `thread_local` into `thread`][thread].
* [Stabilize `std::convert` and related code][convert].
* [Stabilize the rest of Any/BoxAny][any].
* [Remove FromError, use From<E> instead][error].
* [Don't reborrow the target of a `write!()`][write].
* [Remove variances from traits and deprecate `PhantomFn`/`MarkerTrait`][var].
* [Feature gate rust-call ABI][rustcall].
* [Stabilize basic timeout functionality][timeout].
* [Change the meaning of the count to splitn][splitn].

[splitn]: https://github.com/rust-lang/rust/pull/23951
[timeout]: https://github.com/rust-lang/rust/pull/23949
[rustcall]: https://github.com/rust-lang/rust/pull/23948
[var]: https://github.com/rust-lang/rust/pull/23938
[write]: https://github.com/rust-lang/rust/pull/23934
[error]: https://github.com/rust-lang/rust/pull/23879
[any]: https://github.com/rust-lang/rust/pull/23876
[convert]: https://github.com/rust-lang/rust/pull/23875
[lex]: https://github.com/rust-lang/rust/pull/23872
[orphan]: https://github.com/rust-lang/rust/pull/23867
[thread]: https://github.com/rust-lang/rust/pull/23557
[it]: https://github.com/rust-lang/rust/pull/23300

# Other Changes

* [Add associated types support to #[derive(..)]][assoc].
* [Entry API v3: replace Entry::get with Entry::default and Entry::default_with][entry].
* [Add `std::net::lookup_addr` for reverse DNS lookup][look].
* [Add support for `extern crate foo as bar`][extern].
* [Add net::IpAddr, destabilize lookup_host][ip].
* [Arc::try_unique][try_unique], [Rename Arc::try_unique to get_mut][try_harder_unique].
* [Add (unstable) FnBox trait as a nicer replacement for `Thunk`][fnbox].
* [Re-add min_value, max_value methods][min].
* [Work toward a non-panicking parser][pan].

[pan]: https://github.com/rust-lang/rust/pull/23857
[min]: https://github.com/rust-lang/rust/pull/23947
[fnbox]: https://github.com/rust-lang/rust/pull/23939
[try_unique]: https://github.com/rust-lang/rust/pull/23844
[try_harder_unique]: https://github.com/rust-lang/rust/pull/24053
[ip]: https://github.com/rust-lang/rust/pull/23711
[extern]: https://github.com/rust-lang/rust/pull/23546
[look]: https://github.com/rust-lang/rust/pull/23419
[entry]: https://github.com/rust-lang/rust/pull/22930
[assoc]: https://github.com/rust-lang/rust/pull/21237

# New Contributors

* Adenilson Cavalcanti
* Alex Quach
* Andrew Hobden
* Augusto Hack
* bcoopers
* Camille Roussel
* Carlos Galarza
* Ches Martin
* Dan Callahan
* Dan W.
* Darin Morrison
* Drew Crawford
* Emeliov Dmitrii
* Germano Gabbianelli
* github-monoculture
* Huachao Huang
* Jordan Woehr
* Julian Viereck
* kgv
* Liam Monahan
* Mark Mossberg
* Nicholas Mazzuca
* Or Neeman
* ray glover

# Approved RFCs

* [RFC 879: Lex binary and octal literals more eagerly][rfc-879].
* [RFC 888: Compiler fences][rfc-888].
* [RFC 911: Const functions and inherent methods][rfc-911].
* [RFC 979: Align the count parameter of splitn with other languages][rfc-979].
* [RFC 1011: Add std::process::exit][rfc-1011].
* [RFC 1023: Rebalancing coherence][rfc-1023].

[rfc-879]: https://github.com/rust-lang/rfcs/pull/879
[rfc-888]: https://github.com/rust-lang/rfcs/pull/888
[rfc-911]: https://github.com/rust-lang/rfcs/pull/911
[rfc-979]: https://github.com/rust-lang/rfcs/pull/979
[rfc-1011]: https://github.com/rust-lang/rfcs/pull/1011
[rfc-1023]: https://github.com/rust-lang/rfcs/pull/1023

# New RFCs

* [Generic boolean operators](https://github.com/rust-lang/rfcs/pull/1008).
* [Don't panic when stdout doesn't exist](https://github.com/rust-lang/rfcs/pull/1014).
* [Add read_into_buf and get_buf to BufRead](https://github.com/rust-lang/rfcs/pull/1015).
* [Change abs to return unsigned integers](https://github.com/rust-lang/rfcs/pull/1017).
* [Automatically derive {Clone,PartialEq,PartialOrd} when {Copy,Eq,Ord} are derived](https://github.com/rust-lang/rfcs/pull/1028).
* [1.0 prelude additions](https://github.com/rust-lang/rfcs/pull/1030).
* [RFC: Rename `Iterator::size_hint` to `Iterator::len_hint`](https://github.com/rust-lang/rfcs/pull/1034).
* [Duration](https://github.com/rust-lang/rfcs/pull/1040).
* [Explicit multi-char case changes](https://github.com/rust-lang/rfcs/pull/1042).

# Notable Links

* [Rust 1.0.0 beta is here](http://blog.rust-lang.org/2015/04/03/Rust-1.0-beta.html).
* [Newcomer to Rust: My experience](http://internals.rust-lang.org/t/newcomer-to-rust-my-experience/1816).
* [Use rust-gdb and rust-lldb for improved debugging](http://michaelwoerister.github.io/2015/03/27/rust-xxdb.html).
* [Proposal: spend most of the beta period *not* writing new features](http://internals.rust-lang.org/t/proposal-spend-most-of-the-beta-period-not-writing-new-features/1770).
* [TDD example in Rust with Prime Factors kata](http://carol-nichols.com/2015/03/28/tdd-example-in-rust/).
* [Rust FFI: Embedding Rust in projects for safe, concurrent and fast code anywhere](http://oppenlander.me/articles/rust-ffi).
* [Weekly-meetings/2015-03-31][mtg]: unqualified associated items,
  feature-gating unsigned negation, trivial cast lint, trait variance,
  coherence updates, as and overflow, beta.
* [Rust docs on GitHub pages via Travis](https://github.com/kmcallister/travis-doc-upload/blob/master/README.md).
* [Experimenting with Rust on iOS](http://jakerr.github.io/rust/ios/2015/04/02/experimenting-with-rust-ios.html).
* [The Sunset of C and C++][cpp].
* [Collective noun for Rust programmers](https://www.reddit.com/r/rust/comments/31envv/bikeshed_collective_noun_for_rust_programmers/).
* [Creating a PHP extension in Rust](http://jaredonline.svbtle.com/creating-a-php-extension-in-rust).
* [Why did you stop using Rust][why]? Trick question - it's impossible to stop using Rust.
* [Patina: A Formalization of the Rust Programming Language](ftp://ftp.cs.washington.edu/tr/2015/03/UW-CSE-15-03-02.pdf).
* [Servo shell on Ubuntu 15.04 (video)](https://www.youtube.com/watch?v=9tWPkvh1wVk).
* [Modeling graphs in Rust using vector indices](http://smallcultfollowing.com/babysteps/blog/2015/04/06/modeling-graphs-in-rust-using-vector-indices/).
* [More Rust compared to C++](https://rnestler.github.io/more-rust-compared-to-c.html).
* [rust-lang/rust at 10,000 stars](https://i.imgur.com/gTDPBtF.png).
* [Go vs. Rust vs. D vs. Crystal](https://www.reddit.com/r/programming/comments/31mzu1/go_vs_rust_vs_d_vs_crystal_etc_perlin_noise/).

[why]: https://www.reddit.com/r/rust/comments/31he9f/why_did_or_will_stop_using_rust/
[cpp]: http://blog.biicode.com/c-cpp-biggest-threats-modern-ecosystem/
[mtg]: https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2015-03-31.md

# Project Updates

* A [rendering of Ifrit][ifrit] in kvarkus's [Claymore].
* [Lightmapping and movement][lm] in XMPPWocky's [vel0city].
* [balisong] is raytracing some 3D voxels.
* [Mindjuice], a two-stage configurable brainfuck interpreter library.
* [The Steam store rendered in Servo](https://www.reddit.com/r/rust/comments/30blul/the_steam_store_rendered_in_servo/).
* [llvm-sys]. Independent bindings to LLVM.
* [contain-rs]. A new collections library that replaces collect-rs.
* [RustNN]. Neural networks.
* [rust-unityscopes]. Rust bindings to Unity scopes.
* [Firefox Gecko and Servo rendering some sites](https://www.youtube.com/watch?v=pZGhnqtXVdc).
* [github-rust]. Client for the GitHub API v3
* clog, a changelog generator, [has updated to version 0.3.1](https://crates.io/crates/clog).
* [eventual]. Futures and streams.
* [serde 0.3.0, erickt's new serialization library, was released](https://www.reddit.com/r/rust/comments/310t6d/serde_generic_serialization_framework_v030/).
* [SolidOak, the IDE in Rust, for Rust, now has binaries for Linux and OS X](https://www.reddit.com/r/rust/comments/313zxz/solidoak_binaries_for_linux_and_os_x_now_available/).
* [delivery-cli]. A CLI for Chef.
* [servo-shell]. An HTML-based UI for Servo.
* [This Week in Servo 29](http://blog.servo.org/2015/04/02/twis-29/).
* [Mozilla's Rust-based Servo browser engine inches forward](http://www.infoworld.com/article/2905688/applications/mozillas-rust-based-servo-browser-engine-inches-forward.html).
* [capstone-rs]. Rust bindings to the [Capstone disassembly framework](http://capstone-engine.org/).
* [rust-smallvec]. Servo's small vector types.

[rust-smallvec]: https://github.com/servo/rust-smallvec
[capstone-rs]: https://github.com/richo/capstone-rs
[servo-shell]: https://twitter.com/adamhjk/status/578627590996496384
[delivery-cli]: https://github.com/chef/delivery-cli
[eventual]: https://github.com/carllerche/eventual
[github-rust]: https://github.com/GlenDC/github-rust
[rust-unityscopes]: https://launchpad.net/rust-unityscopes
[RustNN]: https://github.com/jackm321/RustNN
[contain-rs]: https://www.reddit.com/r/rust/comments/30vn1d/rip_collectrs_longlive_containrs/
[llvm-sys]: https://www.reddit.com/r/rust/comments/30gbs0/llvm_sys_librustcfree_bindings_to_llvm/
[Mindjuice]: https://github.com/daboross/mindjuice-rs
[balisong]: https://github.com/ivanceras/balisong
[lm]: https://www.reddit.com/r/rust_gamedev/comments/30aqb3/vel0city_lightmapping_movement/
[vel0city]: https://www.reddit.com/r/rust_gamedev/comments/30aqb3/vel0city_lightmapping_movement/
[ifrit]: https://raw.githubusercontent.com/kvark/claymore/master/etc/screens/3-model-scene.jpg
[Claymore]: https://github.com/kvark/claymore

# Upcoming Events

* [4/9 Bay Area Rust - Data Science](http://www.meetup.com/Rust-Bay-Area/events/220627544/).
* [4/13 Seattle Rust](https://www.eventbrite.com/e/mozilla-rust-seattle-meetup-tickets-12222326307?aff=erelexporg).
* [4/14 Rust Sydney](http://www.meetup.com/Rust-Sydney/events/221388677/).

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

# Quote of the Week

"Diagnostics are the UX of a compiler, and so they're deserving of the
exact same care that is put into mobile app or Web design."

[Declared by pcwalton on Hacker
News](https://news.ycombinator.com/item?id=9330518).

Thanks to sanxiyn for the tip. [Submit your quotes for next week!][submit].

[submit]: http://users.rust-lang.org/t/twir-quote-of-the-week/328