WebAssembly 入门课
于航
PayPal 高级软件工程师
10751 人已学习
新⼈⾸单¥29
登录后,你可以任选4讲全文学习
课程目录
已完结/共 23 讲
结束语 (1讲)
WebAssembly 入门课
15
15
1.0x
00:00/00:00
登录|注册

12 | 有哪些优秀的 WebAssembly 编译器与运行时?

你好,我是于航。
本节课我们来一起看看,目前业界有哪些优秀的 Wasm 运行时。这些运行时都是 Wasm 可以在 out-of-web 领域大显身手的最基本保障。它们其中有些支持 WASI 抽象系统接口,有些支持 Wasm Post-MVP 标准中的部分提案,还有一些可以被专门用在诸如嵌入式、IOT 物联网以及甚至云,AI 和区块链等特殊的领域和场景中。
不仅如此,还有一些更具创新性的尝试,比如 “Wasm 包管理”。这一概念类比 npm 之于 JavaScript,PyPi 之于 Python,crates.io 之于 Rust,相信这一定可以为 Wasm 生态添砖加瓦。
这一切,我们都要先从“字节码联盟”这个特殊的组织开始说起。

字节码联盟(Bytecode Alliance)

“字节码联盟”成立于 2019 年末,是一个由个人和公司组成的团体。最初的一批创始成员为 Mozilla、Fastly、Intel 以及 Red Hat。联盟旨在通过协作的方式,来共同实现 Wasm 及 WASI 相关标准,并通过提出新标准的方式来共同打造 Wasm 在浏览器之外的未来。
对于开发者来说,联盟希望能够为开发者提供健全的、基于各类安全策略构建的成熟开发工具链(虚拟机、编译器以及底层库)生态。这样开发者便可以将目光更多地专注于应用本身的设计与研发上,同时可以在各类环境中,快速地构建可运行在浏览器之外的 Wasm 应用,并且不用考虑安全性等基本问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebAssembly(Wasm)作为一种新兴的跨平台字节码格式,正在逐渐成为浏览器之外的领域中的重要技术。本文介绍了一些优秀的Wasm编译器与运行时,以及字节码联盟(Bytecode Alliance)的背景和解决方案。文章指出了传统软件开发模式中存在的代码安全性问题,并介绍了Wasm在资源及权限控制上的优势。特别提出了“Wasm Nanoprocess”这种应用构建模式,通过限制恶意代码对数据以及系统接口权限的访问和使用,最大程度上保证了Wasm应用及其所依赖第三方模块的运行时安全性。文章内容深入浅出,为读者提供了对Wasm技术特点和应用前景的全面了解。 在本文中,介绍了字节码联盟的背景和其在构建安全可靠的Wasm应用方面的重要性。随后,详细介绍了几款优秀的Wasm运行时,包括Wasmtime、WAMR、Wasmer和SSVM。这些运行时在支持Wasm标准的基础上,还提供了各自独特的特性和适用场景,如Wasmtime的高可配置性和可扩展性,WAMR在嵌入式芯片等资源受限场景下的优势,Wasmer提供的多语言运行时绑定支持,以及SSVM专注于云、AI和区块链应用程序的高性能特点。这些运行时的介绍为读者提供了对Wasm技术在不同领域应用的全面了解。 总的来说,本文通过介绍字节码联盟和优秀的Wasm运行时,展现了Wasm技术在安全性、跨平台性和性能方面的优势,为读者提供了对Wasm技术特点和应用前景的全面了解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《WebAssembly 入门课》
新⼈⾸单¥29
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • lisiur
    老师请教个问题哈,如果想开发一款自己的wasm运行时,大体思路是什么样的,有没有推荐的学习路径呀?

    作者回复: 如果只是写简单的解释器,其实可以直接按照 Spec 上的指令用 switch 的方式去逐个解释就可以。具体的实现模型也可以参考 Spec 上给出的抽象(https://webassembly.github.io/JS-BigInt-integration/core/exec/index.html)。更高性能的需要考虑一些 threading 的方法,同时考虑是否整合 JIT。这部分就没有具体的教程了,不过可以参考一些已有的实现,比如 LuaJIT、WABT 中提供的简易 Wasm 解释器等等。书籍的话市面上大部分都是介绍 JVM 的,手把手教学的也是比较少,相对好一些的可以参考《Advanced Design and Implementation of VMs》,虽然也是以 JVM 为背景,但对 VM 组成结构介绍的比较全面,可以有个初步了解。其他比如 GC 之类的就得单独学习了,比如《垃圾回收算法与实现》等等。JIT 可以参考 LLVM 给出的例子,整合起来会快很多。

    2021-01-12
    6
  • Xi
    于老师,simd优化有那些学习资料可以推荐

    作者回复: 比如这个:https://www.codeproject.com/Articles/5298048/Using-SIMD-to-Optimize-x86-Assembly-Code-in-Array,可以 Google 上搜一搜,内容还是蛮多的。

    2022-09-12归属地:四川
  • 陶雅阁
    老师请教一下,不同的语言被编译到wasm所对应的二进制字节码是否会有区别呢,或者说是优化程度的不同 另外像go语言运行时的垃圾回收是怎么处理的呢

    作者回复: 抱歉,回复晚了。是会有一定区别的,具体如何映射到字节码完全由对应语言编译器来决定。Go 语言会把 GC 也一起打包,用 Wasm 来实现,因此对应的字节码在执行时会有一定的运行时损耗。

    2022-07-05归属地:上海
  • 慌慌张张
    老师看到这,有一种all in wasm,感觉最后都是wasm都没问题的感觉。

    作者回复: 哈哈,作为编译目标确实可以这样讲。但虽然志在千里,也得着眼于实际。

    2020-10-29
  • 王超
    lucet和wasmtime合并了

    作者回复: 嗯嗯,看到了。感谢分享消息! “Combining the power of Lucet and Wasmtime exemplifies why the Bytecode Alliance formed: it specifically enables this kind of collaboration — aimed at making developers’ lives easier and powering trustworthy computation on the edge and beyond. ”

    2020-10-27
  • 字节码联盟是不是自家开发自家的wasn’t运行时,然后以后再外力的作用下,再一起选出来一个事实的标准?

    作者回复: 哈哈,这个应该不会的。字节码联盟旗下其实囊括了包含Intel在内的几家大型公司开发的Runtime,每个Runtime支持的特性和开发路径也都不尽相同。倒是没有“自家”这一说。大家对各个特性的开发也都是建立在Wasm和WASI标准基础之上的。

    2020-09-30
  • 201201132
    SSVM更名成WasmEdge了
    2022-09-17归属地:广东
    1
  • 慌慌张张
    老师,请教一下,wasm可以用来前端加密嘛?我是这样想的,传统的js即使压缩后下载到本地其实也能看懂,但是wasm这种字节码应该看还是比较困难的,是不是可以应用在机密场景?
    2020-10-29
    2
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部