Title: This Week in Rust 118 Number: 118 Date: 2016-02-15 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? Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) or [send us 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/blob/master/CONTRIBUTING.md). *This Week in Rust* is openly developed [on GitHub](https://github.com/cmr/this-week-in-rust). If you find any errors in this week's issue, [please submit a PR](https://github.com/cmr/this-week-in-rust/pulls). This week's edition was edited by: [Vikrant](https://github.com/nasa42) and [llogiq](https://github.com/llogiq). # Updates from Rust Community ## News & Blog Posts * [Binding threads and processes to CPUs in Rust](http://nitschinger.at/Binding-Threads-And-Processes-to-CPUs-in-Rust/). * [The many kinds of code reuse in Rust](http://cglab.ca/~abeinges/blah/rust-reuse-and-recycle/). * [Code of heat conductivity](https://llogiq.github.io/2016/02/10/code.html). Llogiq on Rust's Code of Conduct. * [Rustic Bits](https://llogiq.github.io/2016/02/11/rustic.html). And on the small things that make code *rustic*. * [Why Rust's ownership/borrowing is hard](http://softwaremaniacs.org/blog/2016/02/12/ownership-borrowing-hard/en/). * [video] [Rust: Unlocking Systems Programming by Aaron Turon](http://www.infoq.com/presentations/rust-thread-safety). * [This week in Servo 50](http://blog.servo.org/2016/02/08/twis-50/). * [This week in Amethyst 4](https://thisweekinamethyst.wordpress.com/2016/02/08/twia-4/). Amethyst is a data-oriented game engine written in Rust. ## Notable New Crates & Project Updates * [A MOS6502 assembler implemented as a Rust macro](https://play.rust-lang.org/?gist=a18d697454f9261b28ff&version=stable). * [Ketos](https://github.com/murarth/ketos). Lisp dialect scripting and extension language for Rust programs. * [Parity](https://ethcore.io/parity.html). Next Generation Ethereum Client, written in Rust. * [TensorFlow Rust](https://github.com/google/tensorflow-rust). Rust language bindings for TensorFlow from Google. * [rpc-perf](https://github.com/twitter/rpc-perf). A tool for benchmarking RPC services from Twitter. * [rust-lzma](https://github.com/fpgaminer/rust-lzma). A Rust crate that provides a simple interface for LZMA compression and decompression. # Updates from Rust Core 125 pull requests were [merged in the last week][merged]. [merged]: https://github.com/issues?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2016-02-08..2016-02-15 See the [triage digest][triage] and [subteam reports][subteam] for more details. [triage]: https://internals.rust-lang.org/t/triage-digest-mon-feb-08-2016/3152 [subteam]: https://internals.rust-lang.org/t/subteam-reports-2016-02-12/3175 ## Notable changes * [[breaking batch] don't glob export `ast::UnOp` variants](https://github.com/rust-lang/rust/pull/31487). * [[breaking batch] Rename and refactor ast::Pat_ variants](https://github.com/rust-lang/rust/pull/31581). * [[breaking batch] Remove some unnecessary indirection from AST structures](https://github.com/rust-lang/rust/pull/31583). * [Allow registering MIR-passes through compiler plugins](https://github.com/rust-lang/rust/pull/31425). * [Add a new i586 Linux target](https://github.com/rust-lang/rust/pull/31629). * [std: Deprecate all `std::os::*::raw` types](https://github.com/rust-lang/rust/pull/31551). * [Workaround LLVM optimizer bug by not marking &mut pointers as noalias](https://github.com/rust-lang/rust/pull/31545). * [Don't let `remove_dir_all` recursively remove a symlink](https://github.com/rust-lang/rust/pull/31468). * [Split dummy-idx node to fix expand_givens DFS](https://github.com/rust-lang/rust/pull/31442). * [Do not expect blocks to have type str](https://github.com/rust-lang/rust/pull/31651). * [Add _post methods for blocks and crates](https://github.com/rust-lang/rust/pull/31562). * [fix: read_link cannot open some files reported as symbolic links on windows](https://github.com/rust-lang/rust/pull/31630). ## New Contributors * Adam Perry * Carlos E. Garcia * Daniel Robertson * Felix Gruber * Johan Lorenzo * Kenneth Koski * Masood Malekghassemi * Richard Bradfield * Scott Whittaker * Thomas Winwood ## Approved RFCs Changes to Rust follow the Rust [RFC (request for comments) process](https://github.com/rust-lang/rfcs#rust-rfcs). These are the RFCs that were approved for implementation this week: * [RFC 1317: Rust Language Server (IDE support)](https://github.com/rust-lang/rfcs/pull/1317). * [RFC 1415: Deprecate type aliases in `std::os::*::raw`](https://github.com/rust-lang/rfcs/pull/1415). ## Final Comment Period Every week [the team](https://rust-lang.org/team.html) announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now. [This week's FCPs][fcp] are: [fcp]: https://github.com/rust-lang/rfcs/labels/final-comment-period * [Stabilize volatile read and write](https://github.com/rust-lang/rfcs/pull/1467). * [Move some net2 functionality into libstd](https://github.com/rust-lang/rfcs/pull/1461). * [Extend atomic compare_and_swap](https://github.com/rust-lang/rfcs/pull/1443). * [Safe `memcpy` from one slice to another of the same type and length](https://github.com/rust-lang/rfcs/pull/1419). * [Add `maybe!` macro equivalent to `try!`](https://github.com/rust-lang/rfcs/pull/1394). * [Add additional `try!(expr => return)` that will return without value](https://github.com/rust-lang/rfcs/pull/1393). * [Add a `let...else` expression, similar to Swift's `guard let...else`](https://github.com/rust-lang/rfcs/pull/1303). * [Add macros to get the values of configuration flags](https://github.com/rust-lang/rfcs/pull/1258). * [Implement `Into`, `From` and new trait `IntegerCast` for primitive integer types](https://github.com/rust-lang/rfcs/pull/1218). * [Add `retain_mut` to `Vec` and `VecDeque`](https://github.com/rust-lang/rfcs/pull/1353). * [Propose a design for _specialization_, which permits multiple `impl` blocks to apply to the same type/trait](https://github.com/rust-lang/rfcs/pull/1210). ## New RFCs * [Add octet-oriented interface to `std::net::Ipv6Addr`](https://github.com/rust-lang/rfcs/pull/1498). * [Extend the pattern syntax for alternatives in `match` statement](https://github.com/rust-lang/rfcs/pull/1500). * [Add `#[clear_on_drop]` and `#[clear_stack_on_return]` to securely clear sensitive data after use](https://github.com/rust-lang/rfcs/pull/1496). * [Amend RFC 550 with misc. follow set corrections](https://github.com/rust-lang/rfcs/pull/1494). # Upcoming Events * [2/16. San Diego Rust: Eat– Drink– Rust! Downtown Rust Meetup](http://www.meetup.com/San-Diego-Rust/events/228573576/). * 2/17. Copenhagen Rust Group meetup. * [2/17. Rust Los Angeles Monthly Meetup](http://www.meetup.com/Rust-Los-Angeles/events/228104697/). * [2/17. Rust Berlin: Leaf and Collenchyma](http://www.meetup.com/Rust-Berlin/events/227321071/). * [2/18. Rust Hack and Learn Hamburg @ 4=1](http://www.meetup.com/Rust-Meetup-Hamburg/events/228502426/?rv=ea1&_af=event&_af_eid=228502426&https=off). * [2/24. OpenTechSchool Berlin: Rust Hack and Learn](http://www.meetup.com/opentechschool-berlin/). * [2/25. Tokyo Rust Meetup #3](http://www.meetup.com/Tokyo-Rust-Meetup/events/228425744/). 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 # fn work(on: RustProject) -> Money * [Research Engineer - Servo](https://careers.mozilla.org/en-US/position/ozy21fwU) at Mozilla. * [Senior Research Engineer - Rust](https://careers.mozilla.org/en-US/position/o0H41fww) at Mozilla. * [PhD and postdoc positions](http://plv.mpi-sws.org/rustbelt/) at MPI-SWS. *Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) to get your job offers listed here!* # GSoc Project Hi students! Looking for an awesome summer project in Rust? Look no further! Chris Holcombe from Canonical is an experienced GSoC mentor and has a project to implement CephX protocol decoding. [Check it out here](https://wiki.ubuntu.com/GoogleSoC2016/Ideas#Decode_CephX_Protocol). # Crate of the Week This week's Crate of the Week is [rayon](https://crates.io/crates/rayon), which gives us `par_iter()`/`par_iter_mut()` functions that use an internal thread pool to easily parallelize data-parallel operations. There's also `rayon::join(|| .., || ..)` for Fork-Join-style tasks. Apart from the ease of use, it also performs very well, comparable to hand-optimized code. Thanks to [LilianMoraru](https://users.rust-lang.org/users/LilianMoraru) for the suggestion. [Submit your suggestions for next week][submit_crate]! [submit_crate]: https://users.rust-lang.org/t/crate-of-the-week/2704