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
libstdto a newlibcorecrate, 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~strand~[]have been removed from the language. ~[T]no longer implementsFromIterator, and many APIs have been updated to useVec.- The
local_dataAPI 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_refcountfunction has been removed. unsafe extern fndefinitions 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, andFilePermissionshas been ported to it.
Other Changes
Box<T>is the new syntax for~T.- Sockets now have non-blocking IO!
TcpStreamandUnixStreamhave methods to cancel reads/writes.- There is now limited support for mixing
rlibs anddylibs when linking to dependencies. - The
statscrate has been generalized to theFloattrait. - A
graphvizcrate has been added for generatingdotfiles. - Some missing cases in the
type_limitslint have been fixed. boxhas 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