zig-spin
spin-js-sdk
zig-spin | spin-js-sdk | |
---|---|---|
1 | 3 | |
9 | 40 | |
- | - | |
7.9 | 7.5 | |
15 days ago | 7 days ago | |
C | Rust | |
MIT License | Apache License 2.0 |
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.
zig-spin
-
Spin 2.0 – open-source tool for building and running WASM apps
Hey, jesdict1!
Check out this community project that adds support for Zig — https://github.com/tensorush/zig-spin.
spin-js-sdk
-
Spin 2.0 – open-source tool for building and running WASM apps
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.
-
Spin 1.0 — The Developer Tool for Serverless WebAssembly
Besides the built-in key/value store, Spin applications can also connect to external databases (such as relational databases, or Redis), or connect to the new class of serverless databases that expose their connections over HTTP. Let's see an example of using a PlanetScale database from TypeScript:
-
Fermyon Spin JavaScript and TypeScript SDK
There's a simple example of using React server-side rendering here: https://github.com/fermyon/spin-js-sdk/tree/main/examples/ja.... We haven't tried anything more advanced than that, yet, but a full-blown isomorphic app should work fine in theory.
The main limitation at the moment is that we only support a handful of Web APIs (e.g. `fetch`, `URL`, etc.) and NodeJS APIs (e.g. `readFile`), as well as QuickJS's built-in ES2020 APIs, so if you try to run an existing app you may find it needs a Web API we don't yet support. If so, please feel free to open an issue on the `spin-js-sdk` repo.
What are some alternatives?
componentize-py
teavm-wasi - Friendly fork of TeaVM with support for WASI and the WebAssembly Component Model
meduza - 🦎 🧜♀️ Zig codebase graph generator that emits a Mermaid class diagram.
spin-fileserver - A static file server implemented as a Spin component
jco - JavaScript tooling for working with WebAssembly Components
spin-trigger-sqs - A trigger plugin for processing SQS messages using Spin
wit-bindgen - A language binding generator for WebAssembly interface types
preview2-prototyping - Polyfill adapter for preview1-using wasm modules to call preview2 functions.
SDL.zig - A shallow wrapper around SDL that provides object API and error handling
spin-plugin-k8s - A Kubernetes Plugin for Fermyon Spin