Hello and welcome to the ninth issue of This Week in Rust. This week brings the new for loop, which is very exciting, as well as a bunch of runtime changes and cleanup.

What's cooking on master?

Issue churn was +4 this week. A total of 63 PRs were merged (again).

Breaking Changes

  • The for loop now uses external iterators. This means any code written to use the old internal iterator protocol will no longer work. See the iterator tutorial for more information on how to use it. Related pull requests: #8141, #8184, #8190, #8244. A few uses now require do rather than for because they cannot/have not been implemented in terms of external iterators.
  • unsafe is no longer allowed for functions in extern blocks: they are all unsafe.
  • The extra::dbg module has been removed.
  • uint::range and all its friends have been replaced with an external iterator, that is in the prelude. Code like the following now works: for x in range(0, 10) { println(x.to_str()); }
  • The pipes compiler (the thing driving proto!) has been removed, as it saw limited use, was very old, and was a significant maintenance burden.
  • PortSet has been removed from std, as the new scheduler does not support it.
  • A bunch of old task APIs have been removed, aslo in preparation for the new schduler.
  • is_utf8 now rejects overlong encodings.
  • The iterator adaptors no longer have the Iterator suffix, same with str and vec iterators as well.

newrt changes

A bunch of newrt things landed this week, so it gets its own section.

Notable library additions, bugfixes, and cleanup

Notable compiler additions, bugfixes, and cleanup

Documentation, tools, and other stuff


The Tuesday meeting this week was quite meaty. I'm not going to try to summarize it, as it seems no real decisions were made.

Discussion + Blog posts

External projects