Shipping Jco 1.0, WASI 0.2
— 2024-04-03

On this blog I usually post about technical explorations in programming languages, API design, asynchronous computing, and so on. More recently I've re-started my work on WebAssembly, WASI, and their integration with Rust. I expect that work to eventually become more technical again; but my involvement there for the past year has mostly been focused on process and people. And I wanted to take a brief moment to talk about it, because that's the kind of work that's often easily overlooked. And I'd like to take a little victory lap for a second (as a treat).

I can proudly say: I helped ship WASI 0.2! Not just a part of it, but I helped make sure we worked through the last key blocker. And mostly on time at that 1! And I'm super proud of it! The entire project was an incredible team effort - it's hard to understate how hard everyone involved has worked on this. And around five years in the making too. My involvement with the actual design and implementation was minimal, and I was mostly involved in the second half of that period. But I can say I've helped in the following ways:


When first asked to provide estimates I said something along the lines of: "I expect we'll be able to ship in late November at the soonest, but most likely December. December will be tricky because of holidays, but I don't think we'll slip past January." And Jco ended up being ready in mid-January, with WASI 0.2 shipping on January 25th. I think that counts as mostly on time, right?


WASI 0.3's async model is going to be an enormous step up from the current status quo though - and timing-wise the work on that seems to be developing faster than people anticipated. However back in 2022, I was worried that if WASI 0.2 didn't ship with async support, there would be a chance adoption would be too slow to make it to WASI 0.3. The state now is that key industry use cases are unlocked by WASI 0.2, and WASI 0.3 is mainly about making that work better and faster. And at least to me so far this seems to have been the right approach.

And that's it. Unfortunately no cool type theory bits in this post (I like those a lot; I will talk about type systems for hours if left unchecked) - but I still wanted to share a little bit about my other recent work. I often catch myself in the mindset that if I'm not directly coding or designing features, it doesn't actually count as having worked on something. But that's probably unfair to myself: I ended up spending several hundred hours doing useful work to help ship WASI 0.2. And I believe I've actually managed to move the needle on getting WASI in people's hands sooner. Doing things I wasn't necessarily the most comfortable with, but it ended up working out! And while I'm not usually one to gloat, I felt like maybe, perhaps, I do get to gloat a little about this.

I'd also be remiss if I didn't point out that the folks in both the WASI subgroup committee and in the Bytecode Alliance are such a pleasure to work with. People regularly talk about how smart they are, and the quality of the work they produce - but I'd like to instead emphasize just how kind and caring they are. Talented people, unafraid to dream big, who care about both their work and each other. WASI 0.2 and Wasm Components are incredibly impressive, and over the next 6-12 months we're going start seeing the first results of the impact it will have in the space of applied computing.3


To provide an early taste: this headline will probably read like marketing hypeware to most people; some company you've likely never heard of claiming order-of-magnitude improvements in a mature technology. But the technical work underpinning it is legit. And while I'm not in a position to vet the exact claims made, they don't at all seem out of line with what I've seen WASI being able to do so far. I expect similar headlines are going to keep following now that WASI 0.2 has been ratified and is starting to be deployed to production. Exciting times!