Hi y’all! After some time away on mental health leave (which you can read more about here if you’re curious), I’m fully back to work at the Mozilla Rust team. I won’t be returning to Lang Team or Async work, but will instead be working full-time on compiler engineering. The first goal is to work with Zoxc and others to help ship parallel rustc. After that, there’s tons to do on the trait system. I’m very excited about focusing on some actual Rust programming.| Aaron Turon
Lock-freedom without garbage collection| aturon.github.io
Zero-cost futures in Rust| aturon.github.io
Grief has been in my life for two years. It took me by surprise, and it changed everything.| Aaron Turon
I usually start with some pivotal moment and work outward from there. Leaving my religion. Getting on antidepressants. Starting therapy. My partner coming out as trans. Starting therapy again. It doesn’t really matter; the story of my mental illness and the story of my life are the same story.| Aaron Turon
When there are multiple ways to resolve dependencies, Cargo generally chooses the newest possible version. The goal of this post is to explain why Cargo works this way, and how that rationale relates to several recent discussions, including:| Aaron Turon
turon’s web site| Aaron Turon
In the previous post in this series, I recounted an early lesson for the Rust Core Team about working in the open. In this post, I want to talk about the delicate interplay between listening and trust when doing design in the open.| Aaron Turon
For me, most weeks working on Rust are fun — exhilarating, even. But, just like with anything else, some weeks are hard.| Aaron Turon
The networking working group is pushing hard on async/await notation for Rust, and @withoutboats in particular wrote a fantastic blog series working through the design space (final post here).| Aaron Turon
Another topic of discussion at the Berlin Rust All Hands was the long-term story around Cargo, Xargo, and Rustup. The latter two tools are both involved in managing your Rust toolchain, with Xargo allowing you to build custom stds and Rustup managing pre-built artifacts for mainstream targets. Xargo is most commonly used for cross-compiling to less common platforms, but can also be used to customize the standard library on mainstream platforms.| Aaron Turon
As of this morning, the futures crate version 0.2.0 is now available on crates.io! You can get the full low-down on the changes from my earlier post; here I’ll review the overall roadmap and what this release means.| Aaron Turon
One of the big requests from the Domain Working Groups for Rust 2018 is a richer feature set for framework- or domain-specific workflows in Cargo. At the simplest level, that might look like project templates – the ability to direct cargo new to start with a custom template defined in crates.io. That’s already enough to get you cooking with frameworks like QuiCLI, which today involve a fixed set of initial scaffolding that you can fill in.| Aaron Turon
Specialization holds the dubious honor of being among the oldest post-1.0 features remaining in unstable limbo. That’s for good reason, though: until recently, we did not know how to make it sound.| Aaron Turon
We have a problem: the average queue of ready-to-test PRs to the main Rust repo has been steadily growing for a year. And at the same time, the likelihood of merge conflicts is also growing, as we include more submodules and Cargo dependencies that require updates to Cargo.lock.| Aaron Turon
On behalf of the futures-rs team, I’m very happy to announce that the master branch is now at 0.2: we have a release candidate! Barring any surprises, we expect to publish to crates.io in the next week or two.| Aaron Turon
This week has been so amazing that I just had to write about it. Here’s a quick list of some of what went down in one week:| Aaron Turon
TL;DR: This post proposes to deprecate the std facade, instead having a unified std that uses target- and capability-based cfgs to control API availability. Leave comments on internals!| Aaron Turon
The Libs Team met today to discuss a weighty topic: what is its mission as a team, and are we set up to achieve it?| Aaron Turon
The call for #Rust2018 blog posts has generated a fantastic set of responses so far, and there’s already an emerging consensus around much of the technical focus for the year. Since I largely agree with what others have said on that front, I want to focus my post on the people side of things: what kind of impact do we want to make on people, both contributors and customers, in 2018?| Aaron Turon
It’s been a week since my last post on Rust’s module system. Unsurprisingly, the strawman proposal in that post garnered a lot of commentary–174 comments in one week!–with sentiments ranging from| Aaron Turon
As part of the Ergonomics Initiative, I, @withoutboats and several others on the Rust language team have been taking a hard look at Rust’s module system; you can see some earlier thoughts here and discussion here.| Aaron Turon
Rust’s impl specialization is a major language feature that appeared after Rust 1.0, but has yet to be stabilized, despite strong demand.| Aaron Turon
I’ve had the pleasure in recent weeks of working on Chalk, the project that Niko’s been blogging about:| Aaron Turon
Specialization has been available in nightly Rust for over a year, and we’ve recently been thinking about the steps needed to stabilize it.| Aaron Turon
I recently wrote about the importance of asynchronous I/O in Rust and the aims of the new futures library. This post deepens the story by explaining the core design of that library. If you’re looking for more on the use of the library, you’ll have to wait; we’re very actively working on the Tokio stack and will have more to say once that’s settled down a bit.| Aaron Turon
If you’ve been following Rust in the last month, you’ve probably seen the announcements of the Futures library and the Tokio framework that sits on top of it. There’s been some confusion about how these projects fit together, and what the overall story is shaping up to be.| Aaron Turon
One of the key gaps in Rust’s ecosystem has been a strong story for fast and productive asynchronous I/O. We have solid foundations, like the mio library, but they’re very low level: you have to wire up state machines and juggle callbacks directly.| Aaron Turon
A programming language is much more than its compiler and standard library. It’s a community. Tools. Documentation. An ecosystem. All of these elements affect how a language feels, its productivity, and its applicability.| Aaron Turon
At the heart of Rust’s open development is the RFC process. Every major change to the language, compiler, core libraries, tooling, and policy go through an RFC writeup and consensus-building process. The process served us incredibly well in clarifying our technical direction on the road to 1.0, and has continued to be highly active since then, with on average about 2 RFCs merged every week.| Aaron Turon
TL;DR: since before Rust 1.0, we’ve wanted to be able to return an unboxed closure or avoid spelling out huge iterator types. This blog post revives the old impl Trait proposal, and discusses the broad tradeoffs between two different ways of carrying it out.| Aaron Turon
TL;DR: specialization supports clean, inheritance-like patterns out of the box. This post explains how, and discusses the interaction with the “virtual structs” saga.| Aaron Turon
TL;DR| Aaron Turon