本周,我们持续看到 WebAssembly 在服务器端崛起的例子,以及它在无服务器基础架构中的作用。与此同时,Rust得到更多的主流大公司和著名的项目采用,如微软,Facebook,甚至 Linux 内核也会加入!
WebAssembly Today
SSVM, 一个新的服务端 Wasm 虚拟机
SSVM 0.6.0 版本在可控的方式下(如:基于功能的安全性)支持 WASI 操作系统资源。除了 WASI, SSVM 还支持额外的、非标准的 WebAssembly 扩展,以安全地访问主机系统。
对 JavaScript 开发者而言, SSVM
可以轻松地将高性能Rust函数整合到Node.js应用程序中
。
把 WebAssembly 编译成 C
之前的简报中我们讨论了 “可移植的 C 语言” 作为安全通用二进制的想法,以及支持它的 wasm2c 工具箱。本周,我们在现实世界中看到了一个这样的实际用例!
Peter Salomonsen 写了一篇文章演示了如何将 WebAssembly 模块编译为 C 并使用它。文章中附有 WebAssembly 音乐项目的例子。非常有意思!
WebAssembly 作为 FaaS 架构的轻量级运行时
文章详细介绍了无服务器 FaaS 基础架构的三种主要方法,其中一种方法是使用特定于应用程序的虚拟机,如
WebAssembly
. 这种方法正在兴起,并提供了较高层级的抽象。
WebAssembly 虚拟机可以提供用于访问系统资源的高级“基于功能”的安全模型 (例如,通过
WASI
规范) 而不是粗粒度的操作系统级隔离。
服务端的 WebAssembly 看起来潜力无限。
JavaScript vs WebAssembly
WebAssembly 会代替 JavaScript吗? 谁的性能更强大? Alex Fallenstedt 在推特上分享了他的benchmark。JavaScript 在字符串对比中更快,而 Rust + Wasm 在 arrays 中更快。
这可能是因为在浏览器设置中,字符串操作是JavaScript最常见的任务。因此,为 JavaScript 构建的 C / C ++ 运行时引擎,对字符串操作进行了超优化。对数字运算而言情况并非如此。
所以我们学到了什么呢?讨论抽象设置中的性能很难。我们必须判断实际应用场景中的性能。
用Rust 和 WebAssembly 实现机器学习
该文章介绍了如何使用 Rust crates 和服务端 WebAssembly 进行 K-clustering 和可视化。Rust 允许开发者编写
更高性能的机器学习函数
,同时 WebAssembly/SSVM 提供了运行时安全性、代码可移植性和可管理性。
如何使用 WebAssembly 运行 scikit 学习模型?
WebAssembly 是机器学习/AI应用程序(在浏览器和服务器上)的高性能运行时。本文作者描述了他们如何为专门用于 ML 模型的 FaaS 服务构建WebAssembly 运行时。ML FaaS 中的 WebAssembly 的优点包括:
-
-
与 Docker 容器相比,WebAssembly 模型的部署速度更快
-
-
-
WebAssembly 模型的可移植性允许它们在服务器,浏览器或
edge
上运行。
-
-
WebAssembly二进制文件使 A/B 测试变得简单
如何用 Blazor WebAssembly 实现 Azure Serverless
FreeCodeCamp 的这篇文章讲述了,如何使用 WebAssembly 在浏览器中构建富客户端应用程序,然后使用 Azure 无服务器函数为该应用程序构建后端。
Firefox 中的功能提升
Firefox 78 包括一个新的 RegExp 评估器,可以满足 ECMAScript 2018 的要求,还提升了对 WebAssembly 的支持。
Rust 新闻
Linux 内核 in-tree 支持 Rust 的讨论
在之前的周报中,我们提到了 Linux 内核可能采用和支持 Rust。之后,Linux 核心开发人员之间以电子邮件的形式进行了讨论。从他们讨论的内容,我们能大概知道 Rust 会如何得到支持。
Reddit 网友 crabbytag 做了总结:
-
Nick Desaulniers 问道 “我们应该这么做吗?” 或者“我们如何界定它使用的范围?”
-
包括 Greg Koah-Hartmann 在内的大多数人都对参加讨论感兴趣*
-
Josh Triplett, rustc 开发者——我很高兴 Linux 内核将为 Rust 语言开发囊括为重要议程。如果在内核中构建 Rust 接口需要一些附加语言功能,我们应该查看对语言的哪些增强最能满足这些要求。
-
Linus Torvalds ——我不希望我们陷入这样的局面,即默认情况,任何新的 Rust 支持竟然没有进行过构建测试。
这一系列往来邮件已经在
Linux
和
Rust社区
引发了海量讨论。
用 Rust 写一个超赞的 4k intro
4k intro 是用 4096 或者更少字节写一整个场景的视频模拟(包括数据)。这个 Intro 是用 Rust 和 glsl 写的。Glsl 用于在屏幕上渲染 UI,而 Rust 负责其它部分,包括世界创建、摄像头和对象控制、创建乐器和播放音乐等。查看 demo 视频吧!
微软和 Facebook 发布用 Rust 写的项目
微软发布了 Freta 项目,是一个云级别的安全漏洞扫描工具。是用 Rust 写的!
Facebook 也发布了一个内部项目,使用 Rust 构建一个基于 web 的书签工具。
从 TypeScript 转化为 Rust/WebAssembly
Boardgame Lab 团队决定将整个 Boardgame Lab 的引擎从 TypeScript 转换为Rust。原因是
-
WebAssembly 比 JavaScript 和 TypeScript 快
-
Rust 服务器更精简, Rust 比 Node.js 在同样负载下占用更小内存。
用 Rust “培育”黄金
用 Rust 编写的 Flake Growth,是一种用于模拟单晶黄金薄片从初始单个原子到微米级(即数十亿个原子)的生长的工具。
Flake Growth 还有一个将 Rust 编译到 WebAssembly 的版本,以在浏览器中运行。
Serverless 新鲜事
ServerlessDays 2020 展望无服务器架构的未来
InfoQ 这篇文章报道了最近的一次ServerlessDays China 活动。无服务器计算之前是用于其他云服务的“粘合剂”,现在逐渐发展为全栈应用服务,因此,无服务器架构师逐渐变得热门。
本文分享自微信公众号 - WebAssembly 中文社区(webassemblywasm)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。