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?
99 pull requests were merged in the last week, and 11 RFCs.
Now you can follow breaking changes as they happen!
Breaking Changes
std::path
has been rewritten to improve ergonomics and better support platform-specific features. The old path module still exists asstd::old_path
and remains exported by the prelude (for now). RFC.std::env
has been added to the standard library as an overhaul of the existingstd::os
module, which is now deprecated. Part of the almighty RFC 517.- And also we've got a new
std::io
module, again part of the mother of RFCs. - The explicit closure kind syntax (
|&:|
,|&mut:|
,|:|
) is obsolete and closure kind is inferred from context. - In order to make drop semantics optimizable it is no longer possible to move into uninitialized arrays or out of fixed sized arrays. RFC.
- The
#![no_std]
attribute that allows for operation without the standard library has been placed behind theno_std
feature gate. - The scope of iterator expressions has been narrowed in a way that breaks minor corner-cases.
- The deprecated
MaybeOwnedVector
type has been removed.
Other Changes
- The
boxed::into_raw
andBox::frow_raw
functions convert betweenBox<T>
and*mut T
, a common pattern for creating raw pointers. - Initial support for OpenBSD and BitRig, an OpenBSD fork, appeared this week, from Sébastien Marie and Dave Huseby respectively.
New Contributors
- Caspar Krieger
- Dan Yang
- Filip Szczepański
- Garrett Heel
- Junseok Lee
- Kostas Karachalios
- Leo Testard
- madmalik
- Mikhail Zabaluev
- Nick Sarten
- Potpourri
- Ulrik Sverdrup
Approved RFC's
- RFC 213: Finalize defaulted type parameters.
- RFC 320: Non-zeroing dynamic drop.
- RFC 469: Feature-gate box patterns.
- RFC 531: Ammend RFC process with a defined scope.
- RFC 533: No array element moves. Disallows moving in and out of arrays to fix non-zeroing dynamic drop.
- RFC 556: Convention for constructing lifetime-bound values from raw pointers.
- RFC 560: Integer overflow. Makes integers defined to not overflow by default, with considerations for the impracticalities of actually checking for overflow.
- RFC 720: Syntax for
RangeFull
. Makes..
meanRangeFull
. - The I/O RFC was updated for changes to
Reader
andWriter
andstd::fs
. - All RFCs now must define a 'feature_name' for tracking purposes.
New RFC's
- Type ascription. Hint to the compiler the type of arbitrary expressions.
- Ammend RFC 517 to add material on
std::net
. - Overloaded
box
and placementin
. A new strategy for boxing things. - Deprecate
std::fmt::format
in favor ofString::format
. - Tweaks to the object safety rules.
Community
Announcements
- Weekly-meetings/2015-02-03: RFC shepherd attention spans; raw pointers and lifetimes; non-zeroing drop
- Unofficial Rust and Cargo nightlies for ARM. japaric to the rescue again.
- DroidLogician wants to help people with Rust on Windows.
Blog Posts
- Go and Rust: The road ahead for two young programming languages
- The Story of Rust. Steve Klabnik's slides from FOSDEM. /r/rust.
- Raft experiences (part 1). Hoverbear is working on an implementation of the Raft consensus algorithm.
Discussions
- How's Rust working out as the backend for crates.io?. Very well, thank you. Rust is solid as a rock.
- C++ has
vector(n, value)
, c hascalloc
, rust has.... Initializing a vector requires iterator chaining today,Vec::from_elem
no longer exists.
New Projects
- dimensioned. Compile-time checking of arbitrary units.
- byteorder. Big- and little-endian interop from BurntSushi.
- rustless. A high-quality 'REST-like' microframework built on Iron and Hyper.
- colonize!. A roguelike using the tcod toolkit and Piston. Indiv0 promises to document the development process.
Project Updates
- This Week in Servo 22. For its third birthday Servo added cookie support.
- If you are the tweeting type, follow ServoNightly for the latest on that project.
- Racer project update 4. Rust's best code-completion tool supports generics and destructuring.
- Conrod, the GUI for Piston, is now backend-agnostic.
- Tomaka is looking for somebody to port CPAL, the cross-platform audio library to OS X.
- New playform screenshoht. The minecraft-like has recently gotten a number of new features.
Upcoming Events
- Feb. 9. Sydney Meetup. Huon Wilson and Steve Klabnik will be attending.
- Feb 9. Seattle Meetup.
- Feb 10. Rust NY. Lightning talks.
- Feb 10. San Diego Rust.
- Feb 16. Rust Paris.
- Feb 19. Rust Bay Area. Topic is I/O.