🧠
执行模型
从模块、线性内存和导入导出,理解 WebAssembly 如何在浏览器与独立运行时中执行。
| 主题 | 解决的问题 |
|---|---|
| 基础概念 | WebAssembly 模块是什么,内存、函数、导入和导出怎样协作 |
| 浏览器执行模型 | Worker、SharedArrayBuffer、COOP/COEP 与终端交互如何配合 |
| WASI | WebAssembly 如何获得受限的系统能力 |
| 工具链 | Emscripten、wasi-sdk 与相关构建工具分别负责什么 |
| container2wasm | Linux 容器如何转换为可在浏览器启动的 RISC-V 64 虚拟机 |
| container2wasm 浏览器接入与排障 | 分片加载、Worker/PTY、跨域隔离与运行错误如何处理 |
Hello WASM 将文档和大型运行时资产放在同一套可追溯结构中。产品页面仍属于 Hello Lang 或 Hello Shell,物理工具链则在这里集中构建。
运行时目录列出已记录版本、gzip 下载量、分片数量和校验信息。浏览器读取 manifest 后逐片校验 SHA-256,并验证页面指定的架构。历史 Shell 清单缺失的版本信息已明确标注。
浏览器运行时实验台直接使用已经构建的 RISC-V 64 运行时。每个页面对应一份物理资产,页面负责下载、校验和启动;容器镜像仍由 GitHub Actions 构建,不在用户浏览器中临时打包。
同一物理资产可以呈现不同产品体验:例如 Java 与 Scala 读取同一份 JVM 资产,但进入各自页面时使用独立标题、命令和示例。这样既保留语言辨识度,也避免重复下载基础工具链。
linux/riscv64,Shell PowerShell 使用 linux/amd64。VITE_WASM_RUNTIME_BASE 读取远程 manifest,地址不可用时显示明确错误,不切换到另一种架构。