WebAssembly 一周一报0715

编者按:

本周,我们持续看到 WebAssembly 在服务器端崛起的例子,以及它在无服务器基础架构中的作用。与此同时,Rust得到更多的主流大公司和著名的项目采用,如微软,Facebook,甚至 Linux 内核也会加入!

WebAssembly Today

SSVM, 一个新的服务端 Wasm 虚拟机

SSVM 0.6.0 版本在可控的方式下(如:基于功能的安全性)支持 WASI 操作系统资源。除了 WASI, SSVM 还支持额外的,非标准的 WebAssembly 扩展,以安全地访问主机系统。

  • 用于附加键/值存储的存储接口,
  • 用于专用硬件的 AI 推理接口,
  • 用于主机区块链的以太坊接口,

对 JavaScript 开发者而言, SSVM 可以轻松地将高性能Rust函数整合到Node.js应用程序中.

把 WebAssembly 编译成 C

WebAssembly 一周一报0715_第1张图片

之前的简报中我们讨论了 “可移植的 C 语言” 作为安全通用二进制的想法,以及支持它的 wasm2c 工具箱。本周,我们在现实世界中看到了一个这样的实际用例!

Peter Salomonsen 写了一篇文章演示了如何将 WebAssembly 模块编译为 C 并使用它。文章中附有 WebAssembly 音乐项目的例子。非常有意思!

WebAssembly 作为 FaaS 架构的轻量级运行时

文章详细介绍了无服务器 FaaS 基础架构的三种主要方法,其中一种方法是使用特定于应用程序的虚拟机,如 WebAssembly. 这种方法正在兴起,并提供了较高层级的抽象。

WebAssembly 虚拟机可以提供用于访问系统资源的高级“基于功能”的安全模型 (例如,通过 WASI 规范) 而不是粗粒度的操作系统级隔离。服务器端的 WebAssembly 看起来潜力无限。

JavaScript vs WebAssembly

WebAssembly 一周一报0715_第2张图片

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 一周一报0715_第3张图片

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 支持竟然没有进行过构建测试。

这一系列往来邮件已经在 LinuxRust社区引发了海量讨论。

用 Rust 写一个超赞的 4k intro

WebAssembly 一周一报0715_第4张图片

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 中文群,请扫码加入

Wasm 中文群.jpeg

你可能感兴趣的:(webassembly,rust,rust-lang,serverless)