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.
What's cooking on master?
96 pull requests were merged in the last week.
Now you can follow breaking changes as they happen!
Breaking Changes
Send
andSync
are now unsafe traits, partially implementing the OIBIT RFC. They are implemented by default for types that only containSend
andSync
types and can be opted into (unsafely) for other types, particularly those containing unsafe pointers.- The way
fn
items are coerced has changed in subtle ways. - There has been another stabilization pass over
std::str
which includes a number of minor breaking changes. - The semantics of the
reserve
methods ofBitv
andBitSet
have changed to match conventions such that it reserves n additional units capacity instead of total. The free functions ofcollections::bit
have been deprecated. FPCategory
, for classifying floating point numbers, has been renamedFpCategory
to match conventions.std::ascii
has undergone some changes withto_ascii_lower
being renamed toto_ascii_lowercase
andto_ascii_upper
toto_ascii_uppercase
. TheAscii
type has been removed in favor of theAsciiExt
trait, implemented foru8
andchar
. RFC.BinaryHeap::top
is renamed topeek
.- A number of iterator types have been renamed. Only breaking if you name them somewhere.
include_bin!
is nowinclude_bytes!
.
Other Changes
- A new range syntax allows for ranges to be specified with
m..n
,..n
,m..
syntaxes, which will soon let slicing be implemented as indexing over ranges. For now the..n
notation is not implemented because of an ambiguity in the syntax that must be resolved first. RFC. - The new fixed length array syntax that disambiguates the new range syntax has been implemented. The old syntax has not been removed yet.
- The new
{:?}
fmt specifier has been implemented. It corresponds to theShow
trait and is intended to be implementable by all types, whereas theString
format specifier ({}
) is purely for types that can be losslessly converted to strings. RFC. - Return values have been optimized to reduce stack usage dramatically, and rustc now only allocates 8MB of stack instead of 32MB.
New Contributors
- Brian J Brennan
- Florian Wilkens
- Johannes Hoff
- Maya Nitu
- Rolf Timmermans
- Simonas Kazlauskas
Approved RFC's
None.
New RFC's
Community
From the Team
It's Christmas time and holidays, so no meetings at all this week.
Blog Posts
- Using Rust from Perl and Julia. Reddit
- Rust, an anti-sloppy programming language. Reddit
- My thoughts on Rust in 2015. Reddit
- capnproto-rust's custom mutable reference types. Reddit
The end of 24 Days of Rust
24 is too small!
Discussions
- How's Rust for C100K?
- Thoughts on macros and syntax extensions
- Dealing with
va_list
in FFI - Why don't
if
/else
expressions need to end with a;
in Rust?
New Projects
- Rust Conversion Reference. Reddit
- Rust-Net: a network stack in pure Rust. Reddit
- RACC: Rust Another Compiler-Compiler. Reddit
- nss-multipasswd: a glibc plugin for multiple passwd files
- netaddr: Network addresses utilities for Rust
- A data oriented Entity Component System in Rust. Reddit
Project Updates
- This Week in Servo 16. Reddit
- A GUI was implemented for
img_dup
using Piston and Conrod. Reddit - Iron now supports unboxed closures.
- Superchan now has a simpler API with better documentation (double bonus!)
Upcoming Events
Nothing on the calendar until the Seattle meetup on 2015-01-12.