wit-bindgen VS rfcs

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

wit-bindgen

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

rfcs

RFC process for Bytecode Alliance projects (by bytecodealliance)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
wit-bindgen rfcs
27 8
870 57
3.8% -
9.4 5.2
5 days ago about 1 month ago
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.
  • 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.
    6 projects | /r/rust | 22 Feb 2023
    Yes, wasm_bindgen is js only. At least for now, in future I would also expect it to migrate to component model. There is also cargo-component which is a way to create modules compatible with component model. You define your module interface in WIT and your dependencies on other wasm modules in the similar way you would define crate dependencies. Alternately there is wit-bindgen that is a codegen tool for multiple languages that also accepts WIT as input.
  • 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?
    8 projects | /r/rust | 22 Feb 2023
    Our plan is to stick with both a Rust host and guest to begin with, and start developing other offerings as required. All of our bindings are implemented on top of wit-bindgen, which acts as our data transfer layer - as long as your guest language is supported by wit-bindgen, you'll be able to use the runtime in some form. (Our bindings make it nicer to use, though πŸ˜†)

rfcs

Posts with mentions or reviews of rfcs. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-05-08.
  • What are the current hot topics in type theory and static analysis?
    15 projects | /r/ProgrammingLanguages | 8 May 2023
    I would add that Equality saturation/E-graphs has become quite a hot topic recently, since their POPL21 paper, with workshops dedicated to applications of e-graphs. They have even recently been added to Cranelift as an IR for optimizations.
  • Blog Post: Next Rust Compiler
    7 projects | /r/rust | 25 Jan 2023
    I think with Cranelift's investment into an e-graph based optimizer (https://github.com/bytecodealliance/rfcs/blob/main/accepted/cranelift-egraph.md) they are well positioned to have quite competitive performance as a backend.
  • Inko in 2023
    3 projects | /r/ProgrammingLanguages | 2 Jan 2023
    They're also actively working in this area, for example the recently added equality saturation framework and the pattern matching DSL it builds on.
  • Wasmtime Reaches 1.0: Fast, Safe and Production Ready!
    5 projects | /r/rust | 20 Sep 2022
    There's an RFC here: https://github.com/bytecodealliance/rfcs/pull/28 and SaΓΊl Cabrera, the person who is leading this effort and implementing the compiler tier, has a work-in-progress draft PR here: https://github.com/bytecodealliance/wasmtime/pull/4907
    5 projects | /r/rust | 20 Sep 2022
    We discussed that a bunch in the RFC: https://github.com/bytecodealliance/rfcs/pull/14 . The conclusion was, in short, that the current Wasmtime production users didn't yet require an LTS release process, and the maintenance of an LTS is pretty onerous, so we would come up with one in the future as those requirements become more clear: https://github.com/bytecodealliance/rfcs/pull/14#discussion\_r708638804

What are some alternatives?

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

lunatic - Lunatic is an Erlang-inspired runtime for WebAssembly

spin - Spin is the open source developer tool for building and running serverless applications powered by WebAssembly.

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.

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

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

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

wasmtime - A fast and secure runtime for WebAssembly

wasmer - πŸš€ The leading Wasm Runtime supporting WASIX, WASI and Emscripten

bartholomew - The Micro-CMS for WebAssembly and Spin

spec - WebAssembly specification, reference interpreter, and test suite.

reference-crdts - Simple, tiny spec-compliant reference implementations of Yjs and Automerge's list types.