Extism, the WebAssembly framework, hits v1

How we got here, and what v1 means for Extism

Extism, the WebAssembly framework, hits v1

How we got here, and what v1 means for Extism

by: Steve Manuel

wasm framework v1.0 stable

I’ts been just over a year since we first shared Extism, and what a year it has been!

If this is the first time you’ve heard of Extism, it’s a lightweight framework for building with WebAssembly (Wasm). It supports running Wasm code from 15 programming languages (on servers, the edge, CLIs, IoT, browsers and everything in between), and makes it easy to compile Wasm from 8 programming languages. Additionally, Extism adds some extra utilities on top of standard Wasm runtimes. For example, we support persistent memory/module-scope variables, secure & host-controlled HTTP without WASI, runtime limiters & timers, simpler host function linking, and more. Extism users build:

It turns out providing a generic, easy to embed, universal ABI in the form of a WebAssembly runtime sparks the imagination, and we’ve been hard at work to stabilize Extism so it’s rock-solid to build on.

Which brings us to the point of this post… we did it! Extism has officially reached version 1.0.. To reach this milestone, we relied on the contributions of many incredible open source developers, listed here (in no particular order):

THANK YOU for all of your help. Extism is a better project because of you, and we are grateful for every line of code, documentation fix, typo correction, GitHub issue and Discord message.

v1.0 Support

For folks who have been around a while, you may have noticed that we pulled out the Extism SDKs from the core extism/extism repository. This was done so we can improve and release each SDK on its own, and has already helped us ship more, faster.

The only downside to this, is that there are a lot of repositories to find now. So, I’ll drop links to each of the SDK and PDK codebases here. Keep in mind, the best way to get most of these libraries is through their offical package managers, if available!

For completeness, here’s the links to the PDKs as well:

We’d love to hear your feedback, especially around the usability / developer experience of the SDKs and PDKs. We want Extism to work well everywhere, and your program is no exception. To that end, if we don’t have support for a language you’re interested in, please let us know! Either file an issue on the main Extism repository, or reach out on Discord - we’re glad to hear from you.

What’s next?

We released v1.0 with the confidence we wanted to ensure that Extism has everything it needs to be a useful tool for developers to build upon. Supporting a universal ABI and idiomatic libraries for all of the languages we support (both in SDKs and PDKs) meant that we needed to focus on building out, vertically across the language and API axis. Now, we’re excited to be able to spend some time building up, which means more compelling abstractions and higher-level utilities. We’re looking forward to being in the end-user’s shoes for a bit and make more with Extism!

A good example of this is our recent project, Reactables, which brings JSX and parts of React into non-JS languages.

Library Improvements

We’re also going to spend time making each SDK and PDK more idiomatic. We’ll always support the low-level memory access and light abstraction that Extism provides. But we think there’s a lot more we can do to further simplify working with WebAssembly & Extism.

Acknowledgements

It wouldn’t be fair of us to omit a huge debt of gratitude to many of the open source projects that Extism is built upon, or inspired us along the way. We deeply appreciate their dedication to quality and craft. Thanks to all the work put into these projects and to the individuals behind them:

Here to help! 👋

Whether you're curious about WebAssembly or already putting it into production, we've got plenty more to share.

We are here to help, so click & let us know:

Get in touch