编者按:
本周,我们持续看到 WebAssembly 在服务器端崛起的例子,以及它在无服务器基础架构中的作用。与此同时,Rust得到更多的主流大公司和著名的项目采用,如微软,Facebook,甚至 Linux 内核也会加入!
WebAssembly Today
SSVM, 一个新的服务端 Wasm 虚拟机
SSVM 0.6.0 版本在可控的方式下(如:基于功能的安全性)支持 WASI 操作系统资源。除了 WASI, SSVM 还支持额外的,非标准的 WebAssembly 扩展,以安全地访问主机系统。
- 用于附加键/值存储的存储接口,
- 用于专用硬件的 AI 推理接口,
- 用于主机区块链的以太坊接口,
对 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 模型部署占用较小的内存。
- WebAssembly 模型比 AVM 小得多。
- 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 世界
Serverless Days 2020 展望无服务器架构的未来
InfoQ 这篇文章报道了最近的一次ServerlessDays China 活动。 无服务器计算之前是用于其他云服务的“粘合剂”,现在逐渐发展为全栈应用服务,因此,无服务器架构师逐渐变得热门。
WebAssembly 中文群,请扫码加入