Skip to content
@extism

Extism

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

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:

Type Language Source Code Package
Rust SDK Rust SDK https://github.com/extism/extism/tree/main/runtime Crates.io
JS SDK JS SDK https://github.com/extism/js-sdk
(supports Web, Node, Deno & Bun!)
NPM
Elixir SDK Elixir SDK https://github.com/extism/elixir-sdk Hex
Go SDK Go SDK https://github.com/extism/go-sdk Go mod
Haskell SDK Haskell SDK https://github.com/extism/haskell-sdk Hackage
Java SDK Java SDK https://github.com/extism/java-sdk Sonatype
.NET SDK .NET SDK https://github.com/extism/dotnet-sdk
(supports C# & F#!)
Nuget
OCaml SDK OCaml SDK https://github.com/extism/ocaml-sdk opam
Perl SDK Perl SDK https://github.com/extism/perl-sdk N/A
PHP SDK PHP SDK https://github.com/extism/php-sdk Packagist
Python SDK Python SDK https://github.com/extism/python-sdk PyPi
Ruby SDK Ruby SDK https://github.com/extism/ruby-sdk RubyGems
Zig SDK Zig SDK https://github.com/extism/zig-sdk N/A
C SDK C SDK https://github.com/extism/extism/tree/main/libextism N/A
C++ SDK C++ SDK https://github.com/extism/cpp-sdk N/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:

Type Language Source Code Package
Rust PDK Rust PDK https://github.com/extism/rust-pdk Crates.io
JS PDK JS PDK https://github.com/extism/js-pdk N/A
Go PDK Go PDK https://github.com/extism/go-pdk Go mod
Haskell PDK Haskell PDK https://github.com/extism/haskell-pdk Hackage
AssemblyScript PDK AssemblyScript PDK https://github.com/extism/assemblyscript-pdk NPM
.NET PDK .NET PDK https://github.com/extism/dotnet-pdk
(supports C# & F#!)
https://www.nuget.org/packages/Extism.Pdk
C PDK C PDK https://github.com/extism/c-pdk N/A
Zig PDK Zig PDK https://github.com/extism/zig-pdk N/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: [email protected]

Popular repositories Loading

  1. extism extism Public

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

    Rust 4.6k 124

  2. go-sdk go-sdk Public

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

    Go 92 10

  3. js-sdk js-sdk Public

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

    TypeScript 91 12

  4. go-pdk go-pdk Public

    Extism Plug-in Development Kit (PDK) for Go

    Go 63 11

  5. js-pdk js-pdk Public

    Write Extism plugins in JavaScript & TypeScript

    Rust 63 16

  6. rust-pdk rust-pdk Public

    Extism Plug-in Development Kit (PDK) for Rust

    Rust 50 9

Repositories

Showing 10 of 67 repositories
  • moonbit-pdk Public

    Extism PDK for the MoonBit programming language.

    extism/moonbit-pdk’s past year of commit activity
    MoonBit 24 Apache-2.0 1 0 0 Updated Dec 17, 2024
  • extism Public

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

    extism/extism’s past year of commit activity
    Rust 4,566 BSD-3-Clause 124 28 2 Updated Dec 17, 2024
  • php-sdk Public

    Extism PHP Host SDK - easily run WebAssembly modules / plugins from PHP applications

    extism/php-sdk’s past year of commit activity
    PHP 20 BSD-3-Clause 4 0 0 Updated Dec 16, 2024
  • chicory-sdk Public

    Experimental Java SDK based on the Chicory Runtime

    extism/chicory-sdk’s past year of commit activity
    Java 7 BSD-3-Clause 5 3 2 Updated Dec 14, 2024
  • cpp-sdk Public

    Extism C++ Host SDK - easily run WebAssembly modules / plugins from C++ applications

    extism/cpp-sdk’s past year of commit activity
    C++ 9 BSD-3-Clause 3 3 1 Updated Dec 13, 2024
  • cpp-pdk Public

    Extism Plug-in Development Kit (PDK) for C++

    extism/cpp-pdk’s past year of commit activity
    C++ 2 BSD-3-Clause 0 1 0 Updated Dec 12, 2024
  • perl-sdk Public

    Extism Perl Host SDK - easily run WebAssembly modules / plugins from Perl applications

    extism/perl-sdk’s past year of commit activity
    Perl 6 0 0 0 Updated Dec 11, 2024
  • zig-sdk Public

    Extism Zig Host SDK - easily run WebAssembly modules / plugins from Zig applications

    extism/zig-sdk’s past year of commit activity
    Zig 25 BSD-3-Clause 1 0 1 Updated Dec 11, 2024
  • dotnet-sdk Public

    Extism .NET Host SDK - easily run WebAssembly modules / plugins from C# and F# applications

    extism/dotnet-sdk’s past year of commit activity
    C# 35 BSD-3-Clause 1 0 0 Updated Dec 11, 2024
  • js-pdk Public

    Write Extism plugins in JavaScript & TypeScript

    extism/js-pdk’s past year of commit activity
    Rust 63 BSD-3-Clause 16 13 0 Updated Dec 10, 2024

Top languages

Loading…

Most used topics

Loading…