WebAssembly 作为一项新的技术自 2015 年诞生之初,就逐渐开始受到人们的关注。那么究竟什么是 WebAssembly 呢?它是一门新的编程语言吗?它跟虚拟机有着怎样的关系呢?它又有着怎样的应用场景呢?
于航,PayPal 高级软件工程师。曾在阿里巴巴本地生活、Tapatalk 等国内外企业工作,现在 PayPal 上海负责 Global GRT 平台相关的技术研发工作;FCC (FreeCodeCamp China) 上海技术社区负责人, QCon、GMTC 大会讲师,WebAssembly 技术布道者,2017 年注册成为 W3C 官方 CG 成员,定期参与 CG 组织的各种在线视频研讨会议,在跟进 Wasm 最新发展情况的同时也为 Wasm 的标准化提出自己的建议和意见。
2018 年深度参与到 Emscripten 编译器工具链项目的研发工作中,同年出版名为《深入浅出 WebAssembly》的国内第一本 Wasm 技术书籍,为推动国内 Wasm 技术的发展和落地实践做出了微小的贡献。研究领域主要为前端基础技术架构、 Serverless、WebAssembly、LLVM 及编译器等相关方向。
作者回复: 你不是第一个。( ̄Д ̄)ノ
作者回复: 首先要明确当前 WebAssembly 这门技术能够应用的场景,哪些可以用,哪些不能用。然后再确定对应问题使用 Wasm 的具体解决方案。如果场景没有问题,实践就比较容易了。是从源代码直接编译成 Wasm、以共享库还是静态库的形式编译、是否需要使用 Emscripten、Standalone 还是借助 Helper、是否需要降级方案等这些就是实现细节问题了。建议可以先自己写点小的 Demo 熟悉下整个流程然后再从实际项目中找痛点。
作者回复: 现在来看主要还是 Web 上的补足,因为 Wasm 本身就是基于 PNaCL,ASM.js 等很多之前已有的 Web 技术经过沉淀发展出来的。而 WASI 则是 Wasm 在非 Web 领域的实践和发展,目前提到的应用领域有 Portable CLI,对已有代码库的直接复用等。基于它可以做 Docker 类似的事情,但这只是一种可以实践的应用领域。但作为技术本身,这个并不是主要发展方向。
作者回复: 书籍的话可以参考我之前写的《深入浅出 WebAssembly》或者以下几本英文的:
《WebAssembly in Action》这本现在还是 MEAP 版本,之前看里面还有一些知识点错误,所以看的时候最好结合官方文档;
《Programming WebAssembly with Rust》这本书是今年出版的,但主要以 Rust 为示例语言;
社区的话我们是有微信群,有需要的话我可以拉你。