10 KiB
10 KiB
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 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! Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors or omissions in this week's issue, please submit a PR.
What's cooking on master?
86 pull requests were merged in the last week, and 1 RFCs.
Now you can follow breaking changes as they happen!
Breaking Changes
for
loops now operate on theIntoIterator
trait, 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 thatfor foo in bar { }
yields values from a move iterator, destroying the original collection. RFC.std::io
was renamed tostd::old_io
in preparation for implementing the I/O overhaul RFC.- The return type of
Fn
,FnMut
, andFnOnce
are associated types. The unsugared forms of these traits are unstable so this shouldn't break stable code. RFC. FullRange
, the type that represents a slice over a complete collection, has been renamed toRangeFull
, and removed from the prelude.
Other Changes
- The standard library now partipates in feature gating, so
use of unstable libraries now requires a
#![feature(...)]
attribute. The impact of this change is described on the forum. RFC. - References to types that implement
Deref<U>
now automatically coerce to references to the dereferenced typeU
, 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. - The
private_no_mangle_fns
lint warns about functions that are#[no_mangle]
but not exported.
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 on I/O has been updated with material on
std::env
.
New RFC's
- Allow closure expressions to expand to a
&
or&mut
temporary. Make it so you don't have to write&
or&mut
in front of closure literals in some circumstances. - Extensible enums. Adds a type of enum that can be extended to new variants without breaking downstream users by disabling exhaustiveness checks.
- Sound generic drop. Makes
Drop
safely implementable on more types, eliminating#[unsafe_destructor]
. - io error handling design. Deals with the semantics of closing I/O types.
- std::iter::once. Adds a fn
once
that returns an iterator yielding a single element. - Add linear type facility. Adds a type that requires explicit drop.
Community
Announcements
- Welcome to the new Rust forum. There's a new user forum.
- Weekly-meetings/2015-01-27: Slow meeting.
Blog Posts
- Heartbleed in Rust. It is possible to write Heartbleed-style bugs in Rust, though there is nothing to be alarmed about - Rust still rules. HN. /r/rust. /r/programming.
- Some notes on Rust, the language. First thread about Rust at LtU in a while. HN. /r/rust. /r/programming.
- An Adventure in API Design and Concurrency in Rust.
- On Rust and Nim. Similar but different. /r/rust. /r/programming.
- updated crates.io dependency graph. The registry is growing fast. Thanks /u/corevette.
Discussions
- Pre-RFC: resolve support for hyphens in crate names. People love the aesthetics of hyphens-between-words, but hyphens are not valid identifiers.
- Crates.io and namespacing.
- Testing Rust's I/O Speed vs. C. Not such a good showing.
- There was bigtime drama after strcat stopped maintaining his Arch packages.
Videos
- SHA1 Performance Quest. Implementing SHA1 in Rust.
- Trace Quest 5. A raytracer in Rust.
New Projects
- soa. Struct-of-array types, a sometimes more efficient version of
Vec<(A, B)>
from cgaebel. /r/rust. - valico. JSON schema validator, from the rustless RESTful micro-framework project.
- FFI-Platypus-Lang-Rust. Call Rust from Perl.
- glassful. kmc strikes again with a syntax extension that translates from Rust syntax to OpenGL Shader Language. /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.
Project Updates
- Glium project update. Glium is a safe wrapper for OpenGL that is making a lot of progress.
- This Week in Servo 21.
Upcoming Events
- Feb 3. N Languages in N Months NY. John Barker is giving an intro to Rust.
- Feb 9. Sydney Meetup. Huon Wilson and Steve Klabnik will be in attendance.
- Feb 9. Seattle Meetup.