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?
86 pull requests were merged this week. This ties for week with most merged pull requests. A week in September 2013 is the other record holder. To cope with the massively inflated queue, there were two roll-ups (not counted).
Breaking Changes
extern modis now writtenextern crate.- The big codegen compiler flags pull request I warned about last week indeed
landed. Many
-Zoptions are now under-C, and a lot of previously-bare flags (such as--linker) are now also under-C. std::utilhas been removed.swapandreplacenow live instd::mem.dois once again a reserved word.extra::rational,extra::bigint, andextra::complexhave been moved intolibnumas part of the libextra dissolution.- The borrow checker's treatment of closures has been revamped. It fixes all known soundness issues with closures. Unfortunately, it also breaks some programs that used to compile.
- Channels have been rewritten
to use the internally-upgradable design that was hashed out on the
list.
Rather than having a separate
SharedChan,Chanis now cloneable. - The
SeekAPI has changed a bit. - The breaking changes in the first
rollup are the removal of
ptr::offset,ptr::mut_offset,ptr::is_null, andptr::is_not_nullas free functions and the movement ofextra::hexandextra::base64tolibserialize. std::num::Orderablehas been removed.std::ptrsaw some more cleanup, most notably every function ending in_ptrhas had that suffix removed.to_unsafe_ptrandto_mut_unsafe_ptrhave also been removed.
Other Changes
- Process arguments and environment variables now use the
from_utf8_lossyfunction that was introduced last week, rather than failing on invalid utf8. Additionally, there are nowargs_as_bytesandenv_as_bytesfunctions to get arguments and the environment raw. - The makefiles have been
refactored, and there is now a
make helpandmake tipsfor hints on how to use the build system. - In yet another multi-thousand-line patch by eddyb,
ast_map::Pathno longer requires cloning, due to clever devilry. - green task spawning was sped up by almost 5x.
- We now bundle and use compiler-rt for intrinsics rather than using the system libgcc. We still depend on libgcc for unwinding,
- The pidigits benchmark was made 20x faster by optimizing bigint.
New Contributors
- Bruno de Oliveira Abinader
- Eduard Bopp
- Edward Wang
- Jake Kerr
- Liigo Zhuang
- Matthijs van der Vleuten
- Peiyong Lin
- Tobias Bucher
- WebeWizard
Weekly Meeting
The weekly
meeting
discussed struct construction sugar, what to allow in statics, the crate
keyword, a finally macro, and implicit trait bounds.
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 18 PRs.
Notable additions
- Bruno Abinader landed several DOM fixes, including #1648 and #1646
- Hyun June Kim landed initial
:hoversupport in #1633 - Keegan McAllister restored task failure handling in #1691
- Rui renamed the .rc files to .rs in the main Servo repository in #1617
- Simon Sapin made some updates to attribute selector namespaces in #1653 and #1661
- Lars Bergstrom began the removal of non-script-crate
@muts in preparation for a Rust upgrade in #1663 - Austin King added some
window.consolesupport in #1666 - Marek Šuppa landed a fix to our contributing document in #1649
- Patrick Walton made extensive optimizations to style sharing in #1644
New contributors
- Austin King (ozten)
- Marek Šuppa (mrshu)
Meetings
In this week's meeting, we discussed our embedding plans, ACID2 status, improving the availability of E-Easy issues, and doing a Rust upgrade (we are more than one month behind Rust master).
Announcements, etc
There is simply too much happening in the community to keep track of! I recommend browsing the Rust subreddit for goings-on. Some notable ones:
- Rust By Example: HashMap
- State machines using phantom types
- golo-lang.org's homepage design adapted to Rust. There is some discussion on reddit about this.