237 lines
10 KiB
Markdown
237 lines
10 KiB
Markdown
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
|