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. Learn more →
Top 23 Go WASM Projects
-
TinyGo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
-
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.
-
pigo
Fast face detection, pupil/eyes localization and facial landmark points detection library in pure Go.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
wa
The Wa Programming Language: Simple, maintainable, compiled language for developing WebAssembly software
-
apiclarity
An API security tool to capture and analyze API traffic, test API endpoints, reconstruct Open API specification, and identify API security risks.
-
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)
-
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)
-
gtree
Using either Markdown or Programmatically to generate trees🌳 and directories📁, and to verify directories🔍. Provide CLI, Golang library and Web.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Project mention: Cylon: JavaScript framework for robotics, drones, and the Internet of Things | news.ycombinator.com | 2024-05-04
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
and for reference see how it's done in wazero https://github.com/tetratelabs/wazero/blob/c397a402ad17e495a...
The next step is to create a Go project and run our wasm file with some runtime. For this, I chose wasmer-go.
Project mention: Bpftop: Streamlining eBPF performance optimization | news.ycombinator.com | 2024-02-26We have implemented zero-code distributed tracing with eBPF. https://github.com/deepflowio/deepflow
Project mention: Wazero: Zero dependency WebAssembly runtime written in Go | news.ycombinator.com | 2023-07-01[2] https://github.com/bytecodealliance/wasmtime-go
Very good article, like it.
Chinese characters are a type of pictographs that have some characteristics of QR codes. In fact, there is indeed a word retrieval method called four-corner number, which quickly maps Chinese character graphics to four numbers through some simple formulas, which is especially suitable for one-way encoding and retrieval. For example, the four-corner number of "龍" is coded as 0121, and the code of "兲" is 1080 (please refer to https://github.com/chai2010/im4corner).
In addition, Chinese characters are actually more important as hieroglyphic shapes. For example, we have a "凹语言" (Wa-lang https://github.com/wa-lang/wa/ ) designed for WebAssembly (WASM for short, WebAssembly => WASM => Wa), in which the Chinese characters "凹" and WASM The logo is very similar, and there was even a pronunciation of "wa" in the past.
After the popularization of computers, the function input method has been greatly improved, but there is still a lot of input resistance. For example, in programming, frequent switching between Chinese character names and English keywords brings a loss of input efficiency. As a programmer, I hope Chinese users can continue to pay attention to and improve these in the future.
// 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 }
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!
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.
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.
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.”
Go WASM related posts
-
The Forgotten History of Chinese Keyboards
-
Interesting projects using WebAssembly
-
Wazero: The zero dependency WebAssembly runtime
-
Jsonfile: A Quick Hack for Tinkering
-
Wazero v1.6.0
-
SQLite-memory-vfs: Open a SQLite db from memory in Python, without hitting disk
-
Application Traffic with eBPF
-
A note from our sponsor - InfluxDB
www.influxdata.com | 3 Jun 2024
Index
What are some of the best open-source WASM projects in Go? This list will help you:
Project | Stars | |
---|---|---|
1 | TinyGo | 14,608 |
2 | Pion WebRTC | 12,849 |
3 | go-app | 7,734 |
4 | wazero | 4,627 |
5 | pigo | 4,315 |
6 | wasmer-go | 2,749 |
7 | deepflow | 2,433 |
8 | eggos | 2,202 |
9 | wasmtime-go | 765 |
10 | wa | 747 |
11 | proxy-wasm-go-sdk | 665 |
12 | hackpad | 509 |
13 | apiclarity | 483 |
14 | gossamer | 422 |
15 | luna | 307 |
16 | tarmac | 312 |
17 | go-sqlite3 | 307 |
18 | hive | 289 |
19 | capsule | 286 |
20 | go-wasm-http-server | 276 |
21 | wasm-to-oci | 239 |
22 | gweb | 203 |
23 | gtree | 201 |
Sponsored