Extism: Make all software programmable with WebAssembly

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • extism

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

  • for install size, it depends on your architecture, we use wasmtime under the hood so a lot of the size is related to that: https://wasmtime.dev/

    You can also take a look at our binary releases to get an idea: https://github.com/extism/extism/releases/tag/v0.1.0

    In terms of memory usage, as the host you can constrain the memory that your plugin can use. There is a minimum of one Wasm page (64KB in this case).

  • wasmtime

    A fast and secure runtime for WebAssembly

  • for install size, it depends on your architecture, we use wasmtime under the hood so a lot of the size is related to that: https://wasmtime.dev/

    You can also take a look at our binary releases to get an idea: https://github.com/extism/extism/releases/tag/v0.1.0

    In terms of memory usage, as the host you can constrain the memory that your plugin can use. There is a minimum of one Wasm page (64KB in this case).

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • wit-bindgen

    A language binding generator for WebAssembly interface types

  • Is the interface defined through wit?

    https://github.com/bytecodealliance/wit-bindgen

  • extism-sqlite3

    Use Extism plugins from SQLite3

  • We also have some example projects in the GitHub org, pointing out this one specifically, to create a UDF engine in sqlite3: https://github.com/extism/extism-sqlite3

  • WASI

    WebAssembly System Interface

  • I'm trying to figure out what Extism is actually providing here.

    The underlying runtime appears to be Wasmtime, an existing project that you can use separately.

    For the system API, Extism supports WASI (a POSIX-like API for WASM) which is already supported by Wasmtime. However it sounds like it also has a different, non-WASI API that provides similar functionality. I'm curious to hear a compare/contrast between these two system APIs, or what motivated inventing a new non-WASI system API. It does appear that WASI is in its early days; WASI was announced in 2019 (https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webas...) but it appears that all of the specific proposals are still early stage and far from being standardized (https://github.com/WebAssembly/WASI/blob/main/Proposals.md).

    For the API, Extism provides a C API/ABI that can be called through FFI, but AIUI Wasmtime already has such an API: https://docs.wasmtime.dev/c-api/

    Basically I'm trying to understand the conceptual difference between this project and Wasmtime.

  • extism-fsnotify

    Example showing extensibility built into a file system.

  • I hope Extism can help you make that happen!

    Here’s an example of a Go app that calls Extism plugins in case it helps:

    https://github.com/extism/extism-fsnotify

  • gc

    Branch of the spec repo scoped to discussion of GC integration in WebAssembly

  • > I don't think WASM should/would unify the GC across memory models

    WASM already has a GC proposal[0] which is already at the "Implementation stage"[1] so it looks like this IS going to happen, although it's uncertain if language runtimes like Go will actually make use of the feature, or what.

    [0]: https://github.com/WebAssembly/gc/blob/main/proposals/gc/Ove...

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • proposals

    Tracking WebAssembly proposals (by WebAssembly)

  • [1]: https://github.com/WebAssembly/proposals

    A glance of the overview and spec seems to indicate that WASM will provide some primitive data types, and any GC language can build their implementation on top of it. As I understand it, it's heavily based on Reference Types[3], which allows acting on host-provided types, and is already considered part of the spec [4]. It doesn't remove the need for the 5 different runtimes to have their own GC, but it lowers the bulk that the runtimes need to carry around, and offloads some of that onto the WASM runtime instead.

    [3]: https://github.com/WebAssembly/reference-types/blob/master/p...

  • reference-types

    Discontinued Proposal for adding basic reference types (anyref)

  • [1]: https://github.com/WebAssembly/proposals

    A glance of the overview and spec seems to indicate that WASM will provide some primitive data types, and any GC language can build their implementation on top of it. As I understand it, it's heavily based on Reference Types[3], which allows acting on host-provided types, and is already considered part of the spec [4]. It doesn't remove the need for the 5 different runtimes to have their own GC, but it lowers the bulk that the runtimes need to carry around, and offloads some of that onto the WASM runtime instead.

    [3]: https://github.com/WebAssembly/reference-types/blob/master/p...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts