WebAssembly Summit 總結:不要因為走得太遠,而忘記為什麼出發


本文作者:Tim McCallum,就職於Second State


Tim 參加了上週召開的 WebAssembly Summit,並與 Wasm 社區進行了深入交流。WebAssembly 在這幾年得到了很大的發展,但我們不能忘記 WebAssembly 的最大優勢:安全。


我們不能在開發者生產力和用戶安全之間做妥協,我們兩者都要!

2020年2月10日,WebAssembly 峰會在硅谷舉行。 會場位於加利福尼亞州普利茅斯聖山景城1625號,這是Google 最新的建築。

WebAssembly Summit 總結:不要因為走得太遠,而忘記為什麼出發


這個組織活動組織的非常棒 ,向嶄新的 WebAssembly 社區傳遞了明確的訊息:

“Be actively awesome to each other!”

“成為彼此進取而給力的夥伴!”


WebAssembly Summit 總結:不要因為走得太遠,而忘記為什麼出發


Wasm 峰會主要議題

這次峰會的講者陣容非常出色。 來自 Mozilla 的 Lin Clark 為這次活動拉開了序幕,她發表了關於構建 WebAssembly 新型生態系統的開幕演講,發人深省,令人拍案叫絕。

之後,演講者們陸續走上講臺,恣意高談 WebAssembly 未來的發展,句句金石之言。

來自 Cloudflare 的 Ashley Williams 就 WebAssembly 的未來以及 WebAssembly 與諸如 Javascript 等其他支持技術的關係做了精彩的演講。

來自蘋果公司的 Tadeu Zagallo 分享了一些有趣的研究成果,這些成果是針對 WebKit 的 WebAssembly 實現的編譯、啟動和運行時等 benchmarking 領域進行的研究和開發。

Peter Salomonsen 演示瞭如何使用 WebAssembly 創作和演奏音樂,給觀眾留下了深刻的印象。

Jonathan Beri 從嵌入式系統的角度定義了物聯網(Internet of Things,IoT) ,並繼續探索 WebAssembly 作為嵌入式運行時環境中介語言的應用。

Kevin Hoffman,Capital One 銀行的架構主管,闡述了 Wasm 在雲中 的好處。 Kevin 引入了一些新的想法和工具(中級和高級運行時)來支持這些想法。我非常同意這裡的一個重要信息: WebAssembly 是分佈式計算的未來。(我曾經也撰寫過一篇文章來講解 WebAssembly 與分佈式計算的關係)

來自 MediaWiki 的 Brion Vibber 討論了 Wikipedia 的 ogv.js media-compatibility-shim 架構,以及瀏覽器內媒體豐富的空間中存在的挑戰。

在享受了一整天吸收各種 Wasm信息,以及與其他行業專業人士的交流之後,是時候讓來自谷歌(同時也是 WebAssembly Community Group的主席)的最後一位演講者 Ben Smith 發表閉幕主題演講了。

Ben 的演講題目是《把派(PIE)做大》。 正如 Ben (見下圖)提到的,也許有些人沒有意識到,“5年前,WebAssembly 甚至還根本不存在”。 有趣的是,早在2013年,就可以通過 emscripten 和 asm.js 證明編譯 c 和 c + + 代碼能夠兼容現代瀏覽器。 Alon Zakai 在2010年創建了 emscripten,後來又共同創建了 WebAssembly 和 asm.js。像他這樣的開創性發展,提供了具體的證據有力地證明了 C 、C + + 以及最終其他語言都能用在Web上。


WebAssembly Summit 總結:不要因為走得太遠,而忘記為什麼出發

左: Alon Zakai 右: Ben Smith

從 WebAssembly 特定的角度來看,2015年,一小部分開發者設法開發出了 WebAssembly 的可執行(二進制)和 s-expression (文本)格式。 當時的一個特性要求是創建一個可以在兩種格式之間進行轉換的機制。 Ben 最初創建這種機制的工作被稱為 sexpr-wasm (代表 s-expression to wasm)。

在接下來的4.5年裡,這個項目繼續發展,並在2016年9月重新命名為 WABT。

Wabt 是 WebAssembly 的一套超強大的工具,是 WebAssembly 開發和部署的基礎。 WABT 的目標是完全保持和符合 WebAssembly 規範。

我個人認為,每個使用 WebAssembly 完成過某些任務的開發者都使用過 WABT。

WebAssembly 卑微的出身

最初 WebAssembly 的設計並不起眼,它的設計初衷僅限於前面提到的 asm.js。 也就是說,允許用 c 和 c + + 等語言編寫的計算機軟件作為 web 應用程序運行。

Ben的演講解釋了 WebAssembly的應用是怎樣演變得如此之多的。 Ben 的演講聚焦於增長和繁榮, 特別是關於爭取多贏的局面。就像 Ben 說的那樣,把蛋糕(PIE)做大。


WebAssembly Summit 總結:不要因為走得太遠,而忘記為什麼出發


正如前面提到的,WebAssembly 一開始就有一系列非常低調的目標。 一個[小]Pie。

讓我們來看看2015年左右的Pie。

2015年中期的 Pie

A:能力,Wasm能做什麼? // play around with numbers and memory P:producer,誰 / 什麼可以製作《天空》 ? // C++ I:互操作性,能夠和誰交互? // Javascript E:embedder,什麼可以運行 Wasm? / / Web 瀏覽器

2020年的 WebAssembly

短短几年時間裡,WebAssembly 取得了長足的進展。

A:能力

目前有100多個不同的項目使用 WebAssembly。 這些應用包括自由手繪應用程序、媒體播放器、 Gameboy 仿真器、瀏覽器內壓縮 / 解壓應用程序,甚至還有一個AR數獨解謎應用程序。

P:producer

目前大約有15種編程語言可以以穩定的、面向生產的方式編譯到 WebAssembly。 其中包括: .Net,AssemblyScript,C,Rust,Haskell,Rust 和 Zig。 還有更多的正在開發中。

I:interoperability

WebAssembly 現在有了一個基於能力的 API 設計,它允許 WebAssembly 代碼與外部世界交互,同時仍然保留了 WebAssembly 的沙盒特性。 而且,曾經強大而有用的 Web api 集合現在正不斷得到實現。

E:embedder

現在可以在許多不同的平臺上運行 WebAssembly。 目前正在積極開發的運行時大約有20個。 WebAssembly 不再侷限於瀏覽器。 這裡有區塊鏈實現、無服務器應用程序、操作系統可執行程序和物聯網實現的例子,它們被部署在獨立和受限制的嵌入式運行時環境中。

看到這麼多不同的項目和運行時,真是令人驚訝。

迴歸初始(Going full circle)

在推動這一進程和享受 Pie 變大的同時,我想說我們還必須回到起點,反思 Lin Clark 在開幕主題演講中所傳遞的信息。

隨著 WebAssembly 漸漸應用到瀏覽器以外的地方,我們需要記住,我們會遇到一些不一定具有瀏覽器同樣沙盒功能的情況。 沙盒有助於實現 WebAssembly 的主要優勢之一:安全性!

現在,大約80% 的代碼(在給定的項目中)由預先存在的庫和依賴項組成, 這在重用和效率方面是非常妙的。 軟件開發者非常清楚,預先存在的模塊可以讓我們節省時間,也可以構建更好的軟件。這是站在巨人的肩膀上。 不幸的是,攻擊者可以將惡意代碼植入這些可重用模塊中。 軟件開發者必須儘量避免普遍存在的漏洞,這樣才能保護使用軟件的用戶。

實現高度安全、安全和隱私的最佳方法之一是確保軟件產品不能訪問最終用戶的系統資源。傳統的虛擬機(VM)和容器提供了一層沙盒,剝奪了軟件訪問主機系統的能力。

那麼,就隔離而言,我們如何實現同等級別的安全呢?

WebAssembly 的安全性是經過精心設計的。 例如,默認情況下 WebAssembly 對每個模塊進行沙箱處理; 模塊對 api 或系統調用沒有任何訪問權限。 使用 WebAssembly 時,如果開發者希望模塊訪問 API 或系統調用,則需要主動聲明訪問,然後作為附帶模塊的一部分要提供這些信息。這使得模塊的意圖非常公開和透明,不會有所隱藏。

WebAssembly 系統接口 (WASI) 提供了一種基於功能的安全性,不同的模塊可以對不同的資源擁有不同的權限。 WebAssembly 的未來設想,是應用每個模塊虛擬化的細顆粒度形式。 使用這種設計,開發者能夠發現惡意模塊,而不會將該代碼包含在他們正在構建的應用程序的依賴關係樹中。

重要的是,正如 Lin 提到的,安全性的保證,不是使用 WebAssembly 時直接出現的。我們必須遵循良好的慣例,並將安全保證集成到我們的工具中。 這將需要一些工作。

作為一個社區,我們可以選擇讓我們的用戶默認是安全的。

在峰會期間,我看到了很多 WebAssembly 的新項目和用例。

在結束時,我感受到了 WebAssembly 未來可能性的啟發。

我離開峰會的時候,腦子裡一直在想一句話。

“我們不能在開發者生產力和用戶安全之間做妥協。 我們兩者都要! ”

Lin 在演講的最後引用了她的團隊成員、《星際迷航》的聯合創作人盧克 · 瓦格納的話:

“我們有機會為本機開發構建新的可移植和可伸縮的默認安全基礎。 我們需要採取深思熟慮的跨行業行動,以確保這一切以正確的方式發生。”

點擊擴展鏈接,可查看首屆Wasm 峰會的視頻合集。


分享到:


相關文章: