WebAssembly Summit 總結:不要由於走得太遠,而忘記爲何出發

本文做者:Tim McCallum 就任於Second State

編者按:Tim 參加了上週召開的 WebAssembly Summit,並與 Wasm 社區進行了深刻交流。WebAssembly 在這幾年獲得了很大的發展,但咱們不能忘記 WebAssembly 的最大優點:安全。web

咱們不想在開發者生產力和用戶安全之間作妥協,咱們二者都要!express

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

file

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

「Be actively awesome to each other!」

「成爲彼此進取而給力的夥伴!」瀏覽器

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上。


左: 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 一開始就有一系列很是低調的目標。 一個[小]Pie。

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

A PIE,大約在2015年中期

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 時直接出現的。咱們必須遵循良好的慣例,並將安全保證集成到咱們的工具中。 這將須要一些工做。

做爲一個社區,咱們能夠選擇讓咱們的用戶默認是安全的。

這些通過深思熟慮的模式和設計已經開始集成到了由諸如字節碼聯盟(Bytedance Alliance)之類的項目提供的工具中。

在峯會期間,我看到了不少 WebAssembly 的新項目和用例。 在結束時,我感覺到了 WebAssembly 將來可能性的啓發。 我離開峯會的時候,腦子裏一直在想一句話。 「咱們不能在開發者生產力和用戶安全之間作妥協。 咱們二者都要! 」

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

「咱們有機會爲本機開發構建新的可移植和可伸縮的默認安全基礎。 咱們須要採起深思熟慮的跨行業行動,以確保這一切以正確的方式發生。」

做爲 W3C 的新成員,我很是期待參與以後的電話會議討論,這些電話會議會討論 WebAssembly 的提案以及更普遍的 WebAssembly 社區組織(GC)主題,正如本文中所提到的那樣。

我要感謝此次活動的組織者。 實際上,全部參與者都是「活力四射,超羣拔萃」的。 我見到了許多來自世界各地領先技術公司和項目的新朋友。 若是要我給出一個反饋,那就是「請明年再舉辦這個活動」。
我相信屆時,Wasm社區所取得的成就,會給你們帶來新的驚喜。

wasm 視頻合集.png

掃碼查看 WASM Summit 視頻合集

相關文章
相關標籤/搜索