WebAssembly 一周一报 0805

加入 WebAssembly 中文群,请至文末添加二维码

编者按:本周,WebAssembly 正在进一步融入浏览器。开发者喜欢 WebAssembly,因为 WebAssembly 安全、可移植性强。Ps,开发者真的很喜欢用 Rust 重写著名的项目。

WebAssembly

Firefox 79 支持 WebAssembly 线程和 reference 类型

Firefox 79 于2020年7月28日发布,新版 Firefox 增加了以下对 WebAssembly 新功能的支持。

  • 首先,提供了7个新的内置操作用于批量内存操作 (bulk memory operations)。例如, 复制和初始化允许 WebAssembly 以一种更高效、性能更佳的方式来建模本地函数,如 memcpymemmove
  • reference-types 提议 现在得到了支持。它提供了一个新类型 externref, 可以保存任何 JavaScript 值,如字符串、 DOM reference 和对象。 wasm-bindgen 文档指导了如何充分利用 Rust 的 externref
  • 随着 SharedArrayBuffer 对象的返回,我们现在也能够支持 WebAssembly 线程。因此,现在 WebAssembly 内存对象可以跨多个 WebAssembly 实例之间共享。这些 WebAssembly 实例运行在单个 Web Worker。结果如何?Worker 之间通信非常快,以及 Web 应用程序的性能显著提升。

这些新的特性也有助于 WebAssembly 在服务端的推进。

Rive,基于WebAssembly的实时互动设计工具

协作界面设计工具 Figma 是浏览器中的 WebAssembly 最著名的案例之一。现在在浏览器中有了一个新的设计工具 Rive。据其博客称,Rive 应用程序利用 WebAssembly 创建了原生桌面和 web 应用。具体来说,Rive 团队使用 WebAssembly 和 WebGL 在浏览器中渲染 Skia 画图命令。与 Figma 相比,River 宣称其在动画上表现更佳。

WebAssembly 和 Motoko 在基于区块链的互联网计算机上

WebAssembly 的联合创建者 Andreas Rossberg 讨论了将不同语言编译 WebAssembly 实现来编写去中心化的“互联网计算机 ”。

Motoko 是 Dfinity 团队开发的全新的编程语言。他解释说,Motoko 是为了适应全新的去中心化计算的环境而优化的。

WasmBoxC: 简单容易和快速的无虚拟机沙箱

image

WebAssembly 的创始人 Alon Zakai 又有了一个新项目,叫做 WasmBoxC。这是从他的 wasm2c 项目衍生而来的,这个项目我们之前曾提到过。

WasmBoxC 是为了用 WebAseembly 的沙箱环境来安全地执行不受信任的代码而设计的。像下面这样

  • 使用 WebAssembly(wasm) 编译器编译不安全的库。但是它没有生成 Wasm 字节码,而是生成了代码在沙箱中的 C 语言文件。
  • 写一些 C 代码与编译过的 C 代码进行交互。这很必要,因为沙箱代码不能访问外部内存。

经典重现:将 Go 代码编译成 WebAssembly 的Boids

image

这个 Boids 游戏是用 Go 写的, 然后编译成 WebAssembly ,就可以跑在现有任一浏览器中。

为什么选择 WebAssembly?

  • 快速、高效且可移植性强
  • 以接近本机的速度执行
  • 在安全沙箱中运行

Rust 新闻

用 Rust 写的一系列命令行工具

本文列出了用 Rust 重新编写的命令行工具,使用 Rust 编写是为现有 shell 命令提供现代的、通常快得多的替代命令。

用 Rust 从头写一个文件系统

对于任何操作系统而言,文件系统都是必不可少的,本文教你如何用 Rust 编写一个文件系统。对系统编程的学生来说是非常好的学习材料。

R, Python, 和 C++的跑分算法

在机器学习算法方面,编译到本机的 C+ + 要比 Python 或 R 快得多。在许多机器学习生产系统中,Python 和 R 是引入生态系统工具的“粘合代码” ,而 C++ 运行重量级的计算。

Rust 函数编译成 WebAssembly,然后在 Node.js 中运行也是如此。

Rust 甜甜圈

image

最初的甜甜圈是用 C 语言写的。 Daniihh 用 Rust 重写了 C 甜甜圈。太酷了!

Deno 现在使用 SWC (一个在 Rust 中的 TS/JS 编译器)来进行Typescript 类型剥离

SWC (Speedy Web Compiler) 是用 Rust 编写的 TS/JS 编译器。Deno 团队现在在生产中使用 SWC 从 TypeScript 程序中进行类型剥离。

Serverless

在Azure上高效无服务部署PyTorch

在 Azure Serverless 上运行 Pytorch ONNX AI 模型。AI 即服务来了。

云原生 5G 核心

5G时代正在到来。运营商应如何从网络基础设施的角度引入5G 核心(5GC) ?这篇文章也许会有启发。

AWS 无服务应用模型支持 Step 函数状态机

无服务器应用模型(AWS SAM) 支持了 AWS Step 函数状态机。AWS Step 函数是一个无服务器的工作流编排服务,它允许我们将 AWS Lambda 函数和多个 AWS 服务排序到业务关键型应用程序中。

构建一个无服务代币化解决方案来保护敏感数据

从数据中得到价值的同时保护隐私,如何平衡这二者的关系?本文提供了一个方法:设计一个安全可靠可扩展且降低成本的代币化解决方案。

image

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