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 mod
is now writtenextern crate
.- The big codegen compiler flags pull request I warned about last week indeed
landed. Many
-Z
options are now under-C
, and a lot of previously-bare flags (such as--linker
) are now also under-C
. std::util
has been removed.swap
andreplace
now live instd::mem
.do
is once again a reserved word.extra::rational
,extra::bigint
, andextra::complex
have been moved intolibnum
as 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
,Chan
is now cloneable. - The
Seek
API 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_null
as free functions and the movement ofextra::hex
andextra::base64
tolibserialize
. std::num::Orderable
has been removed.std::ptr
saw some more cleanup, most notably every function ending in_ptr
has had that suffix removed.to_unsafe_ptr
andto_mut_unsafe_ptr
have also been removed.
Other Changes
- Process arguments and environment variables now use the
from_utf8_lossy
function that was introduced last week, rather than failing on invalid utf8. Additionally, there are nowargs_as_bytes
andenv_as_bytes
functions to get arguments and the environment raw. - The makefiles have been
refactored, and there is now a
make help
andmake tips
for hints on how to use the build system. - In yet another multi-thousand-line patch by eddyb,
ast_map::Path
no 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
:hover
support 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
@mut
s in preparation for a Rust upgrade in #1663 - Austin King added some
window.console
support 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.