WASM 到 WASI
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
你很难不听到关于 WebAssembly/WASM 的消息。几乎每天都会有相关的文章出现。
几年前,我们用Emscripten将一个 C/C++ 游戏引擎转换成 JavaScript/WebGL,以便在网页浏览器中运行。这很有趣,但最终的结果却很糟糕:程序体积庞大、运行缓慢,而且调试起来非常痛苦。Unity在这方面更是有过之而无不及:他们确实展现了令人C# -> (via Mono) IL -> (via IL2CPP) C++ -> (via emscripten) JavaScript印象深刻的软件工程技巧,值得我们致敬,但我很高兴自己从未用过它。
我一直对 WASM 背后的技术很感兴趣,但由于我不是前端开发人员,所以只是略有涉猎。WASI 改变了这一点,它将 WASM 移植到了浏览器之外;这又是一个有望实现“一次编写,到处运行”的方案。
Rust 的关联。具体来说,为什么选择 Rust?Rust 团队将WASM 作为 2018 年的重点,原因不明。其核心论点是:
- 没有运行时环境的语言是 WASM 的最佳选择(例如 C/C++/Rust)。
- Rust 比 C/C++ 更好、更安全、更容易上手(尤其对于有 JavaScript 经验的人来说)。
或许这有点主观,但只要你戴着合适的眼镜(除非你是C/C++的死忠粉)就能接受。Rust和WASM能解决你所有的问题吗?可能不能,但无论如何,我们都可以对这项技术感兴趣。
与其写一篇冗长的关于 WASM 基础知识的论文(这方面有很多),不如把我手头上的各种资源和笔记/浏览器标签页整理一下。
WASM简介:
WASI-WASM 在浏览器之外:
使用案例:
- 无服务器:
- 嵌入:
- 其他的
深入挖掘:
- Rust WASM 工作组和文档。
- 运行时:wasmtime、Lucet和wasmer (均使用cranelift构建)。cervus Linux用户模式。
- js-sys:Rust 对 JavaScript ECMAScript 标准的绑定。
- web-sys :Rust 提供的浏览器 API 绑定。由WebIDL自动生成。
- 表现:
- 内部结构:
- Rust 和 Wasm 的多线程
- WebAssembly 中的内存(以及它为何比你想象的更安全)。只需查看Mozilla 博客,那里还有其他有趣的内容,无需逐一链接。
其他:
文章来源:https://dev.to/jeikabu/wasm-to-wasi-5866