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
SendandSyncare now unsafe traits, partially implementing the OIBIT RFC. They are implemented by default for types that only containSendandSynctypes and can be opted into (unsafely) for other types, particularly those containing unsafe pointers.- The way
fnitems are coerced has changed in subtle ways. - There has been another stabilization pass over
std::strwhich includes a number of minor breaking changes. - The semantics of the
reservemethods ofBitvandBitSethave changed to match conventions such that it reserves n additional units capacity instead of total. The free functions ofcollections::bithave been deprecated. FPCategory, for classifying floating point numbers, has been renamedFpCategoryto match conventions.std::asciihas undergone some changes withto_ascii_lowerbeing renamed toto_ascii_lowercaseandto_ascii_uppertoto_ascii_uppercase. TheAsciitype has been removed in favor of theAsciiExttrait, implemented foru8andchar. RFC.BinaryHeap::topis 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..nnotation 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 theShowtrait and is intended to be implementable by all types, whereas theStringformat 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_listin FFI - Why don't
if/elseexpressions 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_dupusing 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.