美文网首页
WebAssembly 2023 年回顾与 2024 年展望 |

WebAssembly 2023 年回顾与 2024 年展望 |

作者: 涅槃快乐是金 | 来源:发表于2024-01-18 23:50 被阅读0次

技术发展态势喜人,多项关键性提议都进入了新阶段,并且获得了社区与工具链的广泛深入支持。同时,其应用场景呈现出蓬勃扩展的态势,吸引着越来越多组织和个人开发者群体投入 WebAssembly 的开发之中。下文我们将首先回溯 WebAssembly 在 2023 年各项关键技术特性的进展,继而前瞻探讨新的一年它有望展现的发展趋势和前景。本文是 “2023 InfoQ 年度技术盘点与展望” 系列文章之一,由 InfoQ 编辑部制作呈现。

WebAssembly GC (Garbage Collection,垃圾回收) 特性引入的目的之一是为了更加高效地支持一些需要垃圾回收处理的高级语言,比如 TypeScript、Java、Kotlin、Python、PHP 和 C# 等。在没有引入 WebAssembly GC 特性之前,如果要将这些语言移植到 WebAssembly,一般的做法是将相应语言的虚拟机(如 JavaScript runtime、Python runtime 等)以及目标 app 一起编译成 WebAssembly 目标代码,由 wasm runtime 来执行该语言的虚拟机,然后再由该虚拟机来执行目标 app。由于这种方式不容易将目标 app 转成机器码以 AOT(Ahead of Time Compilation)或 JIT(Just in Time Compilation)方式来执行,虚拟机一般只能以解释器的方式执行目标 app,所以性能受到很大的限制。另一方面,将虚拟机编译到 wasm 目标代码,也可能大大增加目标代码的体积。引入了 WebAssembly GC 特性之后,人们可以开发出新的编译器,将某种高级语言的 app 直接编译成基于 WebAssembly GC 操作的目标代码,不需要将虚拟机一起编译进来。这样一方面目标 app 可以用 AOT 或 JIT 方式来执行,另一方面基于 GC opcode 的操作也非常高效(比如对结构成员的访问、对数组元素的访问等),因此可以极大提升性能,并减少目标代码体积。WebAssembly GC 依赖于 Reference Types 和 Typed Function References (或简称 Func Ref) 两个特性,在基本数据类型 (i32、 i64、 f32、 f64 和 v128) 的基础上引入了多种和引用相关的数据类型,包括 structref、 arrayref、 i31ref、 funcref、 externref 等,规定了类型之间的继承和等价关系,并且引入很多新的 opcode 来操作这些数据类型,从而满足多种高级语言的需求。其中 Reference Types 已经在 2021 年正式写入规范,而 GC MVP 提议和 Func Ref 提议在 2023 年也得到了较大的发展,在经过了大量讨论和修改后趋于完善和稳定,目前都进入了阶段四即标准化阶段。另外开源项目 WAMR (wasm-micro-runtime)、v8、Kotlin 以及开源编译框架 Binaryen 等都在持续跟进支持 GC 特性。WAMR 已经基本实现了 interpreter、AOT 以及 LLVM JIT 几种执行模式对绝大部分 GC MVP 特性的支持(注:开发分支),并被应用到了开源 Wasmnizer-ts 项目上面,后者旨在将 TypeScript 语言编译成基于 WebAssembly GC 的目标代码,以提升性能、减少模块尺寸并方便移植到各个架构,有兴趣可以参考 https://github.com/web-devkits/Wasmnizer-ts。

相关文章

  • 回顾2022年,展望2023年

    2022年疫情放开了,不能再把所有的不努力归结到大环境不好的原因上。 2022年最值得夸奖的事情:你买了辆车,勇敢...

  • 回顾2022,展望2023年

    今天是2023年的元旦,2022年从此离我们远去,汇入了历史的长河,今天迎来了新年的第一天。在新年的第一天,自己有...

  • 回顾2022年,展望2023

    2022年已经过去了。回顾2022,我得到了什么? 最大的意外是肚子里的宝宝。 最大的收获是心态的转变。 最大的福...

  • 2022年回顾与2023年展望

    时光荏苒,岁月如梭。转眼间2022已经过去了。过去的2022年我们仍然经历了几波疫情的防控,个人和企业的日子都不太...

  • 再见2022,你好2023

    昨天花了两个小时回顾2022年,同时对2023年做了一些展望。 2022年 一、学习与成长: 1、4月份加入了坚持...

  • 2023年1月21-27日随记

    不管情不情愿,2023年的春节小长假结束了,明天又要开启搬砖模式,日复一日,直至2024年春节…… 回顾这七...

  • 2024年龙年春节倒计时

    针对2023年已开始,现已开通2024年倒计时小程序:

  • 回顾2022年,展望2023年视频征集

    以下问题可以有选择的回答,建议最好全部回答。即便是笑场也没关系,但是希望是真实的回答。在拍摄前请务必好好思考一下。...

  • 2023年目标与展望

    工作: 1.努力考编,进面试 2.发表论文至少一篇 3.做好教学工作 4.正常工作,早睡早起(1208) 5.刷完...

  • 2023年展望

    2023年展望 这几天,我在简书上看了好几篇关于2022年总结,以及2023年展望之类的文章,总体觉得很有意思。几...

网友评论

      本文标题:WebAssembly 2023 年回顾与 2024 年展望 |

      本文链接:https://www.haomeiwen.com/subject/zmvdodtx.html