extism

1.0.1last stable release 8 months ago
Complexity Score
Low
Open Issues
N/A
Dependent Projects
0
Weekly Downloadsglobal
48

License

  • MIT
    • Yesattribution
    • Permissivelinking
    • Permissivedistribution
    • Permissivemodification
    • Nopatent grant
    • Yesprivate use
    • Permissivesublicensing
    • Notrademark grant

Downloads

Readme

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 https://github.com/extism/extism/tree/main/runtime Crates.io JS SDK https://github.com/extism/js-sdk
(supports Web, Node, Deno & Bun!) NPM Elixir SDK https://github.com/extism/elixir-sdk Hex Go SDK https://github.com/extism/go-sdk Go mod Haskell SDK https://github.com/extism/haskell-sdk Hackage Java SDK https://github.com/extism/java-sdk Sonatype .NET SDK https://github.com/extism/dotnet-sdk
(supports C# & F#!) Nuget OCaml SDK https://github.com/extism/ocaml-sdk opam Perl SDK https://github.com/extism/perl-sdk CPAN PHP SDK https://github.com/extism/php-sdk Packagist Python SDK https://github.com/extism/python-sdk PyPi Ruby SDK https://github.com/extism/ruby-sdk RubyGems Zig SDK https://github.com/extism/zig-sdk N/A C SDK https://github.com/extism/extism/tree/main/libextism N/A 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 https://github.com/extism/rust-pdk Crates.io JS PDK https://github.com/extism/js-pdk N/A Go PDK https://github.com/extism/go-pdk Go mod Haskell PDK https://github.com/extism/haskell-pdk Hackage AssemblyScript PDK https://github.com/extism/assemblyscript-pdk NPM .NET PDK https://github.com/extism/dotnet-pdk
(supports C# & F#!) https://www.nuget.org/packages/Extism.Pdk C PDK https://github.com/extism/c-pdk N/A 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: hello@dylibso.com

Dependencies

No runtime dependency information found for this package.

CVE IssuesActive
0
Scorecards Score
4.10
Test Coverage
No Data
Follows Semver
No
Github Stars
4,747
Dependenciestotal
1
DependenciesOutdated
0
DependenciesDeprecated
0
Threat Modelling
No Data
Repo Audits
No Data

Learn how to distribute extism in your own private RubyGems registry

gem install extism
Processing...
Done

15 Releases

RubyGems on Cloudsmith

Getting started with RubyGems on Cloudsmith is fast and easy.