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 is the busiest week in This Week in Rust's history, and the pull request queue isn't getting any shorter. This is a mixed blessing: tons of work is getting done, but it takes forever to get merged.
What's cooking on master?
89 pull requests were merged this week. This is the most pull requests merged in a week, ever. 10 1.0 issues were closed this week, and 0 opened.
Breaking Changes
- Unique vector patterns (matching on a
~[]
) has been removed from the language. One can still match against a slice. std::unstable
has been dismantled. Even as we march towards 1.0 stability, I will still consider changes to any public interface breaking.Bitwise::population_count
has been renamed toBitwise::count_ones
.TaskBuilder
has seen some cleanup to actually use the emerging "builder" pattern.- As part of
std::num
s continued revamp, theReal
trait has been dismantled in favor of theFloat
trait. - Another issue with imports has been fixed. In particular, when importing an item where there are two items with the name, one private and one public, the private one was accidentally imported too. This shouldn't affect any code, as it's a fairly convoluted case.
- UTF-16 handling has been refactored to match the standard string APIs.
extra::test
has been liberated into alibtest
.extra::time
has been liberated into alibtime
.EnumSet
has been moved intolibcollections
.- The
Integer
trait has migrated tolibnum
. std::hash
has been rewritten and redesigned.std::trie
andstd::hashmap
have been moved intolibcollections
.
Other Changes
- Pull request 12345 was opened. In the spirit of significant arbitrary numbers, it is absolutely menial.
rustdoc
will now test code blocks by default, not requiring a "rust" annotation.- Unix domain sockets are now
implemented in
libnative
. MutexArc
no longer has aFreeze
bound.- rustdoc has seen a bunch of minor fixes.
- More noteworthy, there is now syntax highlighting in rustdoc output!
- The
unnecessary_parens
lint now looks at assignments for extraneous parenthesis. - A bug with infinitely recursing macro errors has been fixed.
std::str::is_utf8
has been internally refactored to use 100% safe code, as well as get a bit of a speed boost.format!
now handles temporaries better.- If you find yourself working with libsyntax, there is now a
-Z
option for dumping the AST as JSON. This can be useful when trying to figure out what code corresponds to what structure or enum variant. - Using channels outside of the runtime has been fixed.
- Generic Drop implementations with trait bounds has been fixed. Yay!
- Integer formatting has been rewritten. It's now cleaner, does less allocation, and is 3-6x faster in many cases.
std::io::stdin
is now buffered by default.- All language items must now be reachable. Previously this caused a linker error.
New Contributors
- Axel Viala
- Craig MacKenzie
- Douglas Young
- Dylan Braithwaite
- Ehsanul Hoque
- Sterling Greene
Weekly Meeting
The weekly meeting discussed the Hash changes, debug assertions, and commit log administrivia.
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.
This week, we landed 15 PRs.
Notable additions
- Sankha Narayan Guria made drawing a single line much more efficient in #1709
- Lars Bergstrom removed the last of the
@mut
s not in script in #1712 - Junyoung Cho fixed up a bug where we were removing
s in #1727 - Youngmin Yoo added support for the
<object>
element in #1664 - Keegan McAllister made use of the border box more consistent in layout in #1699
- Peiyong Lin fixed up the naming of some of our flow methods in #1693
- Simon Sapin refactored the
cascade
methods in #1706 - Adam Sinnett corrected the parent type names of Text, Comment, and PI types in #1702
- Patrick Walton added some inlining that sped up flow construction even more in #1602
New contributors
- Peiyong Lin (lpy)
- Adam Sinnett (quandrum)
Meetings
We did not have a meeting this week because of President's Day in the US.
Announcements, etc
rust-story
, a Rust port of the "Reconstructing Cave Story" video seriesrust-gamedev-kit
, a collection of libraries for gamedev- Periodic Table of Rust Types
- A Dominion simulator, in Rust
- Travis CI is building pull requests
- A terminal tetris game, in Rust