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
|
Title: This Week in Rust 68
Date: 2015-02-02
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?
86 pull requests were [merged in the last week][merged], and 1 [RFCs][rfcs].
[merged]: https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Amerged+merged%3A2015-01-26..2015-02-01
[rfcs]: https://github.com/rust-lang/rfcs/pulls?q=is%3Apr+is%3Amerged+merged%3A2015-01-26..2015-02-01
Now you can follow breaking changes *[as they happen][BitRust]*!
[BitRust]: http://bitrust.octarineparrot.com/
## Breaking Changes
* `for` loops [now operate on the `IntoIterator` trait][into], which
eliminates the need to call `.iter()`, etc. to iterate over
collections. There are some new subtleties to remember though
regarding what sort of iterators various types yield, in particular
that `for foo in bar { }` yields values from a move iterator,
destroying the original collection. [RFC][into-rfc].
* `std::io` was [renamed][oldio] to `std::old_io` in preparation
for implementing the [I/O overhaul RFC][oldio-rfc].
* The return type of `Fn`, `FnMut`, and `FnOnce` [are associated
types][fnassoc]. The unsugared forms of these traits are unstable
so this shouldn't break stable code. [RFC][fnassoc-rfc].
* `FullRange`, the type that represents a slice over a complete
collection, has been [renamed to `RangeFull`][fullrange], and
removed from the prelude.
[into]: https://github.com/rust-lang/rust/pull/20790
[into-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0235-collections-conventions.md#intoiterator-and-iterable
[fnassoc]: https://github.com/rust-lang/rust/pull/21019
[fnassoc-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0587-fn-return-should-be-an-associated-type.md
[oldio]: https://github.com/rust-lang/rust/pull/21543
[oldio-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0517-io-os-reform.md
[fullrange]: https://github.com/rust-lang/rust/pull/21717
## Other Changes
* The standard library now [partipates in feature gating][feat], so
use of unstable libraries now requires a `#![feature(...)]`
attribute. The impact of this change is [described on the
forum][feat-forum]. [RFC][feat-rfc].
* References to types that implement `Deref<U>` now [automatically
coerce to references][deref] to the dereferenced type `U`, e.g. `&T
where T: Deref<U>` automatically coerces to `&U`. This should
eliminate many unsightly uses of `&*`, as when converting from
references to vectors into references to slices. [RFC][deref-rfc].
* The `private_no_mangle_fns` lint [warns about functions that are
`#[no_mangle]` but not exported][nomang].
[feat]: https://github.com/rust-lang/rust/pull/21248
[feat-forum]: http://users.rust-lang.org/t/psa-important-info-about-rustcs-new-feature-staging/82/5
[feat-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0507-release-channels.md
[deref]: https://github.com/rust-lang/rust/pull/21351
[deref-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0241-deref-conversions.md
[nomang]: https://github.com/rust-lang/rust/pull/21495
## New Contributors
* Carl Lerche
* Dominik Inführ
* emanueLczirai
* jatinn
* John Hodge
* Loïc Damien
* Luke Steensen
* Nelson Chen
* Orpheus Lummis
* Pyfisch
* Sébastien Marie
* Tyler Thrailkill
* Victory
* Vojtech Kral
# Approved RFC's
* [RFC 517][rfc-517] on I/O has been [updated with material on
`std::env`][env].
[rfc-517]: https://github.com/rust-lang/rfcs/blob/master/text/0517-io-os-reform.md
[env]: https://github.com/rust-lang/rfcs/pull/578
# New RFC's
* [Allow closure expressions to expand to a `&` or `&mut`
temporary][rfc-756-pr]. Make it so you don't have to write `&` or
`&mut` in front of closure literals in some circumstances.
* [Extensible enums][rfc-757-pr]. Adds a type of enum that can be
extended to new variants without breaking downstream users by
disabling exhaustiveness checks.
* [Sound generic drop][rfc-769-pr]. Makes `Drop` safely implementable
on more types, eliminating `#[unsafe_destructor]`.
* [io error handling design][rfc-770-pr]. Deals with the semantics of
closing I/O types.
* [std::iter::once][rfc-771-pr]. Adds a fn `once` that returns an
iterator yielding a single element.
* [Add linear type facility][rfc-776-pr]. Adds a type that requires
explicit drop.
[rfc-756-pr]: https://github.com/rust-lang/rfcs/pull/756
[rfc-757-pr]: https://github.com/rust-lang/rfcs/pull/757
[rfc-769-pr]: https://github.com/rust-lang/rfcs/pull/769
[rfc-770-pr]: https://github.com/rust-lang/rfcs/pull/770
[rfc-771-pr]: https://github.com/rust-lang/rfcs/pull/771
[rfc-776-pr]: https://github.com/rust-lang/rfcs/pull/776
# Community
## Announcements
* [Welcome to the new Rust forum][users]. There's a new user forum.
* [Weekly-meetings/2015-01-27][mtg]: Slow meeting.
[mtg]: https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2015-01-27.md
[users]: http://users.rust-lang.org/t/welcome-to-the-new-rust-forum/21
## Blog Posts
* [Heartbleed in Rust][heartbleed]. It is possible to write
Heartbleed-style bugs in Rust, though there is nothing to be alarmed
about - Rust still rules.
[HN][heartbleed-hn]. [/r/rust][heartbleed-r-rust]. [/r/programming][heartbleed-r-programming].
* [Some notes on Rust, the language][rtl]. First thread about Rust at
LtU in a while.
[HN][rtl-hn]. [/r/rust][rtl-r-rust]. [/r/programming][rtl-r-programming].
* [An Adventure in API Design and Concurrency in Rust][adv].
* [On Rust and Nim][nim]. Similar but
different. [/r/rust][nim-r-rust]. [/r/programming][nim-r-programming].
* [updated crates.io dependency graph][deps]. The registry is growing
fast. Thanks /u/corevette.
[heartbleed]: http://www.tedunangst.com/flak/post/heartbleed-in-rust
[heartbleed-hn]: https://news.ycombinator.com/item?id=8983771
[heartbleed-r-rust]: https://www.reddit.com/r/rust/comments/2uii0u/heartbleed_in_rust/
[heartbleed-r-programming]: https://www.reddit.com/r/programming/comments/2uinge/heartbleed_in_rust/
[rtl]: http://lambda-the-ultimate.org/node/5113
[rtl-hn]: http://news.ycombinator.com/item?id=8979620
[rtl-r-programming]: https://www.reddit.com/r/programming/comments/2uedrz/some_notes_on_rust_the_language/
[rtl-r-rust]: https://www.reddit.com/r/rust/comments/2uef23/some_notes_on_rust_the_language/
[nim]: https://andreaferretti.github.io/on-rust-and-nim/
[nim-r-rust]: https://www.reddit.com/r/rust/comments/2u6hvs/on_rust_and_nim/
[nim-r-programming]: https://www.reddit.com/r/programming/comments/2u8tih/on_rust_and_nim/
[deps]: http://froosky.rwell.org/crates-2015-01-31.svg
[adv]: http://damienradtke.com/adventures-in-concurrency-1/
## Discussions
* [Pre-RFC: resolve support for hyphens in crate names][hyph]. People
love the aesthetics of hyphens-between-words, but hyphens are not
valid identifiers.
* [Crates.io and namespacing][namespace].
* [Testing Rust's I/O Speed vs. C][iospeed]. Not such a good showing.
* There was bigtime [drama] after strcat stopped [maintaining his Arch
packages][arch].
[hyph]: http://internals.rust-lang.org/t/pre-rfc-resolve-support-for-hyphens-in-crate-names/1459
[namespace]: https://www.reddit.com/r/rust/comments/2ud8uf/cratesio_and_namespacing/
[drama]: https://www.reddit.com/r/rust/comments/2u7p8e/i_have_archived_the_thread_from_yesterday_please/
[arch]: https://www.reddit.com/r/rust/comments/2tx7vj/psa_thestingers_rust_packages_for_arch_linux_are/
[iospeed]: https://www.reddit.com/r/rust/comments/2u057m/testing_rusts_io_speed_vs_c/
## Videos
* [SHA1 Performance Quest][sha1]. Implementing SHA1 in Rust.
* [Trace Quest 5][tq5]. A raytracer in Rust.
[sha1]: https://www.youtube.com/playlist?list=PLMHbQxe1e9MnDKy7FKXZwMJ6t_RCxpHqD
[tq5]: http://youtu.be/uhYRveqF27U?list=PLMHbQxe1e9MlR80JVZCa0uJf9cz_PxlCY
## New Projects
* [soa]. Struct-of-array types, a sometimes more efficient version of
`Vec<(A, B)>` from cgaebel. [/r/rust][soa-r-rust].
* [valico]. JSON schema validator, from the [rustless] RESTful
micro-framework project.
* [FFI-Platypus-Lang-Rust][perl]. Call Rust from Perl.
* [glassful]. kmc strikes again with a syntax extension that translates
from Rust syntax to OpenGL Shader Language. [/r/rust][glassful-r-rust].
* [secretshare]. Shamir's secret sharing.
* [chip8-rust]. A emulator for the Chip-8 VM used to implement some
old video games. Uses Piston for graphics.
* [snowflake]. Library for generating process-unique IDs.
* [rust-dev-box]. A Vagrantfile for working on Rust.
* [rust-roller]. A simple console dice-rolling app using the sweet
[rustbox] termbox clone.
[soa]: https://github.com/cgaebel/soa
[soa-r-rust]: https://www.reddit.com/r/rust/comments/2uiu0e/soa_structofarray_types_in_rust/
[valico]: https://github.com/rustless/valico
[rustless]: https://github.com/rustless
[perl]: https://github.com/plicease/FFI-Platypus-Lang-Rust
[glassful]: https://github.com/kmcallister/glassful
[glassful-r-rust]: https://www.reddit.com/r/rust/comments/2ufeqf/rustlike_syntax_for_opengl_shading_language/
[secretshare]: https://github.com/sellibitze/secretshare
[chip8-rust]: https://github.com/jakerr/chip8-rust
[snowflake]: https://crates.io/crates/snowflake
[rust-dev-box]: https://github.com/estsauver/rust-dev-box
[rust-roller]: https://github.com/freiguy1/rust-roller
[rustbox]: https://github.com/gchp/rustbox
## Project Updates
* [Glium project update][glium]. Glium is a safe wrapper for OpenGL
that is making a lot of progress.
* [This Week in Servo 21][twis].
[glium]: https://www.reddit.com/r/rust/comments/2ty8ag/glium_project_update/
[twis]: http://blog.servo.org/2015/01/21/twis-21/
## Upcoming Events
* [Feb 3. N Languages in N Months NY][n]. John Barker is giving an
intro to Rust.
* [Feb 9. Sydney Meetup][syd]. Huon Wilson and Steve Klabnik will be
in attendance.
* [Feb 9. Seattle Meetup][seattle].
[n]: http://www.meetup.com/N-Languages-in-N-Months-NYC/events/218757056/
[syd]: http://www.meetup.com/Rust-Sydney/events/220100853/
[seattle]: https://www.eventbrite.com/e/mozilla-rust-seattle-meetup-tickets-12222326307?aff=erelexporg
|