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.
0.10 was released this week, and with it comes a redesign of the websites and official nightlies.
What's cooking on master?
62 pull requests were merged this week.
Breaking Changes
- The
map
andflat_map
methods have been removed fromVec<T>
, the are superseded by their iterator equivalents (of the same name). FromIterator::from_iterator
has been renamed tofrom_iter
.std::vec::{append, append_one}
have been turned into methods.- struct fields are now private by default. Similarly, fields of tuple structs are also private by default.
std::num
has seen some cleanup. Thecmath
module has been removed from the public API and the various wrapper functions on float types have been removed.Rng::shuffle_mut
has been renamed toshuffle
.- Vectors, arrays, and slices require
uint
indices now. Previously they accepted any integer type. - Static string constants no longer include a null terminator. This was accidentally leftover from when all strings were implicitly null-terminated. This may break code that incorrectly assumed strings were null-terminated.
- The
concat_idents
macro is now feature gated. RefCell::get
andRefCell::set
have been removed.
Other Changes
- rustc now gives file paths when reporting duplicate crates found.
std::cmp
has some nice new documentation.- The manual now has an updated list of what attributes are valid and what they do.
- Built-in syntax extensions are now documented.
AtomicInt
andAtomicUint
now have atomic bitwise operations.- The
Show
implementation forCell
has been fixed to actually print the contents of the Cell. - Macros in statement and expression position can now be delimited by square brackets.
- The
k-nucleotide
benchmark has been fixed to pass the official shootout tests. - A nasty bug which would cause
Arc
s to leak has been fixed.
New Contributors
- Benjamin Adamson
- Christopher Kendell
- Falco Hirschenberger
- Gábor Lehel
- Ivan Petkov
- Scott Jenkins
- Timothée Ravier
Weekly Meeting
The weekly
meeting
discussed Vec versus ~[T]
, the intrinsics RFC, and StrBuf.
RFCs
Some new RFCs:
- Check actual type parameters against their bounds
- Change return type of str::replace to MaybeOwned
- Bit fields and matching
- Use different keywords for declaring tagged unions and C-style enums
- Remove the
priv
keyword - Unify and nest structs and enums
Project Updates
- rustlex, a syntax extension for generating regular expression-based lexers.
- farcaller has shown a demo of Rust on an ARM dev board.
- A sample Asterisk module, in Rust
- Parallel JS Compression in Rust.
- A Brainfuck Interpreter in 43 lines.
- rustfix, a simple regex-based upgrading tool.
- rust-iteratorcomprehensions, a list comprehension syntax for iterators.
This Week in Servo
Servo is a web browser engine written in Rust and is one of the primary test cases for the Rust language.
In the last week, we landed 18 PRs.
Notable additions
- Patrick Walton (along with commits from Juneyoung Cho and Hyun June Kim) landed ACID2 support in #1988
- ms2ger landed a new Rust upgrade, bringing us to late March in #2041
- Martin Robinson move the active timers for the
Window
object into aHashMap
in #2002 - Manish Goregaokar made attribute getter/setters case insensitive in #2043
- Tetsuharu Ohzeki cleaned up
Document::create_collection
in #2031 - Peiyong Lin got rid of match statements in layout queries in #2022
- Bruno de Oliveira Abinader added support for the ASCII whitespace check in #2032
New contributors
- Martin Robinson
Meetings and Notes
In this week's meeting, we discussed how to demo ACID2, gave a quick overview of our Q2 agenda, talked about the tentative Servo workweek date (June 2), and wrapped up where the rest of the layout features are at now that we have closed down the ACID2 push.
Courtesy of Manish Goregaokar, we now have a badge for those brave memebers of the Servo community who participate in the Sisyphean task of upgrading the version of Rust used in Servo. Thanks, Manish!
Community
- Rust vs Go
- Rust is now on Facebook
- How similar is Rust to Go?
- Safe Synchronization Primitives and their implementation
- Simple Type-Based Alias Analysis for Rust
- Reminder:
~[T]
is not going away - Higher-kinded polymorpihsm
- A More Detailed Tour of the Rust Compiler
- Another brain dump - data structures
- Rust Me, I'm a Developer!, (slides and commentary from a talk given at Stir Trek 2014)