影视聚合站 科技 文章内容

破圈!不止于浏览器,WebAssembly 2020 大事记

发布时间:2021-02-19 21:57:53来源:CSDN

【CSDN编者按】所谓温故而知新,适当的梳理回溯历史发展,有利于对未来做出更加准确的判断和更加可靠的计划。本文,让我们一起来回顾Wasm2020年的发展……

作者|夏歌责编|张红月

出品|CSDN(ID:CSDNnews)

WebAssembly(WASM)最初由W3C的Mozilla、谷歌、微软、苹果等公司合作研发,是浏览器内应用程序的高性能执行引擎。目前已经在主流浏览器中如Chrome、Firefox、Edge、Safari中得到了广泛的支持。

但是随着WASM在开发者社区中越来越流行,WASM也正在成为服务端以及云计算平台上的新锐。

2019年12月,BytecodeAlliance字节码联盟宣布正式成立。这个联盟成立的主要目标就是通过协作实施标准和提出新标准,以完善WebAssembly在浏览器之外的生态。服务端的WebAssembly正式被人所熟知。

回到2020年,WebAssembly的2020年是以年初在Google总部举办的WebAssemblysummit开始的,这是WASM社区第一次大型线下会议。对WebAssembly感兴趣的开发者从世界各地出发,汇聚MountainView。虽然这次会议只有一天,但是涵盖了众多议题包括Wasm在浏览器与服务端的发展。这也是疫情前最后的国际技术大会之一。

要把WebAssembly用于服务端,我们必须将它与浏览器之外的计算环境进行适配。语言、库与工具链是关键。

相比2019年,WebAssembly在2020年支持的语言新增了这些!下面这些语言都可以被编译成Wasm字节码在浏览器或者Wasm虚拟机上运行。

Swift

Kotlin

Java

COBOL

.NET

Go

借助工具链LLVM,我们可以把多种语言写的库编译成WebAssembly,进而在浏览器中运行:

TensorFlow.js:TensorFlow官方团队实现了在WebAssembly中使用SIMD和多线程来增强TensorFlow.js

FFMPEG:这是一个著名的处理音视频的库。在开发者JeromeWu的努力下,将用C写的FFmpeg导出了WebAssembly格式,从而使FFMPEG可以在浏览器中运行。

上面只是列举了两个著名的库。在2020年,我们经常看到经典游戏借助WebAssembly可以直接在浏览器中运行。

借助这些高性能的C语言的库,我们看到一些公司的Web应用在浏览器中使用wasm,主要集中在音视频领域

Zoom

GoogleMeet

Bilibili

时间来到8月份,Mozilla宣布裁员250人,这其中比较受影响的团队之一就是WebAssembly团队,包括Cranelift与WASI的开发者。而WASI正是服务端WebAssembly的最重要规范。一时间,与这个世界一样,WebAssembly的未来产生了很多不确定性。

字节码联盟经过1年的发展,联盟成员没有任何变化,无新增,也无删减。但是在WebAssembly规范上有了不少的进展。其成员公司Fastly雇佣了Mozilla裁掉的WebAssembly团队,为整个生态的稳定发展做出了重要贡献。

BytecodeAlliance主要围绕nanoprocess进行创新:将WebAssembly从一种应用程序的“编译目标”,发展成为一种可以用来组织应用程序的“模块化生态系统”。

首先便是WASI,这是针对WebAssembly平台的系统接口。在2020年,我们看到更多的Wasm实施支持了WASI,支持WASI似乎已经成为必须要做的事情。

Deno支持WASI

V8/Node.js支持WASI

用于网络连接的wasi-socket已经有了原型

用于机器学习的wasi-nn正在开发中

字节码联盟之外的SSVM贡献了wasi-tensorflow,使TensorFlow可以在WebAssembly程序中以nativespeed运行。

其次是ModuleLinking(模块连接),可以被视为是两个Wasm模块直接相互通信的一种方式。

然后是InterfaceTypes,可以使Wasm与一系列丰富的值类型“沟通。

为了实现这一系列目标,字节码联盟也将开发一系列Wasm-tools。

wasmparser,这是一个Wasm文件解析器。它非常节省内存资源,因为不会进行任何额外的资源分配,并且可以通过“流加载”的方式进行解析;

wasmprinter,这个工具可以将一个以.wasm结尾的Wasm二进制格式文件转换为对应的.wat文本格式,这对于调试和测试将会很有帮助;

Wat&wast,这两个工具可以将以.wat和.wast结尾的Wasm文本格式代码转换为对应的二进制格式字节码,这对于运行测试用例非常有用(因为在文本格式下,维护测试用例将会更加方便);

wasm-smith,这是一个测试用例生成器。可以生成“伪随机”的Wasm模块,并且保证这些Wasm模块是合法有效的,可以将其用于模糊测试。

电商平台Shopify基于WebAssembly搭建了一个函数服务,让使用Shopify搭建电商网站的商户可以根据自己的业务需求在Shopify平台上传自己的函数代码。Shopify团队选择WebAssembly是因为WebAssembly是安全的,不会写入外部的恶意代码;同时也是高性能的,能够满足电商对运行速度的要求。同样的模式,在其他SaaS平台上也有尝试,比如图片处理服务商Cloudinary、流数据处理商YoMo。

同时,不在BytecodeAlliance的Wasm虚拟机团队也在以自己的方式为社区做贡献。

Wamser在2020年底发布1.0.0版本,这是Wasm虚拟机中第一发布1.0.0版本的虚拟机。Wasmer支持将多种语言编译成wasm字节码,并且能够在Mac、Linux、Windows上运行。Wasmer同时也支持多种编译器,Cranelift、LLVM以及编译成智能合约的Singlepass。

SSVM对WebAssembly的贡献在于类WASI的扩展。WASI规范为开发者提供了一种机制,可以有效、安全地扩展WebAssembly虚拟机。根据实际场景的需求,SSVM做了Tensorflow、存储、命令界面、以太坊、Substrate等扩展。

除了通用的云计算与边缘计算,WebAssembly虚拟机在区块链领域有了显著的采用。目前市面上比较大的公链项目都采用WebAssembly虚拟机作为智能合约的执行引擎,如Polkadot的wasmi虚拟机、Cosmos的cosmos-wasm、EOS、Ethereum、OasisLabs、Solana、Near、ParaState等公链。

2020年,除了第一届WasmSummit,我们还看到了许多其他的WebAssemblymeetup,例如WebAssemblyLive。

2021年初,LinuxFoundation要举办CloudNativeWasmDay,这或许可以被视为服务端WebAssembly将也被更广泛的开发者社区认可的信号。与此同时,第二届WebAssemblySummit也已经确定了举办日期。2021年,中国的Wasm大会也在筹备中。

虽然WebAssembly的2020年充满波折,但WebAssembly的2021年依然充满希望。

参考资料:

BytecodeAlliance:Oneyearupdate:https://bytecodealliance.org/articles/1-year-update

WebAssemblyLandscape:https://webassemblytoday.substack.com/p/webassembly-landscape

WebAssemblySummit2020:https://medium.com/wasm/webassembly-summit-2020-881510ccb0c2

HowShopifyUsesWebAssemblyOutsideoftheBrowser:https://shopify.engineering/shopify-webassembly

Wasmer1.0:https://medium.com/wasmer/wasmer-1-0-3f86ca18c043

TheSSVM0.7releasebringsWebAssemblytothepubliccloud:https://blog.secondstate.io/post/20210202-ssvm-release/

Cloudinary:https://cloudinary.com/documentation/custom_functions#webassembly_functions

YoMo:https://github.com/yomorun/yomo-flow-ssvm-example

☞X86"将死"?RISC-V正当立☞

© 2021 ysjhz.com Inc.

站点统计| 举报| Archiver| 手机版| 小黑屋| 影视聚合站 ( 皖ICP备16004362号-1 )