WebAssembly(Wasm)是一项技术,可以重塑我们为浏览器构建应用程序的方式。 它不仅使我们能够构建全新的Web应用程序类,而且还使我们能够使用JavaScript编写的现有应用程序更加高效。
在有关Rust和Wasm生态系统状态的本文中,我将尝试解释为什么Rust是可以释放WebAssembly真正潜力的语言。
什么是WebAssembly?
WebAssembly是一种二进制文件格式,所有主流浏览器(IE 11除外)都已实现了虚拟机运行。 WebAssembly的启动和运行速度比JavaScript快得多,因为二进制格式简单易行,浏览器可以以高度优化的方式进行解析和运行。 如果您对使WebAssembly与众不同的技术细节感兴趣,我建议您参阅Lin Clark在该主题上的文章 。
那么,为什么要使用它呢?
JavaScript的性能还不够 。WebAssembly可用于编写整个Web应用程序或用性能接近本机速度的东西替换性能可能不足的少量现有应用程序。 另外,由于WebAssembly是一种类似于本机的程序集格式,因此许多语言都可以编译为它,这意味着在其他平台和Web之间共享代码现在更加实用。
其他语言
可以将许多不同的语言编译为WebAssembly,包括C#和Go ,那么为什么不使用它们代替Rust? 尽管编程语言的使用总是受个人喜好的影响,但有很多原因使Rust成为工作的最佳工具。 因为这些语言具有必须包含在WebAssembly二进制文件中的大型运行时,所以它们仅对新建项目才真正实用(即,它们仅可用作JavaScript替代品)。 Wasm上的该Go Wiki文章说,未压缩的可实现的最小二进制大小约为2MB。 这反映了我所见。 对于Rust,它的运行时极少(基本上只是一个分配器),“ hello,world”示例在我的机器上编译为1.6KB,而没有任何编译后大小优化(这可能会使它进一步降低)。
这并不是说浏览器中Go或C#的未来是黯淡的-我为这些努力可能带来的结果感到非常兴奋。 但现实情况是,这些技术可能始终是新建项目的最佳选择。
与Rust一样,C和C ++附带的运行时非常小,因此对于将其嵌入现有应用程序和库中可能是实用的。 但是,Rust非常容易使用我们将在本系列其他文章中探讨的工具来创建具有相当惯用JavaScript接口的 WebAssembly二进制文件,而C和C ++中的过程则更为手动。 Rust中的工具绝对很棒,我认为它使整个体验变得更加愉快。 Rust还是一种内存安全性更高的语言,这意味着在安全的Rust中不可能有C和C ++中常见的一整类错误。 如果您习惯于存储JavaScript,Java和C#等安全语言( 即使您不是 ),那么您可能想要使用Rust。
我们继续吧!
如果您对WebAssembly感兴趣,我仍然鼓励您尝试使用WebAssembly支持的任何一种使您最快乐的语言-无论是C ++,C#还是其他。 如果您有兴趣了解有关Rust中Wasm开发的更多信息,请在评论中告诉我。 接下来,我将介绍如何从JavaScript调用Rust。 而且,如果您想比较比较Rust的故事和其他语言(例如C和Go)的故事,请告诉我 ,以后我会写更多。
翻译自: https://opensource.com/article/19/2/why-use-rust-webassembly