隨著9月19日Safari和10月31日Edge的發(fā)布,蘋果與微軟加入了谷歌和Mozilla,在生成環(huán)境瀏覽器中提供了對(duì)WebAssembly的支持。這四家公司的瀏覽器都能運(yùn)行編譯為wasm二進(jìn)制格式的代碼。
Safari支持WebAssembly的第一個(gè)版本是11,而Edge的版本是16。Firefox是第一個(gè)發(fā)布支持WebAssembly功能的主流瀏覽器,是于2017年3月7日發(fā)布的52號(hào)版本,Chrome緊隨其后,在2017年3月9日發(fā)布的57號(hào)版本中包含了對(duì)WebAssembly。通過使用其他的高級(jí)工具,開發(fā)人員能夠以wasm二進(jìn)制格式來(lái)交付代碼,并且可以預(yù)期它能夠支持大多數(shù)的終端用戶。
從2017年3月31日各個(gè)主要的瀏覽器廠商就v1版本的規(guī)范達(dá)成共識(shí)以來(lái),WebAssembly已經(jīng)取得了巨大的進(jìn)步。不僅在所有的瀏覽器中都得到了實(shí)現(xiàn),而且其編譯工具鏈已經(jīng)開始成熟,現(xiàn)在已經(jīng)有人嘗試將WebAssembly集成到像webpack這樣更加標(biāo)準(zhǔn)的Web開發(fā)工具中。
webassembly.org推薦的編譯WebAssembly的工具鏈?zhǔn)荅mscripten。網(wǎng)站上有一個(gè)快速的開發(fā)人員指南,MDN上還有更多深入的文檔。這個(gè)工具鏈目前可以編譯C、C++或Rust,它首先將代碼編譯為L(zhǎng)LVM字節(jié)碼,然后將其轉(zhuǎn)換為asm.js,最后使用asm2wasm編譯工具,此時(shí)該工具用到了 WebAssembly二進(jìn)制工具集。通過wasm后端直接實(shí)現(xiàn)對(duì)純LLVM編譯的支持目前正在進(jìn)行之中并且正在逐漸成熟,在11月20日的一次pull request合并中,Rust成為了第一個(gè)使用它的語(yǔ)言。
在傳統(tǒng)的Web開發(fā)工具方面,發(fā)展也是很迅速的。Webpack得到了Mozilla的一個(gè)授權(quán),將WebAssembly作為第一等的模塊類型。webpack團(tuán)隊(duì)相信讓W(xué)ebAssembly更容易地集成到真正的生產(chǎn)環(huán)境中會(huì)推動(dòng)WebAssembly的實(shí)際采用。webpack核心團(tuán)隊(duì)的Sean Larkin這樣說(shuō):
如果開發(fā)人員、業(yè)務(wù)以及公司不能無(wú)縫地將其應(yīng)用于生產(chǎn)環(huán)境,WebAssembly不會(huì)進(jìn)步、發(fā)展和演進(jìn)。我們感覺webpack能夠讓人們更容易地使用該技術(shù),并促進(jìn)它的廣泛采用。
隨著工具鏈的改善和更多的支持,行業(yè)在迅速地將web assembly集成到各種領(lǐng)域之中。Mozilla最近的聲明宣布wasm得到了廣泛的支持,所涵蓋的范圍從計(jì)算機(jī)視覺到語(yǔ)言探測(cè),以及方方面面。Mozilla的工程師Luke Wagner說(shuō):
現(xiàn)在,我們看到人們將WebAssembly用到了各種類型的新項(xiàng)目之中。所以,這意味著,最終會(huì)有一天我們將在Web上運(yùn)行大多數(shù)的程序,其效果就像現(xiàn)在在本地PC上運(yùn)行那樣。
查看英文原文:WebAssembly Now Supported across All Browsers