跳转到正文

🧩 Hello WASMWebAssembly 手册

执行模型 · WASI 系统接口 · RISC-V 64 浏览器容器 · 运行时资产

Hello WASM

内容入口 ​

主题解决的问题
基础概念WebAssembly 模块是什么,内存、函数、导入和导出怎样协作
浏览器执行模型Worker、SharedArrayBuffer、COOP/COEP 与终端交互如何配合
WASIWebAssembly 如何获得受限的系统能力
工具链Emscripten、wasi-sdk 与相关构建工具分别负责什么
container2wasmLinux 容器如何转换为可在浏览器启动的 RISC-V 64 虚拟机
container2wasm 浏览器接入与排障分片加载、Worker/PTY、跨域隔离与运行错误如何处理

运行时体系 ​

Hello WASM 将文档和大型运行时资产放在同一套可追溯结构中。产品页面仍属于 Hello Lang 或 Hello Shell,物理工具链则在这里集中构建。

  • JVM 家族:Java、Kotlin、Groovy、Scala、Clojure 共用一份 JDK 与语言工具链。
  • Node 家族:JavaScript、TypeScript、HTML/Pug、CSS/Sass/PostCSS 共用一份 Node.js 工具链。
  • 独立运行时:Python、C/C++、Go、Rust、PHP、Ruby 各自保留完整环境。
  • Shell 运行时:Alpine / ash、多 Shell 使用 RISC-V 64;PowerShell 保留 AMD64。三套资产由 Shell 页面共享读取。
  • 暂不提供:C# 尚无经过验证的 Linux RISC-V 64 SDK,因此不伪装成可运行环境。

运行时目录列出已记录版本、gzip 下载量、分片数量和校验信息。浏览器读取 manifest 后逐片校验 SHA-256,并验证页面指定的架构。历史 Shell 清单缺失的版本信息已明确标注。

浏览器运行时实验台 ​

浏览器运行时实验台直接使用已经构建的 RISC-V 64 运行时。每个页面对应一份物理资产,页面负责下载、校验和启动;容器镜像仍由 GitHub Actions 构建,不在用户浏览器中临时打包。

同一物理资产可以呈现不同产品体验:例如 Java 与 Scala 读取同一份 JVM 资产,但进入各自页面时使用独立标题、命令和示例。这样既保留语言辨识度,也避免重复下载基础工具链。

构建与发布 ​

  • 运行时由手动触发的 GitHub Actions 构建;Lang 和 Shell 基础环境使用 linux/riscv64,Shell PowerShell 使用 linux/amd64。
  • gzip 分片作为普通 Git 文件保存,每门语言家族只保留当前版本。
  • 静态站点可以部署到 Cloudflare Pages 等普通静态托管;仓库本身不代表线上站点已经配置或发布。
  • Hello Lang 和 Hello Shell 通过 VITE_WASM_RUNTIME_BASE 读取远程 manifest,地址不可用时显示明确错误,不切换到另一种架构。

当前边界 ​

  • Lang 提供 RISC-V 64 容器运行时;Shell PowerShell 是明确配置的 AMD64 目标,不是回退资产。
  • 浏览器运行已构建资产,不在客户端构建容器。
  • WebAssembly 文档、重型构建配置和资产由 Hello WASM 管理;语言与 Shell 教程、实验素材及各自终端交互由对应项目管理。

WebAssembly、WASI 与浏览器运行时手册