Skip to content
@extism

Extism

The cross-language framework for building with WebAssembly (wasm).
Extism - the WebAssembly framework

DiscordGitHub Org's starsDownloadsGitHub LicenseGitHub release (with filter)

Overview

Extism is a lightweight framework for building with WebAssembly (Wasm). It supports running Wasm code on servers, the edge, CLIs, IoT, browsers and everything in between. Extism is designed to be "universal" in that it supports a common interface, no matter where it runs.

Note: One of the primary use cases for Extism is building extensible software & plugins. You want to be able to execute arbitrary, untrusted code from your users? Extism makes this safe and practical to do.

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:

  • plug-in systems
  • FaaS platforms
  • code generators
  • web applications
  • & much more...

Run WebAssembly In Your App

Pick a SDK to import into your program, and refer to the documentation to get started:

TypeLanguageSource CodePackage
Rust SDKRust SDKhttps://github.com/extism/extism/tree/main/runtimeCrates.io
JS SDKJS SDKhttps://github.com/extism/js-sdk
(supports Web, Node, Deno & Bun!)
NPM
Elixir SDKElixir SDKhttps://github.com/extism/elixir-sdkHex
Go SDKGo SDKhttps://github.com/extism/go-sdkGo mod
Haskell SDKHaskell SDKhttps://github.com/extism/haskell-sdkHackage
Java SDKJava SDKhttps://github.com/extism/java-sdkSonatype
.NET SDK.NET SDKhttps://github.com/extism/dotnet-sdk
(supports C# & F#!)
Nuget
OCaml SDKOCaml SDKhttps://github.com/extism/ocaml-sdkopam
Perl SDKPerl SDKhttps://github.com/extism/perl-sdkN/A
PHP SDKPHP SDKhttps://github.com/extism/php-sdkPackagist
Python SDKPython SDKhttps://github.com/extism/python-sdkPyPi
Ruby SDKRuby SDKhttps://github.com/extism/ruby-sdkRubyGems
Zig SDKZig SDKhttps://github.com/extism/zig-sdkN/A
C SDKC SDKhttps://github.com/extism/extism/tree/main/libextismN/A
C++ SDKC++ SDKhttps://github.com/extism/cpp-sdkN/A

Compile WebAssembly to run in Extism Hosts

Extism Hosts (running the SDK) must execute WebAssembly code that has a PDK library compiled in to the .wasm binary. PDKs make it easy for plug-in / extension code authors to read input from the host and return data back, read provided configuration, set/get variables, make outbound HTTP calls if allowed, and more.

Pick a PDK to import into your Wasm program, and refer to the documentation to get started:

TypeLanguageSource CodePackage
Rust PDKRust PDKhttps://github.com/extism/rust-pdkCrates.io
JS PDKJS PDKhttps://github.com/extism/js-pdkN/A
Go PDKGo PDKhttps://github.com/extism/go-pdkGo mod
Haskell PDKHaskell PDKhttps://github.com/extism/haskell-pdkHackage
AssemblyScript PDKAssemblyScript PDKhttps://github.com/extism/assemblyscript-pdkNPM
.NET PDK.NET PDKhttps://github.com/extism/dotnet-pdk
(supports C# & F#!)
https://www.nuget.org/packages/Extism.Pdk
C PDKC PDKhttps://github.com/extism/c-pdkN/A
Zig PDKZig PDKhttps://github.com/extism/zig-pdkN/A

Support

Discord

If you experience any problems or have any questions, please join our Discord and let us know. Our community is very responsive and happy to help get you started.

Usage

Head to the project website for more information and docs. Also, consider reading an overview of Extism and its goals & approach.

Contribution

Thank you for considering a contribution to Extism, we are happy to help you make a PR or find something to work on!

The easiest way to start would be to join the Discord or open an issue on the extism/proposals issue tracker, which can eventually become an Extism Improvement Proposal (EIP).

For more information, please read the Contributing guide.


Who's behind this?

Extism is an open-source product from the team at:

Reach out and tell us what you're building! We'd love to help:hello@dylibso.com

Popular repositories Loading

  1. extism extismPublic

    The framework for building with WebAssembly (wasm). Easily & securely load wasm modules, move data, call functions, and build extensible apps.

    Rust 5.7k 165

  2. go-sdk go-sdkPublic

    Extism Go SDK - easily run WebAssembly modules in your Go applications

    Go 182 16

  3. js-sdk js-sdkPublic

    Run Extism WebAssembly plug-ins / functions from JavaScript (supports major browsers, Node.js, Deno, Bun, and Cloudflare Workers)

    TypeScript 135 13

  4. go-pdk go-pdkPublic

    Extism Plug-in Development Kit (PDK) for Go

    Go 92 20

  5. js-pdk js-pdkPublic

    Write Extism plugins in JavaScript & TypeScript

    Rust 92 21

  6. rust-pdk rust-pdkPublic

    Extism Plug-in Development Kit (PDK) for Rust

    Rust 73 13

Repositories

Showing 10 of 68 repositories

Top languages

Loading…

Most used topics

Loading…