wit-bindgen VS spin

Compare wit-bindgen vs spin and see what are their differences.

wit-bindgen

A language binding generator for WebAssembly interface types (by bytecodealliance)

spin

Spin is the open source developer tool for building and running serverless applications powered by WebAssembly. (by fermyon)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
wit-bindgen spin
27 22
877 4,844
4.6% 5.7%
9.4 9.9
3 days ago 6 days ago
Rust Rust
Apache License 2.0 Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

wit-bindgen

Posts with mentions or reviews of wit-bindgen. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-15.
  • Wit-Bindgen
    1 project | news.ycombinator.com | 25 Jan 2024
  • WASM by Example
    16 projects | news.ycombinator.com | 15 Nov 2023
    The component model is already shipping in Wasmtime, and will be stable for use in Node.js and in browsers via jco (https://github.com/bytecodealliance/jco) soon. WASI Preview 2 will be done in December or January, giving component model users a stable set of interfaces to use for scheduling, streams, and higher level functionality like stdio, filesystem, sockets, and http on an opt-in basis. You should look at wit-bindgen (https://github.com/bytecodealliance/wit-bindgen) to see some of the languages currently supported, and more that will be mature enough to use very soon (https://github.com/bytecodealliance/componentize-py)

    Right now jco will automatically generate the JS glue code which implements a Component Model runtime on top of the JS engine's existing WebAssembly implementation. So, yes, Components are a composition of Wasm Modules and JS code is handling passing values from one module/instance to another. You still get the performance benefits of running computation in Wasm.

    One day further down the standardization road, we would like to see Web engines ship a native implementation of the Component Model, which might be able to make certain optimizations that the JS implementation cannot. Until then you can consider jco a polyfill for a native implementation, and it still gives you the power to compose isolated programs written in many languages and run them in many different contexts, including the Web.

    (Disclosure: I am co-chair of WASI, Wasmtime maintainer, implemented many parts of WASI/CM)

  • Spin 2.0 – open-source tool for building and running WASM apps
    13 projects | news.ycombinator.com | 4 Nov 2023
    Thank you!

    To your point, the primary consideration for choosing the languages is their support for WebAssembly, and WASI in particular.

    Due to Spin's heavy use of WASI and the component model, languages that have first party support in the WIT bindings generator (https://github.com/bytecodealliance/wit-bindgen) are the easiest to implement, followed by languages that can be built on top of the support for those with first party support.

    For example, the JavaScript support is built by embedding QuickJS (in particular, Shopify's Javy project — https://github.com/fermyon/spin-js-sdk), which then uses the Rust SDK.

  • Rust + WASM + Typescript [+ React]
    7 projects | /r/rust | 18 Jul 2023
    There are many options, but what worked best for me is compiling with cargo-wasi and loading the resulting Wasm file with browser_wasi_shim. Using wasm32-wasi instead of wasm32-unknown-unknown requires a bit more work (the communication with JS has to be set up manually), but gives the flexibility of having just a Wasm file that can be dropped in and loaded dynamically. (There's wit-bindgen for generating wrapping code according to an interface definition but I didn't have much success with it.)
  • Introducing - Wasmer Runtime 4.0
    3 projects | /r/rust | 22 Jun 2023
    I've been playing with creating a go version of the abi for use with wit-bindgen because the current one uses cgo https://github.com/bytecodealliance/wit-bindgen
  • What in Rust is equivalent to C++ DLLs (shared libraries), or what do I need to do to support extensions in my app?
    7 projects | /r/rust | 21 May 2023
    wit-bindgen - Language Binding Generator for WASM Interface Type
  • Quick tip: Numeromancy, WebAssembly and SingleStoreDB Cloud
    2 projects | dev.to | 24 Feb 2023
    wit-bindgen-rust = { git = "https://github.com/bytecodealliance/wit-bindgen.git", rev = "60e3c5b41e616fee239304d92128e117dd9be0a7" }
  • Using WASM for a plugin system in Rust? (generate code at runtime and then hot reloading it as a library)
    6 projects | /r/rust | 22 Feb 2023
    Yep, you're right. For this, there are a few options. The ones most relevant to you are fp-bindgen, which targets Wasmer, and wit-bindgen, which targets wasmtime.
  • Introducing Ambient 0.1: a runtime for building high-performance multiplayer games and 3D applications, powered by Rust, WebAssembly and WebGPU
    8 projects | /r/rust | 22 Feb 2023
    Are you evaluating if WebAssembly Component Model, its WIT format and related tooling like wit-bindgen could be a good fit for your multiple languages support?
  • Using SingleStoreDB, WebAssembly and GraphQL
    2 projects | dev.to | 15 Feb 2023
    [package] name = "sentiment" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] wit-bindgen-rust = { git = "https://github.com/bytecodealliance/wit-bindgen.git", rev = "60e3c5b41e616fee239304d92128e117dd9be0a7" } vader_sentiment = { git = "https://github.com/ckw017/vader-sentiment-rust" } lazy_static = "1.4.0" [lib] crate-type = ["cdylib"]

spin

Posts with mentions or reviews of spin. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-04.
  • Git Prom! My Favorite Git Alias
    1 project | dev.to | 5 Jan 2024
    For example, here's a snippet of my Git config for the spin repository:
  • 4 Ways to Participate in Advent of Spin - A Wasm Coding Challenge
    2 projects | dev.to | 4 Dec 2023
    We built (and open-sourced) Spin to make the developer experience easier, and we want to show you this through Fermyon's Advent of Spin. You will be presented with fun coding challenges that'll help you learn to build with Spin and WebAssembly.
  • Creating a Server Side Rust WebAssembly App with Spin 2.0
    1 project | dev.to | 6 Nov 2023
    Fermyon Spin is the open source tool for building serverless functions with WebAssembly. We’re going to use a few Spin commands to go from blinking cursor to deployed app in just a few minutes. Along the way, we’ll walk through a Spin project and see some of the features of Spin 2.0.
  • Flawless – Durable execution engine for Rust
    7 projects | news.ycombinator.com | 25 Oct 2023
    linky: https://github.com/fermyon/spin#readme (Apache 2; and while I don't see any CLA, interestingly they do require GPG signed commits: https://developer.fermyon.com/spin/contributing-spin#committ... )
  • Building microservices in Rust with Spin
    1 project | dev.to | 18 May 2023
    To install the binary file on Windows, download the Windows binary release, unzip the file, and place the spin.exe file in your system path.
  • Spin 1.0 — The Developer Tool for Serverless WebAssembly
    17 projects | dev.to | 28 Mar 2023
    We are delighted to introduce Spin 1.0, the first stable release of the open source developer tool for building serverless applications with WebAssembly (Wasm)! Since we first introduced Spin last year, we have been hard at work together with the community on building a frictionless developer experience for building and running serverless applications with Wasm.
  • Spin – Build Microservices with WebAssembly
    1 project | news.ycombinator.com | 26 Mar 2023
  • Waggy v0.3 Released!!
    3 projects | /r/softwaredevelopment | 4 Dec 2022
    “Waggy is used for writing WAGI (WebAssembly Gateway Interface) compliant API routers/individual handlers. WAGI was developed by deislabs for accepting and routing incoming HTTP requests with WebAssembly via a configuration file (modules.toml) defining routes, modules, volumes to be mounted, etc. WAGI can run as a stand alone server, or with a framework such as the Fermyon/Spin framework Go SDK. Waggy allows for the flexibility of handling the routing via the modules.toml, or to define it code (Waggy is written in Go), as well as various pieces of convenient functionality such as the new features described above!!”
  • WasmEdge
    9 projects | news.ycombinator.com | 29 Nov 2022
    They’re VC-funded and will vendor lock-in you. See their response to my discussion:

    https://github.com/fermyon/spin/discussions/861

    With WasmEdge there is no vendor lock-in, it’s opaque and standards-based

  • Recommendations for a resource efficient backend framework?
    1 project | /r/webdev | 15 Oct 2022
    What language do you want? And how experimental are you wanting to go? This project is crazy cool https://github.com/fermyon/spin , but might be harder to work with if you’re not willing to use rust :p, think they might have made it easy for c# too though

What are some alternatives?

When comparing wit-bindgen and spin you can also consider the following projects:

lunatic - Lunatic is an Erlang-inspired runtime for WebAssembly

wasmCloud - wasmCloud allows for simple, secure, distributed application development using WebAssembly components and capability providers.

kwasm - Proof of concept React-ish UI library, powered by WebAssembly

webassembly-tour - ⚙️ Take you through a tour of WebAssembly (WASM targets on WASI) with wasmCloud, Krustlet, WAGI, etc. 🌟 Give it a star if you like it.

component-model - Repository for design and specification of the Component Model

wasi-experimental-http - Experimental outbound HTTP support for WebAssembly and WASI

distribution-spec - OCI Distribution Specification

spec - WebAssembly for Proxies (ABI specification)

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

bartholomew - The Micro-CMS for WebAssembly and Spin