This Week in Rust
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.
- 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 to
TaskBuilderhas seen some cleanup to actually use the emerging “builder” pattern.
- As part of
std::nums continued revamp, the
Realtrait has been dismantled in favor of the
- 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 a
extra::timehas been liberated into a
EnumSethas been moved into
Integertrait has migrated to
std::hashhas been rewritten and redesigned.
std::hashmaphave been moved into
- 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
MutexArcno longer has a
- rustdoc has seen a bunch of minor fixes.
- More noteworthy, there is now syntax highlighting in rustdoc output!
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.
- Axel Viala
- Craig MacKenzie
- Douglas Young
- Dylan Braithwaite
- Ehsanul Hoque
- Sterling Greene
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.
- 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 contruction even more in #1602
- Peiyong Lin (lpy)
- Adam Sinnett (quandrum)
We did not have a meeting this week because of President’s Day in the US.