Go WASM

Open-source Go projects categorized as WASM

WebAssembly (abbreviated WASM) is a binary instruction format for a stack-​based virtual machine. WebAssembly is an open standard that defines a portable binary-code format for executable programs, and a corresponding textual assembly language, as well as interfaces for facilitating interactions between such programs and their host environment.

Top 23 Go WASM Projects

  • TinyGo

    Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.

  • Project mention: Cylon: JavaScript framework for robotics, drones, and the Internet of Things | news.ycombinator.com | 2024-05-04
  • Pion WebRTC

    Pure Go implementation of the WebRTC API

  • Project mention: VoRS: Vo(IP) Simple Alternative to Mumble | news.ycombinator.com | 2024-04-19
  • 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
  • go-app

    A package to build progressive web apps with Go programming language and WebAssembly.

  • Project mention: Ask HN: If you were to build a web app today what tech stack would you choose? | news.ycombinator.com | 2023-10-29
  • wazero

    wazero: the zero dependency WebAssembly runtime for Go developers

  • Project mention: Wazero: The zero dependency WebAssembly runtime | news.ycombinator.com | 2024-03-16

    https://github.com/tetratelabs/wazero/releases/tag/v1.7.0

    This includes the final release of the new optimizing compiler, which is a big improvement over the previous one.

    The new version also adds experimental support for threads and snapshot/restore (setjmp/longjmp).

    This is already being used by go-pgquery, all will mean that sqlc won't need to ship to almost copies of wazero (these features had been implemented on a friendly fork, and have now been up-streamed).

  • pigo

    Fast face detection, pupil/eyes localization and facial landmark points detection library in pure Go.

  • wasmer-go

    🐹🕸️ WebAssembly runtime for Go

  • Project mention: Running WebAssembly code in Go | dev.to | 2023-12-12

    The next step is to create a Go project and run our wasm file with some runtime. For this, I chose wasmer-go.

  • deepflow

    :rocket: eBPF-powered observability & zero-code distributed tracing :sparkles:

  • Project mention: Bpftop: Streamlining eBPF performance optimization | news.ycombinator.com | 2024-02-26

    We have implemented zero-code distributed tracing with eBPF. https://github.com/deepflowio/deepflow

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • eggos

    A Go unikernel running on x86 bare metal

  • Project mention: Let's Embed a Go Program into the Linux Kernel | news.ycombinator.com | 2024-04-28
  • wasmtime-go

    Go WebAssembly runtime powered by Wasmtime

  • Project mention: Wazero: Zero dependency WebAssembly runtime written in Go | news.ycombinator.com | 2023-07-01

    [2] https://github.com/bytecodealliance/wasmtime-go

  • wa

    The Wa Programming Language: Simple, maintainable, compiled language for developing WebAssembly software

  • Project mention: Lo – simple WASM native language | news.ycombinator.com | 2024-05-26

    Cool project . I am also designing a Wa language for Wasm (https://github.com/wa-lang/wa), we are currently improving support for the WebGPU library and LSP extension.

  • proxy-wasm-go-sdk

    WebAssembly for Proxies (Go SDK)

  • Project mention: A "Tiny" APISIX Plugin | dev.to | 2023-11-27

    // references: // https://github.com/tetratelabs/proxy-wasm-go-sdk/tree/main/examples // https://github.com/apache/apisix/blob/master/t/wasm/ package main import ( "github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm" "github.com/tetratelabs/proxy-wasm-go-sdk/proxywasm/types" "github.com/valyala/fastjson" ) func main() { proxywasm.SetVMContext(&vmContext{}) } // each plugin has its own VMContext. // it is responsible for creating multiple PluginContexts for each route. type vmContext struct { types.DefaultVMContext } // each route has its own PluginContext. // it corresponds to one instance of the plugin. func (*vmContext) NewPluginContext(contextID uint32) types.PluginContext { return &pluginContext{} } type header struct { Name string Value string } type pluginContext struct { types.DefaultPluginContext Headers []header } func (ctx *pluginContext) OnPluginStart(pluginConfigurationSize int) types.OnPluginStartStatus { data, err := proxywasm.GetPluginConfiguration() if err != nil { proxywasm.LogErrorf("error reading plugin configuration: %v", err) return types.OnPluginStartStatusFailed } var p fastjson.Parser v, err := p.ParseBytes(data) if err != nil { proxywasm.LogErrorf("error decoding plugin configuration: %v", err) return types.OnPluginStartStatusFailed } headers := v.GetArray("headers") ctx.Headers = make([]header, len(headers)) for i, hdr := range headers { ctx.Headers[i] = header{ Name: string(hdr.GetStringBytes("name")), Value: string(hdr.GetStringBytes("value")), } } return types.OnPluginStartStatusOK } // each HTTP request to a route has its own HTTPContext func (ctx *pluginContext) NewHttpContext(contextID uint32) types.HttpContext { return &httpContext{parent: ctx} } type httpContext struct { types.DefaultHttpContext parent *pluginContext } func (ctx *httpContext) OnHttpResponseHeaders(numHeaders int, endOfStream bool) types.Action { plugin := ctx.parent for _, hdr := range plugin.Headers { proxywasm.ReplaceHttpResponseHeader(hdr.Name, hdr.Value) } return types.ActionContinue }

  • hackpad

    The in-browser IDE for Go (by hack-pad)

  • Project mention: Show HN: Advent of Distributed Systems | news.ycombinator.com | 2023-12-12

    Hey! I built a playground called Advent of Distributed Systems (https://aods.cryingpotato.com/) where you can work through the Fly.io distributed systems challenges (https://fly.io/dist-sys/1/) directly in your browser. Running challenges like this directly in the browser has often been the best way for me to get the activation energy to start them since it bypasses all the annoying dev environment setup that has to happen as a precursor to working on it.

    The coding environment was built with another project I'm working on called Cannon (https://cannon.cryingpotato.com/) that aims to let you embed codeblocks of any language in your browser. Right now the Go environment runs on a Modal backend using their sandbox, but I'm hoping to use the excellent work done on Hackpad (https://github.com/hack-pad/hackpad/tree/main) to run the whole thing in your browser, with no network calls necessary, soon.

    Let me know what you think - week 3 is coming out soon!

  • apiclarity

    An API security tool to capture and analyze API traffic, test API endpoints, reconstruct Open API specification, and identify API security risks. 

  • Project mention: Two approaches to make your APIs more secure | dev.to | 2023-08-29

    We'll install APIClarity into a Kubernetes cluster to test our API documentation. We're using a Kind cluster for demonstration purposes. Of course, if you have another Kubernetes cluster up and running elsewhere, all steps also work there.

  • gossamer

    🕸️ Go Implementation of the Polkadot Host

  • luna

    🌙 A really tiny WebAssembly compiler for demonstration and educational purposes. Written in Go and built as one of my quests to conquer the WebAssembly dungeon (by thomscoder)

  • tarmac

    Write as Functions, Deploy as a Monolith or Microservice with WebAssembly

  • Project mention: Interesting projects using WebAssembly | dev.to | 2024-04-08

    Tarmac is a framework that facilitates the creation of WebAssembly applications. According to its official website, "Framework for writing functions, microservices or monoliths with Web Assembly. Tarmac is language-agnostic and offers built-in support for key/value stores like BoltDB, Redis, and Cassandra, traditional SQL databases like MySQL and Postgres, and core features like mTLS authentication and observability." It is a project worth analyzing as it can speed up the implementation of applications you can host in one of the products I mentioned above.

  • go-sqlite3

    Go bindings to SQLite using wazero (by ncruces)

  • Project mention: Show HN: Roast my SQLite encryption at-rest | news.ycombinator.com | 2024-04-30

    Yep, I just made it tweakable at build, which was always the intent, although I expect the default to be popular.

    https://github.com/ncruces/go-sqlite3/blob/67d859a5/vfs/adia...

    That's unfortunate about the default parameters, but note that you can also replace the KDF altogether (besides just not using it).

    You just need to implement this interface, with any HBSH construction and KDF:

    https://github.com/ncruces/go-sqlite3/blob/67d859a5/vfs/adia...

    If you keep the HBSH and change the KDF, your file format will be “compatible.”

  • hive

    Function scheduler for Go & WebAssembly (by suborbital)

  • capsule

    A Capsule application is a runner (or launcher) of wasm functions. Capsule HTTP can serve the functions through HTTP (it’s possible to use Capsule as a simple CLI with Capsule CLI). And soon: NATS and MQTT (by bots-garden)

  • go-wasm-http-server

    Embed your Go HTTP handlers in a ServiceWorker and emulate an HTTP server!

  • wasm-to-oci

    Use OCI registries to distribute Wasm modules

  • gweb

    🌐 Interact with browser from Go. Manually crafted WebAPI interoperation library.

  • gtree

    Using either Markdown or Programmatically to generate trees🌳 and directories📁, and to verify directories🔍. Provide CLI, Golang library and Web.

  • Project mention: gtree CLI built to WASM with WASI support🌳! | /r/commandline | 2023-08-27
  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020).

Go WASM related posts

Index

What are some of the best open-source WASM projects in Go? This list will help you:

Project Stars
1 TinyGo 14,584
2 Pion WebRTC 12,849
3 go-app 7,719
4 wazero 4,600
5 pigo 4,306
6 wasmer-go 2,745
7 deepflow 2,433
8 eggos 2,200
9 wasmtime-go 764
10 wa 739
11 proxy-wasm-go-sdk 665
12 hackpad 509
13 apiclarity 481
14 gossamer 420
15 luna 308
16 tarmac 311
17 go-sqlite3 305
18 hive 289
19 capsule 285
20 go-wasm-http-server 276
21 wasm-to-oci 239
22 gweb 203
23 gtree 201

Sponsored
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com