187 lines
14 KiB
Markdown
187 lines
14 KiB
Markdown
Title: This Week in Rust 230
|
|
Number: 230
|
|
Date: 2018-04-17
|
|
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 a pull request](https://github.com/cmr/this-week-in-rust).
|
|
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).
|
|
|
|
# Updates from Rust Community
|
|
|
|
## News & Blog Posts
|
|
|
|
* [Redox Summer of Code](https://www.redox-os.org/rsoc/).
|
|
* [Writing An NES Emulator with Rust and WebAssembly](https://medium.com/@bokuweb17/writing-an-nes-emulator-with-rust-and-webassembly-d64de101c49d).
|
|
* [Down a rusty rabbit hole](https://manishearth.github.io/blog/2018/04/12/down-a-rusty-rabbit-hole/). Discovering a series of quirks of the Rust compiler/language.
|
|
* [The case for deadlines in timeout-centric APIs](https://gist.github.com/alkis/9510a840f1965185ab0a02cb59761dd8).
|
|
* [Rust pattern: Rooting an Rc handle](http://smallcultfollowing.com/babysteps/blog/2018/04/16/rust-pattern-rooting-an-rc-handle/).
|
|
* [Conway's Game of Life: A tutorial on implementing a game in Rust and WebAssembly](https://rust-lang-nursery.github.io/rust-wasm/game-of-life/introduction.html).
|
|
* [Safe intrusive collections with pinning](https://www.ralfj.de/blog/2018/04/10/safe-intrusive-collections-with-pinning.html).
|
|
* [Rust memory safety revolution: Why, what, and how for complete beginners](https://anixe.pl/content/news/rust_memory_safety_revolution).
|
|
* [A useful feature few Rust programmers know about](http://rickyhan.com/jekyll/update/2018/04/16/the-best-kept-secret-rust-feature.html). The `{:#?}` pretty-printer flag.
|
|
* [Instance identity in C++ and Rust](https://jrvanwhy.github.io/instance-identity/).
|
|
* [A shifty riddle: Why is `std::ops::Shl::shl` not equal to `<<`](https://llogiq.github.io/2018/04/11/shift.html)?
|
|
* [Fearless Rust bloggers](https://users.rust-lang.org/t/fearless-rust-bloggers/16770). A list of blogs from past This Week in Rust issues.
|
|
* Armstrong Publications released a Rust book [Step Ahead with Rust](https://www.armstrong-publications.com/product/step-ahead-with-rust/) for intermediate to advanced programmers.
|
|
* [This week in Rust docs 101](https://guillaumegomez.github.io/this-week-in-rust-docs/blog/this-week-in-rust-docs-101).
|
|
* [The Embedded Working Group newsletter 3](https://internals.rust-lang.org/t/the-embedded-working-group-newsletter-3/7319).
|
|
* [CLI Working Group newsletter 2](https://internals.rust-lang.org/t/cli-wg-newsletter-2/7309).
|
|
* [IntelliJ Rust changelog 72](https://intellij-rust.github.io/2018/04/16/changelog-72.html). Now with support for macro expansion.
|
|
* [podcast] [Rusty Spike Podcast - episode 25](https://rusty-spike.blubrry.net/2018/04/12/episode-25-apr-11-2018/). Rust Reach, the Rust all hands, webassembly.studio, more wasm tools, async/await, and GStreamer.
|
|
|
|
### From Rust All Hands in Berlin
|
|
|
|
* [Rust all-hands (dev-tools stuff)](https://www.ncameron.org/blog/rust-all-hands-dev-tools-stuff/).
|
|
|
|
# Crate of the Week
|
|
|
|
This week's crate is [rain](https://github.com/substantic/rain), a framework for large-scale distributed computations. Thanks to [Vikrant](https://users.rust-lang.org/u/nasa42) for the suggestion!
|
|
|
|
[Submit your suggestions and votes for next week][submit_crate]!
|
|
|
|
[submit_crate]: https://users.rust-lang.org/t/crate-of-the-week/2704
|
|
|
|
# Call for Participation
|
|
|
|
Always wanted to contribute to open-source projects but didn't know where to start?
|
|
Every week we highlight some tasks from the Rust community for you to pick and get started!
|
|
|
|
Some of these tasks may also have mentors available, visit the task page for more information.
|
|
|
|
* [Clippy](https://github.com/rust-lang-nursery/rust-clippy) has a lot of [good first issues](https://github.com/rust-lang-nursery/rust-clippy/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). If you are looking for something specific to get started with, here is one: [Split up our UI-tests into smaller parts](https://github.com/rust-lang-nursery/rust-clippy/issues/2038).
|
|
* [rustc-guide](https://github.com/rust-lang-nursery/rustc-guide) is a project to write a short guide about how the rust compiler works, and it needs your help. There are some [easier issues](https://github.com/rust-lang-nursery/rustc-guide/issues?q=is%3Aissue+is%3Aopen+label%3AEasy), [issues which might require a bit of investigation/code reading](https://github.com/rust-lang-nursery/rustc-guide/issues?q=is%3Aissue+is%3Aopen+label%3AMedium), and [issues which probably require some advanced knowledge or a lot of time](https://github.com/rust-lang-nursery/rustc-guide/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3AHard).
|
|
* [Help stabilize a subset of Macros 2.0](https://internals.rust-lang.org/t/help-stabilize-a-subset-of-macros-2-0/7252)!
|
|
* [good first issue] [distinst: Optimize Partition Moving Algorithm](https://github.com/pop-os/distinst/issues/51). distinst is a distribution installer backend written in Rust.
|
|
* [distinst: Reduce LUKS Device Detection Overhead](https://github.com/pop-os/distinst/issues/80).
|
|
* [distinst: Use Entire Disk as LUKS / LVM Partition](https://github.com/pop-os/distinst/issues/64).
|
|
* [easy] [tokei: Improve tokei's language test coverage](https://github.com/Aaronepower/tokei/issues/63).
|
|
* [Get started with these beginner-friendly issues](https://www.rustaceans.org/findwork/starters).
|
|
|
|
If you are a Rust project owner and are looking for contributors, please submit tasks [here][guidelines].
|
|
|
|
[guidelines]: https://users.rust-lang.org/t/twir-call-for-participation/4821
|
|
|
|
# Updates from Rust Core
|
|
|
|
143 pull requests were [merged in the last week][merged]
|
|
|
|
[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2018-04-09..2018-04-16
|
|
|
|
* [implement Euclidean modulo](https://github.com/rust-lang/rust/pull/49389) (RFC #[2169](https://rust-lang.github.io/rfcs/2169-euclidean-modulo.html))
|
|
* [implement `#[repr(packed(n))]`](https://github.com/rust-lang/rust/pull/48528) (RFC #[1399](https://rust-lang.github.io/rfcs/1399-repr-pack.html))
|
|
* [fix unsoundness bug in functions input references](https://github.com/rust-lang/rust/pull/49885)
|
|
* [skip MIR encoding for cargo check](https://github.com/rust-lang/rust/pull/49433)
|
|
* [proc_macro: avoid cached `TokenStream` more often](https://github.com/rust-lang/rust/pull/49852)
|
|
* [proc_macro: Generalize `FromIterator` impl](https://github.com/rust-lang/rust/pull/49734)
|
|
* [hygiene 2.0: avoid comparing fields by name](https://github.com/rust-lang/rust/pull/49718)
|
|
* [fix derive(PartialOrd) and optimise final field operation](https://github.com/rust-lang/rust/pull/49881)
|
|
* [update `?` repetition disambiguation](https://github.com/rust-lang/rust/pull/49719)
|
|
* [suggest `!` for erroneous identifier `not`](https://github.com/rust-lang/rust/pull/49258)
|
|
* [fix incorrect span in `&mut` suggestion](https://github.com/rust-lang/rust/pull/49931)
|
|
* [don't recurse into allocations, use a global table instead](https://github.com/rust-lang/rust/pull/49833)
|
|
* [Fix ICE by disallowing `impl Trait` in unsupported position](https://github.com/rust-lang/rust/pull/49830)
|
|
* [chalkify: Implement lowering rule Implied-Bound-From-Trait](https://github.com/rust-lang/rust/pull/49435)
|
|
* [don't abort const eval due to long running evals, just warn](https://github.com/rust-lang/rust/pull/49947)
|
|
* [add `GlobalAlloc` trait + tweaks for initial stabilization](https://github.com/rust-lang/rust/pull/49669)
|
|
* [add `to_bytes` and `from_bytes` to primitive integers](https://github.com/rust-lang/rust/pull/49871)
|
|
* [correctly print fractional part of a second](https://github.com/rust-lang/cargo/pull/5357)
|
|
* [stabilize `Option::filter`](https://github.com/rust-lang/rust/pull/49575)
|
|
* [stabilize `fetch_nand`](https://github.com/rust-lang/rust/pull/49963)
|
|
* [stabilize `take_set_limit`](https://github.com/rust-lang/rust/pull/49681)
|
|
* [move `Range`*`::contains` to a single default impl on `RangeBounds`](https://github.com/rust-lang/rust/pull/49130)
|
|
* [replace manual iterator exhaust with `for_each(drop)`](https://github.com/rust-lang/rust/pull/48945)
|
|
* [merge the `std_unicode` crate into the `core` crate](https://github.com/rust-lang/rust/pull/49698)
|
|
* [core: Remove panics from some `Layout` methods](https://github.com/rust-lang/rust/pull/49884)
|
|
* [cargo: include package metadata in `cargo metadata`](https://github.com/rust-lang/cargo/pull/5360)
|
|
* [cargo: rustc cache](https://github.com/rust-lang/cargo/pull/5359)
|
|
* [rustdoc: add target features when extracting and running doctests](https://github.com/rust-lang/rust/pull/49864)
|
|
* [rustdoc: port the -C option from rustc](https://github.com/rust-lang/rust/pull/49956)
|
|
|
|
## New Contributors
|
|
|
|
* Alec Mocatta
|
|
* Chris Coulson
|
|
* Fabio B
|
|
* Hero
|
|
* Joshua Barretto
|
|
* Nikita Popov
|
|
* Steven Malis
|
|
|
|
## 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:
|
|
|
|
* [Unapprove placement RFCs](https://github.com/rust-lang/rfcs/pull/2387): [1228: Place left arrow syntax (`place <- expr`)](https://github.com/rust-lang/rfcs/blob/master/text/1228-placement-left-arrow.md) and [RFC 809: `box` and placement `in`](https://github.com/rust-lang/rfcs/blob/master/text/0809-box-and-in-for-stdlib.md).
|
|
|
|
## Final Comment Period
|
|
|
|
Every week [the team](https://www.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
|
|
|
|
* [Cargo publish with internal path dependencies](https://github.com/rust-lang/rfcs/pull/2224).
|
|
|
|
## New RFCs
|
|
|
|
* [Zero page optimization](https://github.com/rust-lang/rfcs/pull/2400).
|
|
* [`mut (x, y, ..)` and `mut [x, y, ..]` pattern shorthand](https://github.com/rust-lang/rfcs/pull/2401).
|
|
|
|
# Upcoming Events
|
|
|
|
The community team is trying to improve outreach to meetup organisers. Please fill out their [call for contact info](https://docs.google.com/forms/d/e/1FAIpQLSf52YXGhqBaHtCXtVna4iHYMK7IQaTqUW6V-ztsZC8C2TBInQ/viewform) if you are running or used to run a meetup.
|
|
|
|
* [Apr 19. Cambridge, GB - Cambridge Rust Meetup](https://www.meetup.com/Cambridge-Rust-Meetup/events/pzwshpyxgbzb/).
|
|
* [Apr 21. Chennai, IN - Monthly Meetup - April](https://www.meetup.com/mad-rs/events/249535481/).
|
|
* [Apr 22. Mountain View, US - Open Table / Icebreaker: what projects are you working on](https://www.meetup.com/Rust-Dev-in-Mountain-View/events/glnfcpyxgbdc/).
|
|
* [Apr 24. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org](irc://irc.mozilla.org/rust-content).
|
|
* [Apr 24. Dallas, US - Last Tuesday Meetup](https://www.meetup.com/Dallas-Rust/events/zfgwzmyxgbgc/).
|
|
* [Apr 25. Rust Community Team Meeting at #rust-community on irc.mozilla.org](irc://irc.mozilla.org/rust-community).
|
|
* [Apr 25. Rust Events Team Meeting](https://t.me/joinchat/EkKINhHCgZ9llzvPidOssA).
|
|
* [Apr 26. New York City, US - Rust NYC (Security)](https://www.meetup.com/Rust-NYC/events/249849155/).
|
|
* [Apr 27. Darmstadt, DE - Rhein-Main Rust Meetup](https://www.meetup.com/Rust-Rhein-Main/events/249543182/).
|
|
* [Apr 29. Mountain View, US - Open Table / Icebreaker: what projects are you working on](https://www.meetup.com/Rust-Dev-in-Mountain-View/events/glnfcpyxgbmc/).
|
|
* [May 1. Johannesburg, ZA - Monthly Meetup of the Johannesburg Rustaceans](https://www.meetup.com/Johannesburg-Rust-Meetup/events/cpblrnyxhbcb/).
|
|
* [May 2. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn](https://www.meetup.com/opentechschool-berlin/events/249134945/).
|
|
* [May 2. Rust Community Team Meeting at #rust-community on irc.mozilla.org](irc://irc.mozilla.org/rust-community).
|
|
* [May 2. Vancouver, CA - Rust Study/Hack/Hang-out night](https://www.meetup.com/Vancouver-Rust/events/ckwdlpyxhbdb/).
|
|
* [May 2. Atlanta, US - Grab a beer with fellow Rustaceans](https://www.meetup.com/Rust-ATL/events/rhvgrmyxhbdb/).
|
|
* [May 2. Indianapolis, US - Indy.rs - Actix Actor Framework](https://www.meetup.com/indyrs/events/cpvshpyxhbdb/).
|
|
* [May 3. Utrecht, NL - Rust Workshop](https://www.meetup.com/Rust-Utrecht/events/248995086/).
|
|
* **[May 27. Paris, FR - RustFest Paris 2018](https://paris.rustfest.eu/)**.
|
|
|
|
If you are running a Rust event please add it to the [calendar] to get
|
|
it mentioned here. Email the [Rust Community Team][community] for access.
|
|
|
|
[calendar]: https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com
|
|
[community]: mailto:community-team@rust-lang.org
|
|
|
|
# Rust Jobs
|
|
|
|
* [Real Time Embedded Software Engineer at Callen-Lenz, UK](https://callenlenz.com/contact/careers/).
|
|
|
|
*Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) to get your job offers listed here!*
|
|
|
|
# Quote of the Week
|
|
|
|
> Rust is one of those friends that take some time to get along with, but that you'll finally want to engage with for a long term relationship.
|
|
|
|
— [Sylvain Wallez](https://bluxte.net/musings/2018/04/10/go-good-bad-ugly/).
|
|
|
|
Thanks to [u/rushmorem](https://www.reddit.com/r/rust/comments/8bjio2/xpost_from_rprogramming_go_the_good_the_bad_and/dx7u0lu/) and [saethlin](https://users.rust-lang.org/t/twir-quote-of-the-week/328/514) for the suggestion!
|
|
|
|
[Submit your quotes for next week][submit]!
|
|
|
|
[submit]: http://users.rust-lang.org/t/twir-quote-of-the-week/328
|
|
|
|
*This Week in Rust is edited by: [nasa42](https://github.com/nasa42) and [llogiq](https://github.com/llogiq).*
|