網際網路大提速的懸念:一路向前的WebAssembly
前端的可玩性變得越來越高,也越來越開放了。現如今,我們不僅僅能夠使用HTML、CSS及Javascript來編寫各種跨端的應用程式,WebAssembly的出現還讓我們能夠以極小的成本來複用其他領域已存在的成果,以此來彌補JavaScript在其效能與功能上的不足。本文選自新書《深入淺出WebAssembly》,作者於航。
WCG(WebAssembly Community Group)提名主席JF在WebAssembly的官方Github倉庫中釋出一則訊息,稱將會於2015年6月17日將Wasm技術當前階段的發展計劃公之於眾。

JF在Github上討論Wasm標準的公開計劃
WCG的核心成員主要由一群來自蘋果、谷歌、微軟及Mozilla等網際網路巨頭公司的頂尖工程師組成,這些工程師會定期對Wasm技術的標準進行調研和討論。所有與Wasm技術相關的標準草案,以及未來的發展路線都由他們共同制定。
之後Wasm便開始進入飛速發展階段。多家主流瀏覽器廠商在其瀏覽器中實現一些實驗性的Wasm技術標準。同時,WCG官方也已在Wasm的標準制定上取得了多項進展。四家主流瀏覽器廠商已經在其各自的瀏覽器中實現了Wasm技術標準的原型版本。WCG官方提供的一個基於Unity3D實現的用於測試的Demo版遊戲已經可以被成功地編譯到對應的Wasm版本,並順利地在這些流瀏覽器上執行。至此,四大主流瀏覽器廠商開始在Wasm技術標準的跟進上保持同步,這也是Wasm技術發展中的一個里程碑時刻。
接著,Wasm開始漫長的“Browser Preview”階段,以實驗性功能的形式在各大瀏覽器中提供給開發者使用。WCG官方宣佈此時已在多個不同型別的Web瀏覽器中實現了一套統一的Wasm模組檔案標準。2017年2月,Wasm的官方LOGO確定下來。

參與投票的LOGO作品
最終確定的LOGO設計方案
2017年2月28日,四大瀏覽器廠商在Wasm技術的MVP標準實現上達成共識。這意味著Wasm在其最小可用版本(MVP)上的“Brower Preview”階段已經結束。瀏覽器可以正式以預設啟用的方式來支援Wasm技術,開發者不再需要通過手動開啟瀏覽器實驗性功能或下載技術預覽版本的方式來開啟瀏覽器對Wasm特性的支援。2017年8月3日,WebAssembly Working Group(WWG)成立。從WCG到WWG的轉變標誌著——Wasm技術將同HTTP等常用的Web技術一樣,成為W3C標準技術體系的一部分。
WWG的主要任務是負責推動Wasm技術的標準迭代,以及約束在各種不同型別瀏覽器上實現的Wasm標準能夠保持對使用者統一的響應行為。整個Wasm技術的發展過程會被分為三個階段,在每個階段中都對應有一次標準草案的變更和重新發布。每一次標準草案的變更都是根據之前6個月內WWG和WCG小組對當前標準的討論結果最終制定的,草案變更會使Wasm技術在平臺相容性、底層執行效率,以及各種技術細節的優化上都得到提升。

Wasm技術的發展規劃時間表
WCG會通過多種方式定期舉行關於Wasm標準相關議題的討論會。比如每月舉行一到兩次的短時線上視訊討論會,以及每年在各大網際網路巨頭總部舉行長達數日的線下研討會議。你可以通過關注WebAssembly官方Github倉庫或加入WCG並訂閱郵件列表的方式來獲取這些會議的安排時間表。WWG會以完全開放的態度來接收和採納開發者對Wasm標準提出的建議和意見,因此你可以通過參加這些定期舉行的線上/線下研討會來與Wasm核心團隊的成員進行面對面的交流。
WebAssembly是一種新的二進位制格式,它可以方便地將C/C++等靜態語言的程式碼快速地“執行”在瀏覽器中,這一特性為前端密集計算場景提供了無限可能。不僅如此,通過WebAssembly技術,我們還可以將基於Unity等遊戲引擎開發的大型遊戲快速地移植到Web端。WebAssembly技術現在已經被計劃設計成W3C的標準,眾多瀏覽器廠商已經提供了對其MVP版本標準的支援。在Google I/O 2017大會上,Google首次針對WebAssembly技術進行了公開演講和推廣,其Post-MVP版本標準更是對諸如DOM操作、多執行緒和GC等特性提供了支援。WebAssembly所帶來的Web技術變革勢不可擋。
本文節選自博文視點新書《深入淺出WebAssembly》
帶你一步跨越計算機系統底層機制及C++、編譯原理鴻溝,快速擁抱WebAssembly。
本書從原理入手,深入到渲染引擎、編譯器,通過例項詳細介紹各項特性及WebAssembly開發除錯,對於想進一步瞭解語言和瀏覽器引擎原理的開發者來說,是一本非常好的進階學習書籍。