Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safe, concurrent, and fast. 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.
This week the mailing list was closed, std::io
was renamed
std::old_io
. There were many pull requests merged, but not a
lot of churn.
What's cooking on master?
143 pull requests were merged in the last week, and 6 RFCs.
Flavio, Steve and Alex all made rollups. Thanks!
Now you can follow breaking changes as they happen!
Breaking Changes
- The
Show
andString
formatting traits have been renamed toDebug
andDisplay
to more clearly reflect their related purposes. Automatically getting a string conversion to use withformat!("{:?}", something_to_debug)
is now written#[derive(Debug)]
. - Both the
#[start]
and#[main]
attributes are feature gated as a precaution. Use#![feature(start)]
and#![feature(main)]
to get them back.
Other Changes
- Abstract OS-specific string types,
std::ff::{OsString, OsStr}
, provide strings in platform-specific encodings for easier interop with system APIs. RFC. extern crate
anduse
no longer have to be written only at the top of a module, but can be intermixed with other item definitions.- Brian Leibig added his LALR grammar, which parses almost all the Rust files that rustc can.
- The (oft-neglected) grammar from the manual was extracted to its own file.
- The
unconditional_recursion
lint detects basic infinite recursion scenarios that are probably not intended.
New Contributors
- Adam Roben
- Alexis
- Barosl LEE
- blackbeam
- Chris Thorn
- Daniel Griffen
- Daniel Raloff
- Eunji Jeong
- Flavio Percoco Premoli
- GuillaumeGomez
- Ignacio Corderi
- Jay True
- JP Sugarbroad
- KernelJ
- Kim Røen
- Logan Chien
- Luke Francl
- Michael Pankov
- Ryan Levick
- Sean Patrick Santos
- Steven Allen
- Tim Parenti
- Toby Scrace
- Tristan Storch
- visualfc
- Wangshan Lu
- Willson Mock
Approved RFC's
- 242: Deref conversions. PR. Adds coercions
from
&T
to&U
whenT: Deref<U>
. - 550: Macro future proofing. Places limits on the grammar of macro matchers to avoid potential problems with adding more syntax to Rust. The implementation has already landed. PR.
- 565:
fmt::Show
andfmt::String
guidelines. RenamesShow
toDebug
,String
toDisplay
and establishes conventions for when to use and implement each. PR. - Amendment to 517 for string handling. rfc-517-pr. Defines
the
OsString
andOsStr
platform-specific string types. - 587: Make return type of
Fn
traits an associated type. Allows calls to be overloaded based on return type.
New RFC's
- Introduce a default object lifetime bound.
- Replace
be
withbecome
. - Specify unwinding.
- Implement a
discriminant_value
intrinsic. - Debug improvements.
- Disallow omitting the ABI in
extern
declarations. - Syntax for
FullRange
. - Add a new macro for 'unreachable' whose meaning differs in release builds.
- Truly unsized types.
- Reseeding
std::rand
. - Unsafe enums.
- Amend macro future proofing RFC.
- Revert RFC to require impls to be near structs.
- Privacy-respecting FRU.
- Support variance for type parameters.
- Amend RFC 517 with material on
std::fs
. - Integer guidelines RFC.
- Replace
ref
by*
in patterns.
Community
What's Built with Rust?
Announcements
- Weekly-meetings/2015-01-20: goodbye view items; deref coercion; nounwind; discourse/ml changes; discriminant intrinsics; issue triage; fott. /r/rust.
- PSA: io => old_io. As part of the overhaul of
std::io
the existingio
module is being renamed to move it out of the way. - Moving editor highlighting into their own repos. Your vim and emacs modes will need to be obtained elsewhere before long.
- Issue categorization changes. Steve has been retriaging old issues.
- Call for more comments on IO RFCs. Now is your chance.
Blog Posts
- Functional reactive event handling. Explorations into functional reactive programming in Rust.
- Mozilla's Servo Still On Track For 2015 Alpha Release. Phoronix picks up Jack's linux.conf.au talk. /r/rust.
- Writing Cross-Platform Games Using Rust and Piston. It can be done.
- Raft so far. Hoverbear talks about his endeavors to implement the Raft consensus algorithm.
- Graydon comments on Rust 1.0 alpha.
Discussions
- Say goodbye to the mailing list. Reddit responds to the end of rust-dev.
- A macro that is to
Result::or_else
whattry!
is toResult::and_then
. SimonSapin is trying. - Replace most of the collections API with ranges and iterators. Gankro has a crazy far future idea.
- Jai Demo: Data-oriented features: SOA, crazy 'using'. Discussion on /r/rust about Jonathan Blow's latest.
- How Rust applications and libraries fit into Debian. Making crates easy to repackage by Linux distributions is not yet solved.
Videos
- Jim Blandy - Programming in Rust. Mozilla's Jim Blandy talking about Rust for O'Reilly. Registration required.
New Projects
- Built with Rust - A website promoting projects built with Rust.
- cql-ffi-safe - Safe bindings to the DataStax C++ driver for Cassandra.
- screenshot-rs - Capturing the screen.
- rust-atomicwrites - Atomic file writing for POSIX systems.
- winapi-rs - Windows API bindings.
- rust-beanstalkd - A beanstalkd client that is compatible with IronMQ. It's API has been recently been redesigned.
- mm - A multimedia library that is like a cross between SDL and GDK.
- seqloq - Fast locks for read-heavy workloads.
- r6.rs - R6RS Scheme implementation in Rust.
- oxischeme - A Scheme implementation in Rust, with a working GC.
- CoatCheck - A library for storing values and referencing them by ticket.
- emojicons - An emoji parser.
- maud - A macro that takes markup and Rust tokens and emits HTML.
- ocb.rs - OCB-AES 'authenticryption'.
- parser-combinators - A parser-combinator library.
Project Updates
- This Week in Servo 20.
- dynamodule, kmc's experiment in dynamic OOP supports virtual destructors.
- multirust can install custom toolchains.
Upcoming Events
- January 27 - Rust NY.
- January 28 - Amsterdam.
- February 1 - The Story of Rust. Steve Klabnik at FOSDEM.
- February 1 - Servo and You. Josh Matthews at FOSDEM.