158 lines
9.1 KiB
Markdown
158 lines
9.1 KiB
Markdown
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
|