主要观点:WebAssembly 的可移植性在其官方主页上被重点提及,它可作为编程语言的可移植编译目标,能在网页及客户端和服务器应用中部署,但实际仍存在不能运行的平台。Wasmtime 是一个轻量级、独立的 WebAssembly 运行时,致力于开放标准和提高可移植性,通过移除运行时假设、解除规范限制和采用无后端编译器等方式来实现。同时,WebAssembly 组件模型可明确 Wasm 组件的能力依赖,实现“一次编写,随处运行”的目标,且有很多参与贡献的机会。
关键信息:
- WebAssembly 是基于栈的虚拟机的二进制指令格式,设计用于多种编程语言的编译目标。
- Wasmtime 可在 5 微秒内启动新的 Wasm 实例,注重正确性和安全性,不实现非标准扩展。
- 运行时的可移植性取决于对底层平台的假设,Wasmtime 已移除一些不必要假设,如不再依赖
mmap
和虚拟内存。 - 新的
custom-page-sizes
提案允许 Wasm 模块指定内存页大小,以适应内存受限的设备。 - 之前 Wasmtime 有 Cranelift 和 Winch 两种执行方式,现在有 Pulley 解释器,将 Wasm 翻译为内部字节码格式以提高执行效率。
- WebAssembly 组件模型可明确能力依赖,实现“一次编写,随处运行”,目前相关工作仍在进行中。
重要细节:
- WebAssembly 规范规定内存页大小为 64KiB,
custom-page-sizes
提案可改变此限制。 - Pulley 解释器的工作流程包括将 Wasm 翻译为 Cranelift 的中间表示,进行中间优化,降低为 Pulley 字节码并优化,最后解释执行。
- 参与贡献的方式包括构建最小化的 Wasmtime、帮助 Pulley 通过测试、分析和改进其性能、支持自定义页大小的 Wasm 二进制文件以及优化 Wasmtime 的代码大小等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。