Title: This Week in Rust 77
Date: 2015-04-13
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?

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

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

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

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

# Breaking Changes

* [Set `CLOEXEC` for all fds on Unix by default](https://github.com/rust-lang/rust/pull/24034)
* [Convert lifetime shadowing into a hard error](https://github.com/rust-lang/rust/pull/24057)
* [Use discriminant_value intrinsic for `derive(PartialOrd)`](https://github.com/rust-lang/rust/pull/24270)

# Other Changes

* [Phil Dawes refactored a bunch of the parser to return `Result` insteadof panicking](https://github.com/rust-lang/rust/pull/23857)
* [Implemented remaining string pattern API](https://github.com/rust-lang/rust/pull/23952)
* [Implement reentrant mutexes and make stdio use them](https://github.com/rust-lang/rust/pull/24029)
* [Prefer ObjectCandidate to ImplCandidate if both apply](https://github.com/rust-lang/rust/pull/24056)
* [Michael Sproul added some more extended errors and improved their display](https://github.com/rust-lang/rust/pull/24143)
* [Implement io::Seek on BufReader and BufWriter](https://github.com/rust-lang/rust/pull/24176)
* [Allow plugins to register LLVM passes](https://github.com/rust-lang/rust/pull/24207)
* [Stabilize clone_from](https://github.com/rust-lang/rust/pull/24215)
* [Stabilize Error::from_raw_os_error](https://github.com/rust-lang/rust/pull/24216)

# New Contributors

* Ben Ashford
* Christopher Chambers
* Dominick Allen
* Hajime Morrita
* Igor Strebezhev
* Josh Triplett
* Luke Gallagher
* Michael Alexander
* Michael Macias
* Oak
* Remi Rampin
* Sean Bowe
* Tibor Benke
* Will Hipschman
* Xue Fuqiao

# Approved RFCs

* [RFC 218: Empty struct with braces](https://github.com/rust-lang/rfcs/pull/218)
* [RFC 639: discriminant_value intrinsic](https://github.com/rust-lang/rfcs/pull/639)
* [RFC 888: Compiler fences](https://github.com/rust-lang/rfcs/blob/master/text/0888-compiler-fence-intrinsics.md)
* [RFC 911: Const functions and inherent methods](https://github.com/rust-lang/rfcs/blob/master/text/0911-const-fn.md)

# New RFCs

* [Expand the scope of `std::fs`](https://github.com/rust-lang/rfcs/pull/1044)
* [Rename `soft_link` to `symlink`](https://github.com/rust-lang/rfcs/pull/1048)
* [Clarify cast rules, especially regarding fat pointers](https://github.com/rust-lang/rfcs/pull/1052)
* [Rename or replace `str::words`](https://github.com/rust-lang/rfcs/pull/1054)
* [Redirecting stdio of child processes to open file handles](https://github.com/rust-lang/rfcs/pull/1055)
* [Add `Sync` to `io::Error`](https://github.com/rust-lang/rfcs/pull/1057)
* [Replace `tail`/`init`](https://github.com/rust-lang/rfcs/pull/1058)

# Notable Links

* [Fearless concurrency with Rust](http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html)
* [Featherweight musings: arrays and vectors in Rust](http://featherweightmusings.blogspot.com/2015/04/new-tutorial-arrays-and-vectors-in-rust.html).
* [Newcomer to Rust: my experience](http://internals.rust-lang.org/t/newcomer-to-rust-my-experience/1816/1)
* [Memcpy is
  backwards](http://internals.rust-lang.org/t/memcpy-is-backwards/1797). There
  was a big silently-breaking change to `copy_memory` right before the
  beta.
* [Bay Area Rust Meetup: Data Science](https://air.mozilla.org/bay-area-rust-meetup-april-2015/). Video from the SF meetup.
* [Weekly-meetings/2015-04-07][mtg]: beta, abs, rustdoc, wiki, docs
* [Steve Klabnik and Yehuda Katz talk about Rust on The Changelog #151](https://thechangelog.com/151/)
* [Aaron Turon's Stanford talk (video)](https://www.youtube.com/watch?v=O5vzLKg7y-k).
* [A page of useful links for new contributors](http://www.ncameron.org/rust.html).

[mtg]: https://github.com/rust-lang/meeting-minutes/blob/master/weekly-meetings/2015-04-07.md

# Project Updates

* [Racer progress update 5 (cargo support)](http://phildawes.net/blog/2015/04/05/racer5/).
* [multirust](http://users.rust-lang.org/t/multirust-0-0-3/954). The Rust toolchain manager, updated with new features and bugfixes.
* [reforge](https://github.com/tedsta/reforge). A multiplayer sandbox space combat MMO.
* [The Hat Backup System](https://github.com/google/hat-backup).
* [Piston 0.1 is released](http://blog.piston.rs/2015/04/07/piston-0.1/).
* [gag](https://crates.io/crates/gag). Redirect stderr/stdout.
* [afl.rs](https://github.com/kmcallister/afl.rs). Integrating American Fuzzy-Lop with Rust.
* [hyper on beta](http://seanmonstar.com/post/115873169212/hyper-on-beta).
* [Raft: Small status update](http://hoverbear.org/2015/04/09/raft-the-next-generation-3/).
* [This Week in Servo 30](http://blog.servo.org/2015/04/09/twis-30/).
* [A Chef comunity cookbook for Rust](https://supermarket.chef.io/cookbooks/rustlang).
* [A Docker image for Rust](https://registry.hub.docker.com/u/jimmycuadra/rust/).
* [Rust_Classifier](https://github.com/jackm321/Rust_Classifier). A naive Bayes classifier.
* [Pool](https://github.com/carllerche/pool). A pool for reusable values, from carllerche.
* [ggp-rs](https://www.reddit.com/r/rust/comments/3272b8/ggprs_a_library_for_creating_general_game_players/). A library for [General Game Playing](https://class.coursera.org/ggp-003).
* [timer](https://www.reddit.com/r/rust/comments/326x5p/a_betacompatible_timer/). A timer to make up for the lack of one in std.
* [retry](https://github.com/jimmycuadra/retry). Retry an operation until a condition is satisfied.
* [query_rs](https://github.com/Mr-Byte/query_rs). LINQ-like macros.
* [analit](https://github.com/jswrenn/analit). 'Analog' literals for geometric types.
* [Google APIs for Rust - Dev Diary #1: How to write 78 APIs in 5s (video)](https://youtu.be/2U3SpepKaBE).
* [All crates of the RustAudio project work with beta](https://www.reddit.com/r/rust/comments/32b74a/all_rustaudio_crates_now_build_on_the_stable/).
* [eventual_io](https://github.com/carllerche/eventual_io). Async I/O with mio and eventual.
* [serde, the serialization library, is beta-compatible](https://erickt.github.io/blog/2015/04/12/serde-0-dot-3-1-now-compatible-with-beta/).
* [nickel, the web framework, is on crates.io](https://www.reddit.com/r/rust/comments/32dhwb/nickel_is_on_cratesio/).
* [coroutine-rs](https://github.com/rustcc/coroutine-rs). Coroutines.
* [rust-sdl2 is beta-compatible](https://github.com/AngryLawyer/rust-sdl2/commit/00f7df56570b2e7e57df63813692bb7ef53d10a0).

# Upcoming Events

* [4/13 Seattle](https://www.eventbrite.com/e/mozilla-rust-seattle-meetup-tickets-12222326307?aff=erelexporg)
* [4/14 Sydney](http://www.meetup.com/Rust-Sydney/events/221388677/)
* [4/20 Paris](http://www.meetup.com/Rust-Paris)
* [4/22 Columbus Rust Society](http://www.meetup.com/columbus-rs/). Their inaugural event.

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

```
<frankmcsherry> rust is like a big bucket of solder and wire, with the promise that you can't electrocute yourself.
```

From #rust.

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

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