前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么要在WebAssembly中使用Rust?【Programming】

为什么要在WebAssembly中使用Rust?【Programming】

作者头像
Potato
修改于 2019-11-25 07:14:08
修改于 2019-11-25 07:14:08
1.5K0
举报

了解为什么在Wasm中使用Rust而不是其他编程语言。

图片来源:TeroVesalainen via Pixabay CC0
图片来源:TeroVesalainen via Pixabay CC0

WebAssembly(Wasm)是一项技术,可以重塑我们为浏览器构建应用程序的方式。 它不仅使我们能够构建全新的Web应用程序类,而且还将使我们使用JavaScript编写的现有应用程序更加高效。

在有关Rust和Wasm生态系统状态的本文中,我将尝试解释为什么Rust是可以释放WebAssembly真正潜力的语言。

什么是WebAssembly?

WebAssembly是二进制文件格式,所有主要浏览器(IE 11除外)都已实现,以使虚拟机运行。 WebAssembly的启动和运行速度比JavaScript快得多,因为二进制格式对于浏览器而言非常简单,而且易于浏览器以高度优化的方式运行。 如果您对使WebAssembly与众不同的技术细节感兴趣,我建议您参阅Lin Clark在该主题上的文章 。

那么,为什么要使用它呢?

尽管我最初开始研究WebAssembly作为在另一种环境(即浏览器)中编写Rust的方法,但这并不是WebAssembly真正与众不同的原因。 我喜欢编写JavaScript(尤其是TypeScript),并且用JavaScript构建的围绕Web开发的生态系统是一笔巨大的财富,不应该被抛弃。当JavaScript的性能不够高时,WebAssembly会对它进行补充。

WebAssembly可用于编写整个Web应用程序或用性能接近本机的速度替换性能可能不足的少量现有应用程序。 另外,由于WebAssembly是一种类似于本机的程序集格式,因此许多语言都可以编译为它,这意味着在其他平台和Web之间共享代码现在更加实用。

其他语言

可以将许多不同的语言编译为WebAssembly,包括C#Go ,那么为什么不使用它们代替Rust? 尽管编程语言的使用始终受个人喜好影响,但有很多原因使Rust成为工作的最佳工具。 因为这些语言具有必须包含在WebAssembly二进制文件中的大型运行时,所以它们仅对新建项目才真正实用(即,它们仅可用作JavaScript替代品)。 Wasm上的该Go Wiki文章说,未压缩的可实现的最小二进制大小约为2MB。 这反映了我所见。 对于Rust来说,它的运行时极少(基本上只是一个分配器),“ hello,world”示例在我的机器上被编译为1.6KB,而没有任何编译后的大小优化(这可能会进一步降低它的大小)。

这并不是说浏览器中Go或C#的未来前景黯淡——我为这些努力可能带来的结果感到非常兴奋。 但现实情况是,这些技术可能始终是新建项目的最佳选择。

C和c++运行时非常小,就像Rust一样,因此可以实用地嵌入现有的应用程序和库。然而,Rust使用我们将在本系列其他文章中探讨的工具,很容易创建具有相当惯用的JavaScript接口的WebAssembly二进制文件,而c和c++中的过程则更加手动。在Rust的工具是绝对了不起的,我认为它使整个经验更加令人愉快。Rust也是一种内存安全的语言,这意味着c和c++中常见的一整类bug在safeRust中是不可能存在的。如果您已经习惯了存储JavaScript、Java和c#等安全语言(即使您不习惯),那么您可能希望使用Rust。

让我们继续

如果你对WebAssembly感兴趣,我仍然鼓励你去钻研那些WebAssembly支持的语言——不管是c++、c#还是其他什么语言。如果你有兴趣了解更多关于Rust的Wasm开发,请在评论中告诉我。接下来,我将介绍如何从JavaScript调用Rust。如果你想对比一下Rust的故事和其他语言的故事,比如c语言和Go语言,请告诉我,以后我会写更多。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WebAssembly 与 Rust 综述
首先要说一句,WebAssembly 是一项极速发展的技术,互联网上流传的很多文章(17,18年所写)已经过时了。所以,请尽量查阅最新时间的相关描述文档。
MikeLoveRust
2019/07/09
1.9K0
WebAssembly 与 Rust 综述
Rust 编译为WebAssembly 在前端项目中使用
最近,不是加大了对Rust相关文章的输出吗,在评论区或者私信区。有一些不同的声音说:“Rust没有前途,然后...."。其实呢,看一个技术是否有需要学习的动力。想必大家的底层理由都是「一切都是向钱看」,毕竟在国内大家都是业务为主,想自己纯手搞一套符合自己的技术框架和范式,这是不切实际的。(当然也不能一杆子打死,还是有很多技术大牛的)现在大家纠结或者对这个技术属于观望态度,无非就是在平时开发工作中没有涉及到的点。
前端柒八九
2023/10/25
1.1K0
Rust 编译为WebAssembly 在前端项目中使用
认识 WebAssembly
WebAssembly 起源于 Mozilla 员工的一个业余项目。2010年,在 Mozilla 从事 Android Firefox 开发的 Alon Zakai,为了把他以前开发的游戏引擎移植到浏览器上运行,利用业余时间开发了一款名叫 Emscripten 的编译器,可以把 C++ 代码通过 LLVM IR 编译成 JavaScript 代码。
张凯强
2022/02/26
1.7K0
认识 WebAssembly
WebAssembly 基本了解
WebAssembly 也简称 wasm,是以.wasm 结尾的文件。我们都知道,在机器的世界,最终运行的都是 0101 这样的二进制文件,而 WebAssembly 是被编译成二进制的文件。WebAssembly 并不是一门语言,而是一个编译的目标,好比我们用 vite、gulp、rollup、webpack 等打包成最终的产物,WebAssembly 是把其它编程语言编译成二进制文件,从而可以运行在浏览器上,实现更复杂的应用。
wade
2024/04/29
8800
WebAssembly 基本了解
通过从JavaScript调用Rust来构建和扩充库【Programming(JavaScript)】
探索如何使用WebAssembly(Wasm)将Rust嵌入JavaScript。
Potato
2019/11/24
2.8K0
通过从JavaScript调用Rust来构建和扩充库【Programming(JavaScript)】
从Rust到远方:WebAssembly 星系
来源:https://mnt.io/2018/08/22/from-rust-to-beyond-the-webassembly-galaxy/
MikeLoveRust
2019/07/30
1.6K0
CloudBluePrint-Chapter 1.8 : 云上应用技术架构-WebAssembly (WASM)
从物理机,到虚拟机,再到容器引擎,最后到WebAssembly,计算领域的技术趋势主要包括以下几个方面:
行者深蓝
2023/09/07
6730
【译】谈谈2019年的RUST和WebAssembly
将 Rust 编译到 WebAssembly 对 Web 来说是快速、可靠的最佳选择。另外,Rust 与本地 C 语言调用约定和库集成的方式相似,Rust 还应该与 Web 的 JavaScript 和 HTML5 集成。这就是 Rust 和 WebAssembly 工作组的价值。
腾讯IVWEB团队
2020/06/28
9570
一文带你走进 Rust 和 WebAssembly 的世界
在进行正式的分享之前,先来说一说为什么,要学习 Rust 这一门在广义上归属于后端的语言,以及它能带给我们什么,未来有什么前景。
童欧巴
2021/08/20
2.2K0
一文带你走进 Rust 和 WebAssembly 的世界
WebAssembly 能解决 Serverless 的问题吗?
本文翻译自 Can WebAssembly Solve Serverless’s Problems? 。
云云众生s
2024/03/27
1610
如何用WebAssembly为Web应用提速20倍
翻译:疯狂的技术宅 原文:https://www.smashingmagazine.com/2019/04/webassembly-speed-web-app/
疯狂的技术宅
2019/04/23
8490
如何用WebAssembly为Web应用提速20倍
WebAssembly详解及其使用案例
刘艳 高级前端开发工程师 多端融合平台组成员 JDReact平台Web转换框架的架构设计,及核心组件开发 简介 JS于1995年问世,设计的初衷不是为了执行起来快。直到08年性能大战中,许多浏览器引入
京东技术
2018/04/10
5.1K0
WebAssembly详解及其使用案例
浏览器第四种语言-WebAssembly
而OpenAI 是一家人工智能研究机构,他们在 2020 年推出了一款基于 WebAssembly 的 AI 模型推理引擎,名为 Microscope。Microscope 可以在现代浏览器中运行,提供了高效的 AI 模型推理能力。
前端柒八九
2023/03/23
1.5K0
浏览器第四种语言-WebAssembly
为什么WebAssembly不是JavaScript的终结者,而是它的“助推器”?
导语 | 自从JavaScript创建到现在,每10年都会有新的变化,下一个10年的爆点在哪,可能就是WebAssembly!但WebAssembly绝不是JavaScript的终结者,反而是它的“助推器”!这是为什么呢?接下来我将带你揭晓答案,让你10分钟快速掌握WebAssembly! 一、了解WebAssembly (一)什么是WebAssembly? 官网定义:WebAssembly/wasm WebAssembly或者wasm是一个可移植、体积小、加载快并且兼容Web的全新格式(二进制),
腾讯云开发者
2021/09/18
1.1K0
WebAssembly分享
什么是WebAssemblely WebAssembly是一种运行在现代网络浏览器中的新型代码并且提供新的性能特性和效果。它设计的目的不是为了手写代码而是为诸如C、C++和Rust等低级源语言提供一个高效的编译目标。 对于网络平台而言,这具有巨大的意义——这为客户端app提供了一种在网络平台以接近本地速度的方式运行多种语言编写的代码的方式;在这之前,客户端app是不可能做到的。 目标 快速,高效,可移植--通过利用通用的硬件功能,可以在不同的平台上以接近原生代码执行的速度执行WebAssembly代码。
pitaojin
2018/06/13
3K0
Rust赋能前端:为WebAssembly 瘦身
大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder
前端柒八九
2025/01/03
1100
Rust赋能前端:为WebAssembly 瘦身
Rust与WebAssembly:构建跨平台应用的实战指南
WebAssembly (Wasm) 是一种可以在现代Web浏览器中运行的高效、低级字节码格式。它提供了跨平台执行环境,能够以接近本地速度运行,并且可以通过多种编程语言(如C、C++、Rust等)编译到Wasm格式。Rust作为一种内存安全、高性能的系统编程语言,已成为编译到WebAssembly的理想选择。
数字扫地僧
2024/12/15
2710
2023年WebAssembly 现状
第一个问题探讨了人们正在使用的语言,即在开发使用 WebAssembly 的应用程序时,你使用或尝试过使用哪些语言?
前端小智@大迁世界
2024/02/12
3450
2023年WebAssembly 现状
你想要的WebAssembly入门与实践
写在开头 不为了追寻潮流而学习某个技术,本人仅做最基础的入门与实践讲解 欢迎收藏前端生活社区:https://qianduan.life 想要加入资源群和前端交流群可以看文末 WebAssembly是什么,可以吃吗? 官网介绍: WebAssembly是由主流浏览器厂商组成的 W3C 社区团体 制定的一个新的规范 WebAssembly/wasm WebAssembly 或者 wasm 是一个可移植、体积小、加载快并且兼容 Web 的全新格式 webAssembly的特点 高效 WebAssembly 有
Peter谭金杰
2020/06/03
2.8K1
前端-WebAssembly 对比 JavaScript 及其使用场景
现在,我们将会剖析 WebAssembly 的工作原理,而最重要的是它和 JavaScript 在性能方面的比对:加载时间,执行速度,垃圾回收,内存使用,平台 API 访问,调试,多线程以及可移植性。
grain先森
2019/03/29
1.6K0
前端-WebAssembly 对比 JavaScript 及其使用场景
推荐阅读
相关推荐
WebAssembly 与 Rust 综述
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档