该仓库会持续更新,追踪最新活动与生态动态,后续增加英文版本
不只是记录社区动态,在其他文件中也会更新个人的一些总结和笔记
WASM 处于快速发展的阶段,这里只包含活跃的 Awesome 仓库
- Awesome Wasm
- WebAssembly资料精选 - 中文版
- Awesome WebAssembly Runtimes
- Awesome WebAssembly Languages
- Awesome Rust and Webassembly
- Awesome-WebAssembly-Applications
新增提案流程:https://github.com/WebAssembly/meetings/blob/main/process/proposal.md
提案标准化流程:https://github.com/WebAssembly/meetings/blob/main/process/phases.md
https://webassembly.github.io/spec/core/
WASM
二进制格式: https://webassembly.github.io/spec/core/binary/index.html
WAT
文本格式:https://webassembly.github.io/spec/core/text/index.html
高级目标:https://github.com/WebAssembly/design/blob/main/HighLevelGoals.md
常见问题:https://github.com/WebAssembly/design/blob/main/FAQ.md
在 WebAssembly/design 仓库 Issue 中记录新的规范提案,在 WebAssebmly/proposals 仓库中跟踪提案的进度
高级设计:https://github.com/WebAssembly/component-model/tree/main/design/high-level
WITX
格式(请使用 WIT
):https://github.com/WebAssembly/WASI/blob/main/legacy/tools/witx-docs.md
WIT
格式: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md
格式进化:WITX
-> WAI
-> WIT
- [wit-bindgen #101] Rename "witx" to "wai"
- [wit-bindgen #107] Rename *.wai to *.wit
- [WASI #452] Why the WAI? Please amend
WIT 中的 World 是什么,WASI 的最新 API 需要定义 WIT world:https://blog.sunfishcode.online/what-is-a-world/ 视频:
高级目标:https://github.com/WebAssembly/WASI/tree/main#wasi-high-level-goals
提案列表:https://github.com/WebAssembly/WASI/blob/main/Proposals.md
字节码联盟文档:https://github.com/bytecodealliance/wasmtime/blob/main/docs/WASI-documents.md
WASI 将 Preview2 的 API 定义由 WITX 迁移到 WIT 格式:https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md
使用 WIT
格式后, WASI 仓库的意义更多是跟踪 WASI API 提案的标准化
旧版(Preview1) WASI 文档: https://github.com/WebAssembly/WASI/tree/27faa3a87f0ef9e48cbbf5aaafb9a0eacd297ea1/phases
可以通过 bytecodealliance/preview2-prototyping 来以 preview1 的方式调用 preview2 函数
preview1 的模块名称为 wasi_snapshot_preview1
Google Doc: https://docs.google.com/document/d/1bcMK0layzDCiKmpdIB7gShMv7nuqw3TkxUeLcxx91VU/edit#heading=h.g4ksaonfmtzr
Slack: #wg-wasm
Name | Language | Compiler Framework | Compilation/ Execution Modes | 亮点 |
---|---|---|---|---|
Wasmtime | Rust | Cranelift | JIT | bytecode alliance 主导,新功能增加比较块 |
WAMR | C | Custom | Interpreted, AOT, JIT | bytecode alliance 主导,主打微型运行时,占用资源更少 |
WasmEdge | C++ | LLVM | Interpreted, AOT | 在 host function 支持更加丰富 |
Wasmer | Rust, C++ | Singlepass,Cranelift(Default),LLVM | JIT, AOT | 使用 singlepass 时可以无依赖运行 wasm |
wasm3 | C | Custom | Interpreted | 6k repo,支持更多的架构平台 |
Wasmi | Rust | Custom | Interpreted | https://github.com/paritytech 开源的运行时,基本只在自己项目中使用 |
wazero | Go | Custom | Interpreted, JIT | golang 实现 |
wasmo 一个 Rust 实现的,基于 LLVM 的运行时,功能较少可以学习参考
2023 主流运行时的压测报告:https://00f.net/2023/01/04/webassembly-benchmark-2023/
社区/厂商 | 核心产品 |
---|---|
|CNCF TAG-Runtime Wasm Group | https://docs.google.com/document/d/1bcMK0layzDCiKmpdIB7gShMv7nuqw3TkxUeLcxx91VU/edit# |
wasmCloud | wasm 平台 |
Second State | wasmedge |
Deis Labs | spiderlightning, containerd-wasm-shims |
Fermyon | spin |
cosmonic | |
contentful | |
taubyte | wasm 平台 |
Loophole Labs | scale |
Suborbital | https://github.com/suborbital/e2core |
Wasm Labs | https://wasmlabs.dev/projects/ |
-
cisco-open/wasm-kernel-module 将 wasm 运行在内核中
-
KWasm/kwasm-operator kubernetes wasm operator
将 wasm 相关依赖安装在节点中,方便用户部署 WASM 应用
-
extism/extism 基于 WASM 的插件系统
- containerd/runwasi containerd 官方 shim,提供 wasm shim 框架以及 wasmtime&wasmedge shim 二进制
- deislabs/containerd-wasm-shims deislabs 提供的 shim,支持
slight
,spin
- Mossaka/containerd-wasm-shimsmossaka 实现的 shim,支持
spin
,cloudevents host
, asp.net,已经不太活跃了 - second-state/runwasi 针对 WasmEdge 扩展后的 runwasi,docker 实际使用该版本
-
rustwasm/gloo 主要用于 web 端的框架
-
loopholelabs/scale-cli 高级 wasm 应用框架与运行时,Serverless 服务框架
-
deislabs/spiderlightning 包含一组 WIT 定义和相关实现,可以更快的实现 wasm 应用,而且对环境依赖更少
-
deislabs/wagi 快速实现 http handler 的 wasm 模块
-
fermyon/spin 构建和运行 wasm 的开发工具
-
[Dei Labs] WASM PAAS 平台
Website: https://github.com/deislabs/hippo
-
[wasmCloud] 简单的全面的 wasm 开发运行平台
-
[Cosmonic] wasm 平台
Website: https://cosmonic.com/
https://github.com/WebAssembly/wabt
https://github.com/WebAssembly/wasi-testsuite
https://github.com/bytecodealliance/cargo-component
https://github.com/bytecodealliance/wasm-tools
https://github.com/bytecodealliance/wit-bindgen
-
dphilla/marcotte-wasm 创建于 host 无关的系统调用中间层
-
loopholelabs/wasm-toolkit 包含了类似 strace 的命令的工具集,可以查看 wasm 模块对 外部调用/wasi 的依赖
-
peterhuene/wasmbuilder.app 组合 component,生成新的 component
Demo: https://github.com/peterhuene/wasmday-demo 使用 viceroy 来运行 Video: https://www.youtube.com/watch?v=JCIwpc7x4jU&list=PLj6h78yzYM2Pdj8vnO0wfFyKcbKNy3e5j&index=18
-
engineerd/wasm-to-oci 从 oci 镜像中获取 wasm 模块