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.
What's cooking on master?
76 pull requests were merged this week.
Breaking Changes
- A significant amount of functionality has
moved from
libstd
to a newlibcore
crate, which is intended to be usable in a freestanding environment (it doesn't use any allocation etc). See the pull request for further details. - All mentions of
~
outside of~str
and~[]
have been removed from the language. ~[T]
no longer implementsFromIterator
, and many APIs have been updated to useVec
.- The
local_data
API has been modernized to use methods on keys, RAII, and removal of essentially unused features. - Trait inheritence with incorrect use of lifetimes has been fixed. See the second commit for a testcase and explanation.
- Cross-crate enum variant privacy has been fixed. Previously, private variants were always usable without restriction.
- Format string parsing has been moved outside of
std
. - The
bump_box_refcount
function has been removed. unsafe extern fn
definitions are now allowed, with a corresponding change in how that type is written (previously the parser acceptedextern unsafe fn()
).bitflags!
now allows setting attributes on the generated type, andFilePermissions
has been ported to it.
Other Changes
Box<T>
is the new syntax for~T
.- Sockets now have non-blocking IO!
TcpStream
andUnixStream
have methods to cancel reads/writes.- There is now limited support for mixing
rlib
s anddylib
s when linking to dependencies. - The
stats
crate has been generalized to theFloat
trait. - A
graphviz
crate has been added for generatingdot
files. - Some missing cases in the
type_limits
lint have been fixed. box
has been added to the pattern grammar.- An injection bug in rustdoc's web frontend has been fixed.
- Use of non-existent method which has the same name as an existing static method now has a note attached.
New Contributors
- Aaron Raimist
- Ali Smesseim
- Dirk Leifeld
- James Laverack
- Lucas Dohmen
- Phil Ruffwind
- Tim Brooks
Weekly Meeting
The weekly meeting discussed many things. I think I'm going to stop including this section of TWiR because the meeting notes are very well-kept (thanks Lars!) and there's often too much to effectively summarize.
RFCs
- Remove
*mut T
, add*const T
- Add byte and byte string literals
- Allow blocks in constants
- Algebraic effect system
- Split Iterator into Iterator and FiniteIterator
Community Updates
- Bay Area Rust, May 2014: Testing
- New meetup at Pittsburgh Code and Supply
- Rust for C++ programmers - part 5: borrowed references
- Header compression library for HTTP/2
- rust-graphics, how Rust's type system might improve graphics programming
- Informal survey: Which is clearer, mutability or uniqueness?
- Teepee design: header representation
- How to test Rust on travis-ci