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::unstablehas been dismantled. Even as we march towards 1.0 stability, I will still consider changes to any public interface breaking.Bitwise::population_counthas been renamed toBitwise::count_ones.TaskBuilderhas seen some cleanup to actually use the emerging "builder" pattern.- As part of
std::nums continued revamp, theRealtrait has been dismantled in favor of theFloattrait. - 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::testhas been liberated into alibtest.extra::timehas been liberated into alibtime.EnumSethas been moved intolibcollections.- The
Integertrait has migrated tolibnum. std::hashhas been rewritten and redesigned.std::trieandstd::hashmaphave been moved intolibcollections.
Other Changes
- Pull request 12345 was opened. In the spirit of significant arbitrary numbers, it is absolutely menial.
rustdocwill now test code blocks by default, not requiring a "rust" annotation.- Unix domain sockets are now
implemented in
libnative. MutexArcno longer has aFreezebound.- rustdoc has seen a bunch of minor fixes.
- More noteworthy, there is now syntax highlighting in rustdoc output!
- The
unnecessary_parenslint now looks at assignments for extraneous parenthesis. - A bug with infinitely recursing macro errors has been fixed.
std::str::is_utf8has 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
-Zoption 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::stdinis 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
@muts 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
cascademethods 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