WebAssembly-初識(shí)
在EOS的github代碼庫(kù)中可以看到,EOS大部分是由c++寫(xiě)的,但是可以看到WebAssembly占了百分之50之多,由于本人也是剛剛接觸WebAssembly,有許多不解的地方,希望大家一起探討。
起源
在當(dāng)今的瀏覽器中,web前端語(yǔ)言JavaScript,可以稱為速度最快的動(dòng)態(tài)語(yǔ)言之一。但盡管如此,它還是無(wú)法與原生的C/C++代碼相媲美。所以,WebAssembly就出現(xiàn)了。
WebAssembly是除了JS以外另一種前端編程語(yǔ)言,它描述為“在網(wǎng)絡(luò)上運(yùn)行C ++的一種方式”。
簡(jiǎn)介
實(shí)際上,我們可以把WebAssembly看成另一種“目標(biāo)匯編語(yǔ)言”,每一種目標(biāo)匯編語(yǔ)言(x86、ARM)都依賴于特定的機(jī)器結(jié)構(gòu),而 WebAssembly 與其他的匯編語(yǔ)言不一樣,它不依賴于具體的物理機(jī)器??梢猿橄蟮乩斫獬伤歉拍顧C(jī)器的機(jī)器語(yǔ)言,而不是實(shí)際的物理機(jī)器的機(jī)器語(yǔ)言。
使用
WebAssembly 支持情況最好的編譯器工具鏈?zhǔn)?LLVM。有很多不同的前端和后端插件可以用在 LLVM 上。因此許多開(kāi)發(fā)者用 C 語(yǔ)言或者 Rust 開(kāi)發(fā),再編譯成 WebAssembly。也有許多其他的方式來(lái)開(kāi)發(fā),直接編寫(xiě),或者利用 TypeScript 開(kāi)發(fā) WebAssembly 模塊。
優(yōu)點(diǎn)
1.可以大幅度提高 Javascript 的性能,同時(shí)也不損失安全性。Webapp 和 原生 App 的性能差距變得很小。
2.基本之前需要插件來(lái)提高速度這種技術(shù)已經(jīng)沒(méi)有必要了, 網(wǎng)頁(yè)應(yīng)用的移植性會(huì)變得更好。
3.? WebAssembly 其實(shí)允許任何語(yǔ)言編譯到它制定的AST tree(目前支持比較完善的c/c++/ rust),你可以這幾種后端靜態(tài)語(yǔ)言來(lái)寫(xiě)網(wǎng)頁(yè)了。
了解更多請(qǐng)到WebAssembly Design。
當(dāng)然有關(guān)WebAssembly的東西我只是了解了一下,有感興趣的同學(xué),可以一起學(xué)習(xí),感覺(jué)還是很有前景的一門(mén)語(yǔ)言