您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > 百科

2023 年 WebAssembly 现状:第四种 Web 语言

时间:2023-10-20 11:46:37  来源:微信公众号  作者:前端充电宝

2023 年 WebAssembly 现状:第四种 Web 语言

2023 年度 WebAssembly 现状调查结果出炉,下面就来看看 2023 年的 WebAssembly 发展的怎么样了!

WebAssembly 是一种可移植、低级别的字节码语言,旨在提供一种通用的编译目标,以允许在 Web 上执行高性能计算密集型应用程序。它是一种新型的虚拟机技术,可以在所有主要的 Web 浏览器中运行,并且还可以在其他环境中使用。

 

WebAssembly 通过在 Web 浏览器中嵌入本地代码模块,能够直接访问底层系统硬件,实现了快速加载和执行的特性,因此被广泛认为是未来 Web 应用的基础技术之一。WebAssembly 可以与 JAVAScript 和其他 Web 技术协同工作,使开发人员能够使用多种编程语言来构建在线应用,并且具备高效、跨平台的特点。

 

WebAssembly 于 2019 年 12 月 5 日成为万维网联盟(W3C)的推荐标准,与 htmlcssJavaScript 一起成为 Web 的第四种语言。

下面是本次调查结果概览:

  • Rust 和 JavaScript 的使用量持续增加,但一些更显着的变化:Swift 和 Zig 的采用率都显着增加。
  • 当谈到开发者所“渴望使用”的编程语言时,Zig、Kotlin和C#等语言的受欢迎程度超过了它们目前的实际使用率。
  • WebAssembly 仍然最常用于 Web 应用开发,但 Serverless 正在持续兴起,使用 WebAssembly 作为插件环境的使用也在增加。
  • 线程、垃圾回收和相对较新的组件模型提案是人们最感兴趣的 WebAssembly 发展方向。
  • 对于 WASI(WebAssembly 系统接口),最受关注的是 I/O 提案(如 HTTP、文件系统)。
  • 开发者对 WAI 发展的满意度明显低于对 WebAssembly 发展的满意度。
  • 开发者希望 WebAssembly 能够兑现 Java 最初做出的“一次编写,到处运行”的承诺。

语言

在开发时利用 WebAssembly 的应用时使用或尝试过使用的语言统计如下:

2023 年 WebAssembly 现状:第四种 Web 语言

2023 年 WebAssembly 现状:第四种 Web 语言

Rust 连续第三年成为 WebAssembly 最常用的语言。Rust 一直非常适合 WebAssembly;它是一种广泛流行的现代系统级语言(Stack Overflow 连续七年显示它是最受欢迎的语言),它也恰好是一种用于编写 WebAssembly 运行时和平台的流行语言。

JavaScript 是第二广泛使用的编程语言。尽管无法直接将 JavaScript 编译为 WebAssembly,但可以通过将 JavaScript 代码运行时编译为 WebAssembly 来实现在 WebAssembly 中执行 JavaScript 代码的方式。在这种方法中,代码将在 WebAssembly 托管的解释器中运行。尽管可能会牺牲一些性能,但出人意料地实用,并且越来越受欢迎。虽然可能无法从速度上获得优势,但确实可以受益于 WebAssembly 的安全性和隔离性。

下图显示了长期趋势,将最近三次调查的结果进行比较,列出了每种语言的使用百分比(经常或偶尔使用),排除使用率低于10%的语言。

2023 年 WebAssembly 现状:第四种 Web 语言

Rust 和 JavaScript 的使用率正在增加,但还有一些更显著的变化:Swift 和 Zig 的采用率均显着增加。

Swift 是 WebAssembly 生态系统中相对较新的成员,始于几年前对 Apple Swift 存储库的拉取请求以添加 wasm 目标。然而,尽管多年来进行了多次提交,但该 PR 尚未合并。

虽然Swift和Rust都是相对较新的语言(分别于2014年和2015年诞生),但Zig则更为年轻,于2016年出现,比WebAssembly(WebAssembly于2017年发布了第一个MVP版本)早一年。

今年,我们在调查中添加了一个新问题,旨在了解与 WebAssembly 相关的专业关系。我们的目标是将积极开发 WebAssembly 工具或平台的人员与最终用户的响应分开。通过将这两组分离,可以看到以下语言的偏好情况:

2023 年 WebAssembly 现状:第四种 Web 语言

正如预期的那样,工具开发人员对 Rust 有着强烈的偏好,并且也喜欢直接使用 WAT(WebAssembly 文本格式)对 WebAssembly 进行编程。开发者对 Go 和 Python/ target=_blank class=infotextkey>Python 也有强烈的偏好。

对于问题“未来想使用哪些语言来开发利用WebAssembly的应用”,统计结果如下:

2023 年 WebAssembly 现状:第四种 Web 语言

Rust 再次名列前茅,反映了年度 Stack Overflow 调查的结果,其次是JavaScript。然而,使用频率较低的 Zig 是第三个最受欢迎的语言。

通过绘制每种语言的差异,即“经常使用”的回答数量和“希望大量使用”的回答数量之间的差距,可以看出在受欢迎程度与使用率之间有着最大差异的语言:

2023 年 WebAssembly 现状:第四种 Web 语言

可以看到,Zig、Kotlin 和 C# 的受欢迎程度超过了当前的使用率,C++、JavaScript 和 WAT 的当前的使用率超过了受欢迎程度。

运行时

考虑到WebAssembly在非浏览器环境下的使用正在增加,探索正在使用哪些运行时或者仅仅是听说过哪些运行时很有意思。这次调查只问了一个问题:“你听说过或使用过哪些运行时?结果如下:

2023 年 WebAssembly 现状:第四种 Web 语言

wasmtime,来自于字节码联盟(Bytecode Alliance),是最广泛使用的运行时,而由一家初创公司开发的 wasmer 排名第二。Wazero 是一个新成员,它是一个基于 Go 语言构建的最近发布的运行时。

实际应用

使用 WebAssembly 的目的如下:

2023 年 WebAssembly 现状:第四种 Web 语言

Web 应用开发仍然处于领先地位,但差距正在缩小。下图显示了同比趋势:

2023 年 WebAssembly 现状:第四种 Web 语言

Serverless 正在持续增长,但可能最引人注目的转变是WebAssembly作为插件环境的使用。以下是一些实际应用的例子:

  • Zellij是一个面向开发者的终端工作空间,它采用了WebAssembly插件模型。
  • Microsoft Flight Simulator 允许将附加组件编写为 wasm 模块。
  • Envoy 和 Istio 有一个 Wasm Plugin API。
  • Lapce,一个用 Rust 编写的新 IDE,有一个基于 WASI 的插件系统。

在每种情况下,平台(终端、编辑器、代理)都从允许最终用户使用多种编程语言扩展功能的能力中受益,并且这些功能在一个安全而隔离的环境中运行。换句话说,如果有人编写了一个行为不端或性能较差的插件,对平台本身的影响将被最小化。

受访者所在组织采用 WebAssembly 的状况如下:

2023 年 WebAssembly 现状:第四种 Web 语言

从上图中可以看到,41% 的受访者正在生产中使用 WebAssembly,还有 28% 的受访者正在试点或计划在明年使用它。

该调查还探讨了 WebAssembly 需要什么来帮助推动进一步采用:

2023 年 WebAssembly 现状:第四种 Web 语言

被最频繁提及的需求是通过 WASI(WebAssembly系统接口)来改善非浏览器集成。WebAssembly 规范并未定义任何主机集成点,无论是如何访问 DOM 还是与主机运行时交换数据(例如在浏览器中将值传递给 JavaScript)。WASI正填补这一空白,但目前还没有完整的解决方案。

更好的调试支持紧随其后,随着人们使用 WebAssembly 开发越来越复杂的解决方案,这一点将变得更加重要。

特性

WebAssembly(由W3C管理)和WASI(由W3C WebAssembly社区组的子机构管理)都在不断发展,有一系列新功能遵循标准的5阶段提案过程。

关于 WebAssembly 提案,以下是最需要的:

2023 年 WebAssembly 现状:第四种 Web 语言

线程、垃圾收集和异常处理在去年的结果中均名列前茅,并且这三者都处于提案生命周期的实施(第 3 阶段)或标准化(第 4 阶段)。这意味着它们已准备好使用,并且接近完成。

组件模型是一个处于早期阶段的提案(第 1 阶段),其目标是使在运行时以任何语言编写的 wasm 模块变得更加容易。

关于 WASI 提案,以下是最需要的:

2023 年 WebAssembly 现状:第四种 Web 语言

四个最重要的提案都与 I/O 相关,可见,创建 WebAssembly 模块与外界通信的标准方式是当务之急。

受访者对 WebAssembly 和 WASI 的发展的满意度如下:

2023 年 WebAssembly 现状:第四种 Web 语言

有很多人对这个情况表示不满意,这一点并不令人意外,以开放透明的方式演化的规范,涉及很多利益相关者,并不容易,并且需要时间。

不过,这个结果不应被用作直接批评 WASI 和 WebAssembly 团队所做出的出色努力。人们对 WASI 演进的不满可能只是对这项技术热情的反映,这并不是一件坏事。

小结

最后,来总结一下受访者对 WebAssembly 最兴奋的点:

  • 可移植性和在不同平台上运行代码的能力。
  • 不同语言和Web之间的互操作性。
  • 本地性能和效率。
  • 访问现有代码和库的能力。
  • 新语言和工具的潜力。
  • 安全性和沙箱功能。
  • 替代容器并在浏览器中运行复杂堆栈的能力。
  • 通用二进制格式的潜力。
  • 编写一次,在任何地方运行的机会。
  • 提高性能和速度。
  • 组件模型和代码重用的能力。
  • 减少或消除对JavaScript的依赖。
  • 在语言选择上更灵活、多样化的选择。
  • 插件系统的潜力。
  • 在浏览器中运行复杂应用程序的潜力。


Tags:WebAssembly   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Rust 编译为WebAssembly 在前端项目中使用
前言最近,不是加大了对Rust相关文章的输出吗,在评论区或者私信区。有一些不同的声音说:“Rust没有前途,然后...."。其实呢,看一个技术是否有需要学习的动力。想必大家的底层理由...【详细内容】
2023-10-27  Search: WebAssembly  点击:(248)  评论:(0)  加入收藏
2023 年 WebAssembly 现状:第四种 Web 语言
2023 年度 WebAssembly 现状调查结果出炉,下面就来看看 2023 年的 WebAssembly 发展的怎么样了!WebAssembly 是一种可移植、低级别的字节码语言,旨在提供一种通用的编译目标,以...【详细内容】
2023-10-20  Search: WebAssembly  点击:(259)  评论:(0)  加入收藏
通过WebAssembly,C++率先打响虚拟 DOM 第一枪!
前言本文主要和大家讨论 asm-dom,即通过 WebAssembly 技术 C++ 率先支持虚拟DOM。在年初,我也确实使用 WebAssembly 将客户端应用成功移植到了 Web,这也是为什么我一直对 WebAs...【详细内容】
2023-08-22  Search: WebAssembly  点击:(283)  评论:(0)  加入收藏
WebAssembly 火了!背后的 LLVM 功不可没!
前面诸多文章中已经重点表达了自己对 WebAssembly 的浓厚兴趣,但是要深入学习 WebAssembly 就不得不说其背后的 LLVM ,这就是本文的主角。话不多说,直接开始!1.什么是LLVMLLVM,全...【详细内容】
2023-08-21  Search: WebAssembly  点击:(149)  评论:(0)  加入收藏
最流行的 WebAssembly 语言,会是 JavaScript 吗?
对于网络平台而言,WebAssembly 的出现无疑是意义重大的,它能让各种语言编写的代码以接近原生的速度在 Web 中运行——那么在各种语言中,Java 会是其中最流行的吗?原文...【详细内容】
2023-05-09  Search: WebAssembly  点击:(334)  评论:(0)  加入收藏
WebAssembly终极指南
WebAssembly(又名Wasm)已被证明在浏览器中运行得非常好。它被广泛用作提高速度和安全性的一种方式,尤其是直接在浏览器中运行的应用程序的计算简单性,特别是使用 JavaScript 以...【详细内容】
2023-05-06  Search: WebAssembly  点击:(257)  评论:(0)  加入收藏
人们在用 WebAssembly 构建什么应用?
WebAssembly (WASM) 在过去几年一直是一个流行词。 这是一项引起广泛关注但在实践中应用较少的技术。 我一直很好奇它的现状,所以我调查并总结了我的发现。 其中一些可能会让...【详细内容】
2023-01-07  Search: WebAssembly  点击:(319)  评论:(0)  加入收藏
WebAssembly 如何演进成为“浏览器第二编程语言”?
WebAssembly 无疑是近年来让人最为兴奋的新技术之一,它虽始于浏览器但已经开始不断地被各个语言及平台所集成。在实际的工业化落地中,区块链、边缘计算、游戏及图像视频等多...【详细内容】
2020-08-14  Search: WebAssembly  点击:(265)  评论:(0)  加入收藏
为什么每个人都在谈论 WebAssembly
了解有关在 Web 浏览器中运行任何代码的最新方法的更多信息。-- Mike Bursell(作者) 如果你还没有听说过 WebAssembly ,那么你很快就会知道。这是业界最保密的秘密之一,但它无...【详细内容】
2020-01-27  Search: WebAssembly  点击:(343)  评论:(0)  加入收藏
▌简易百科推荐
用于人工智能开发的主流编程语言都有哪些?
在人工智能开发领域,编程语言的选择至关重要。目前,主流的编程语言主要包括Python、Java、C++、JavaScript和Swift等。这些语言各具特色,适用于不同的人工智能开发场景。首先,Py...【详细内容】
2024-01-31    简易百科  Tags:编程语言   点击:(129)  评论:(0)  加入收藏
探究微处理器开发中的汇编语言的优势与挑战
在计算机编程中,汇编语言是一种低级语言,它可以直接控制计算机的硬件资源。与高级语言相比,汇编语言具有更高的运行效率和更好的控制能力,但同时也更加复杂和难以理解和维护。在...【详细内容】
2023-12-19  松鼠宝贝    Tags:汇编语言   点击:(98)  评论:(0)  加入收藏
选择适合微服务的编程语言,让你的工作事半功倍!
讨论编程语言就像是一场政治辩论。每个开发者都会过分捍卫他/她所使用的编程语言。然而,编程语言应该被看作是它们真正是的东西,即一种工作工具。每种编程语言都有特定的目的...【详细内容】
2023-12-14  爱发白日梦的后端  微信公众号  Tags:编程语言   点击:(177)  评论:(0)  加入收藏
编程语言大比拼:Python、Java、C、C++、Go 实现 'Hello World' 和九九乘法表"
应该90%的IT专业的朋友写的第一段代码就是打印"holle world",每个大学老师都会通过这个方式吸引你对课程产生兴趣。也许有的朋友学的是JAVA开发,有的学的是c,在几年前应该很...【详细内容】
2023-12-11  IT仔的笔记本  微信公众号  Tags:编程语言   点击:(216)  评论:(0)  加入收藏
TypeScript中的null和undefined的区别
在TypeScript中,null和undefined是两个特殊的值,用于表示变量的缺失或未定义。尽管它们在某些情况下可能看起来相似,并且都可以表示"没有值",但它们在语义和用法上存在一些重要...【详细内容】
2023-12-07  科学随想录  微信公众号  Tags:TypeScript   点击:(132)  评论:(0)  加入收藏
面向AI开发的六种最重要的编程语言
作者丨FATIH KÜÇÜKKARAKURT 译者 | 布加迪审校 | 重楼出品 | 51CTO技术栈(微信号:blog51cto)在AI开发界,你使用的编程语言很重要。每种语言有其独特...【详细内容】
2023-12-07    51CTO  Tags:编程语言   点击:(121)  评论:(0)  加入收藏
NLP问题实战:基于LSTM(RNN)和Transformer模型
译者 | 朱先忠审校 | 重楼简介GPT等语言模型最近变得非常流行,并被应用于各种文本生成任务,例如在ChatGPT或其他会话人工智能系统中。通常,这些语言模型规模巨大,经常使用超过数...【详细内容】
2023-11-29    51CTO  Tags:NLP   点击:(272)  评论:(0)  加入收藏
一文了解低级和高级编程语言
中文是一种尽量用简短文字表达更多含义的语言,所以很多时候一句话的含义很容易曲解成别的意思。最近,有人提出C语言是一种中级语言的概念,所以特意介绍一下低级语言和高级语言...【详细内容】
2023-11-23  数字随行  微信公众号  Tags:编程语言   点击:(232)  评论:(0)  加入收藏
JetBrains 发布 2023 调研报告:77% 开发者使用 ChatGPT
IT之家 11 月 21 日消息,JetBrains 日前公布了《2023 开发人员生态系统现状》调研报告,汇集了来自全球 26,348 位开发者的调研结果。《开发者生态系统现状报告》涵盖广泛的主...【详细内容】
2023-11-21    IT之家  Tags:JetBrains   点击:(236)  评论:(0)  加入收藏
Go vs Rust:文件上传性能比较
一、设置所有测试都在配备16G内存的 MacBook Pro M1 上执行。软件版本为: Go v1.20.5 Rust v1.70.0测试工具是一个基于 libcurl 并使用标准线程的自定义工具,能够发送多部分请...【详细内容】
2023-11-20  技术的游戏  微信公众号  Tags:Rust   点击:(174)  评论:(0)  加入收藏
站内最新
站内热门
站内头条