WebAssembly 一週一報0715

編者按:html

本週,咱們持續看到 WebAssembly 在服務器端崛起的例子,以及它在無服務器基礎架構中的做用。與此同時,Rust獲得更多的主流大公司和著名的項目採用,如微軟,Facebook,甚至 Linux 內核也會加入!linux

WebAssembly Today

SSVM, 一個新的服務端 Wasm 虛擬機

SSVM 0.6.0 版本在可控的方式下(如:基於功能的安全性)支持 WASI 操做系統資源。除了 WASI, SSVM 還支持額外的,非標準的 WebAssembly 擴展,以安全地訪問主機系統。git

  • 用於附加鍵/值存儲的存儲接口,
  • 用於專用硬件的 AI 推理接口,
  • 用於主機區塊鏈的以太坊接口,

對 JavaScript 開發者而言, SSVM 能夠輕鬆地將高性能Rust函數整合到Node.js應用程序中.github

把 WebAssembly 編譯成 C

WASM C.png

以前的簡報中咱們討論了 「可移植的 C 語言」 做爲安全通用二進制的想法,以及支持它的 wasm2c 工具箱。本週,咱們在現實世界中看到了一個這樣的實際用例!web

Peter Salomonsen 寫了一篇文章演示瞭如何將 WebAssembly 模塊編譯爲 C 並使用它。文章中附有 WebAssembly 音樂項目的例子。很是有意思!typescript

WebAssembly 做爲 FaaS 架構的輕量級運行時

文章詳細介紹了無服務器 FaaS 基礎架構的三種主要方法,其中一種方法是使用特定於應用程序的虛擬機,如 WebAssembly. 這種方法正在興起,並提供了較高層級的抽象。後端

WebAssembly 虛擬機能夠提供用於訪問系統資源的高級「基於功能」的安全模型 (例如,經過 WASI 規範) 而不是粗粒度的操做系統級隔離。服務器端的 WebAssembly 看起來潛力無限。瀏覽器

JavaScript vs WebAssembly

JS wasm.jpeg

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 學習模型?

performance-rust-wasm-01.png

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

WX20200715-190126@2x.png

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 「培育」黃金

flake_growth_animation-optimized.gif

用 Rust 編寫的 Flake Growth,是一種用於模擬單晶黃金薄片從初始單個原子到微米級(即數十億個原子)的生長的工具。

Flake Growth 還有一個將 Rust 編譯到 WebAssembly 的版本,以在瀏覽器中運行。

Serverless 世界

Serverless Days 2020 展望無服務器架構的將來

InfoQ 這篇文章報道了最近的一次ServerlessDays China 活動。 無服務器計算以前是用於其餘雲服務的「粘合劑」,如今逐漸發展爲全棧應用服務,所以,無服務器架構師逐漸變得熱門。

WebAssembly 中文羣,請掃碼加入

Wasm 中文羣.jpeg

相關文章
相關標籤/搜索