午夜精品人妻久久久-成年美女很黄的网站-在线看片免费人成视久网app-国产精品美女无遮挡一区二区-91精品国产综合久久久久-国产的免费视频又猛又爽又刺激-在线看片免费人成视久网app-久久香蕉国产精品视频-av一区二区三区高清

全網(wǎng)最火的5+優(yōu)秀 WebAssembly 運(yùn)行時(shí)!

大家好,很高興又見面了,我是”高級(jí)前端?進(jìn)階?”,由我?guī)е蠹乙黄鹎岸饲把?、深入前端底層技術(shù),大家一起進(jìn)步,也歡迎大家、、收藏、轉(zhuǎn)發(fā)!
高級(jí)前端?進(jìn)階
今天給大家?guī)淼闹黝}是全網(wǎng)最火的運(yùn)行時(shí),話不多說,直接開始!
前言
是除了以外,另一種可以在網(wǎng)頁中運(yùn)行的編程語言 。過去如果開發(fā)想在瀏覽器中運(yùn)行代碼來對(duì)網(wǎng)頁中各種元素進(jìn)行控制,只有這一種選擇 。
所以當(dāng)人們談?wù)摰臅r(shí)候 , 往往會(huì)拿來進(jìn)行比較 。但是它們其實(shí)并不是“二選一”的關(guān)系 , 即并不是只能用或者。
實(shí)際上,瀏覽器鼓勵(lì)開發(fā)者將這兩種語言一起使用,即使不親自實(shí)現(xiàn)模塊,也可以學(xué)習(xí)它現(xiàn)有的模塊打開瀏覽器cpu占用過高怎么辦,用它的優(yōu)勢(shì)來實(shí)現(xiàn)功能 。
圖片來自:
模塊定義的一些功能可以通過來直接調(diào)用 。所以就像開發(fā)者通過 npm 下載模塊并通過 API 使用它一樣,現(xiàn)在開發(fā)者也可以直接下載模塊并且使用其提供的功能 。
總之 ,  是一種偏底層、可移植的二進(jìn)制格式 , 旨在由現(xiàn)代 Web 瀏覽器和其他運(yùn)行時(shí)環(huán)境高效執(zhí)行 。它旨在成為高級(jí)編程語言的編譯目標(biāo),用于構(gòu)建在不同平臺(tái)和設(shè)備之間共享的應(yīng)用程序和庫 。
接下來,帶著大家一起來看看目前最火的幾個(gè)運(yùn)行時(shí) 。
1..1 是什么
是一個(gè)輕量級(jí)、高性能和可擴(kuò)展的運(yùn)行時(shí),它是當(dāng)今號(hào)稱最快的 Wasm VM 。
是由 CNCF 托管的官方沙箱項(xiàng)目,而CNCF 是一個(gè)開源的、供應(yīng)商中立的云原生計(jì)算中心,托管和等項(xiàng)目,使云原生具有普遍性和可持續(xù)性 。
的用例包括現(xiàn)代 Web 應(yīng)用程序架構(gòu)(同構(gòu)和應(yīng)用程序)、邊緣云上的微服務(wù)、無服務(wù)器 SaaS API、嵌入式功能、智能合約和智能設(shè)備等方方面面 。
是世界上第一個(gè)正式的 CNCF運(yùn)行時(shí)項(xiàng)目,可以設(shè)想它將作為邊緣云的關(guān)鍵任務(wù)輕量級(jí)運(yùn)行時(shí),在 CNCF 的開源云計(jì)算領(lǐng)域發(fā)揮重要作用 。
1.2 的主要特征
可以運(yùn)行從 C/C++、Rust、Swift、 或源代碼編譯的標(biāo)準(zhǔn)字節(jié)碼程序 。同時(shí),它還受到標(biāo)準(zhǔn)語言和編譯器工具鏈的支持,例如 LLVM、Rustc 和。
在安全、快速、輕量、可移植和容器化的沙箱中運(yùn)行,包括第 3 方 ES6、CJS 和 NPM 模塊 。它還支持混合使用這些語言(例如,使用 Rust 實(shí)現(xiàn)API)、Fetch API 和邊緣服務(wù)器上的服務(wù)器端渲染 (SSR) 功能 。
目前支持所有標(biāo)準(zhǔn)的功能和擴(kuò)展提案,例如:WASI 規(guī)范、引用類型、批量內(nèi)存操作和 SIMD,同時(shí)也在積極探索 wasi- 提案以支持程序中的網(wǎng)絡(luò)訪問 。它還支持許多為云原生和邊緣計(jì)算量身定制的擴(kuò)展 。例如,網(wǎng)絡(luò)套接字和擴(kuò)展 。
還支持針對(duì)特定應(yīng)用場(chǎng)景設(shè)計(jì)的非標(biāo)準(zhǔn)擴(kuò)展 。
由C++編寫,目前在上有5.6K的star、500+ fork、確實(shí)有一定的熱度 。
2..1 是什么
是在非瀏覽器上下文中運(yùn)行 Wasm 的一種方式,提供基于的超輕量級(jí)容器 。專注于支持在任何平臺(tái)上運(yùn)行 WASM 代碼,為其他跨平臺(tái)運(yùn)行時(shí)(例如 Java)提供了潛在的替代方案 。
在上將自己描述為“一個(gè)快速且安全的運(yùn)行時(shí),它使超輕量級(jí)容器可以在任何地方運(yùn)行:從桌面到云、邊緣和物聯(lián)網(wǎng)IOT設(shè)備” 。
使用熟悉的工具和喜歡的語言,將所有內(nèi)容編譯為。可以在任何操作系統(tǒng)上運(yùn)行它或?qū)⑵淝度氲狡渌Z言中 。
2.2 主要特征
有以下明顯特點(diǎn):
是一個(gè) 開源的編譯器,可以將 C/C++ 的代碼編譯成膠水代碼或者 代碼
嘗試可以從運(yùn)行開始 , 這是一個(gè)編譯為模塊 (qjs.wasm:查看文末資料下載) 的小型可嵌入引擎:
$ wasmer qjs.wasmQuickJS - Type "h" for helpqjs > const i = 1 + 2;qjs > console.log("hello " + i);hello 3
由Rust編寫,目前在上有14.6K的star、600+ fork、超過4.9K的項(xiàng)目使用它 。
3.WAVM3.1 什么是WAVM
WAVM( 虛擬機(jī))是(WASM) 的高性能、可移植運(yùn)行時(shí),可以在獨(dú)立環(huán)境中或作為主機(jī)應(yīng)用程序的一部分執(zhí)行 WASM 模塊 。它的設(shè)計(jì)輕量、高效,可用于在各種上下文中執(zhí)行 WASM 模塊 , 包括服務(wù)器、命令行工具和瀏覽器擴(kuò)展 。
WAVM 是可以執(zhí)行 WASM 模塊的幾個(gè)運(yùn)行時(shí)環(huán)境之一,并且以其對(duì)性能和靈活性的而著稱 。
WAVM 在 C++ 中實(shí)現(xiàn),并在 MIT 許可證下發(fā)布 。它是開源的并且積極開發(fā) , 非常注重安全性、可移植性和與 WASM 規(guī)范的兼容性 。它可以用作獨(dú)立的運(yùn)行時(shí)或集成到其他應(yīng)用程序和環(huán)境中,適用于廣泛的用例,包括服務(wù)器端執(zhí)行、命令行工具和瀏覽器擴(kuò)展 。
3.2 WAVM特點(diǎn)快速
WAVM 使用 LLVM 將代碼編譯為機(jī)器代碼,性能接近原生 。在某些情況下 , 它甚至可以超越本機(jī)性能,這要?dú)w功于生成特定CPU運(yùn)行機(jī)器代碼的能力 。
WAVM 還利用虛擬內(nèi)存和信號(hào)處理程序來執(zhí)行的邊界檢查內(nèi)存訪問 , 其成本與本機(jī)未經(jīng)檢查的內(nèi)存訪問相同 。
【全網(wǎng)最火的5+優(yōu)秀 WebAssembly 運(yùn)行時(shí)!】安全
WAVM 阻止代碼訪問虛擬機(jī)之外的狀態(tài),或調(diào)用您未明確鏈接到模塊的本機(jī)代碼 。
WAVM 容易受到某些邊信道攻擊(Side- ),例如變體 2 。WAVM 可能會(huì)為特定的邊信道攻擊添加進(jìn)一步的緩解措施 , 但要防范所有此類攻擊是不切實(shí)際的 。
您應(yīng)該使用另一種隔離形式 , 例如操作系統(tǒng)進(jìn)程,以保護(hù)敏感數(shù)據(jù)免受不受信任的代碼的影響 。
便攜
WAVM 是用可移植的 C/C++ 編寫的,帶有少量特定于體系結(jié)構(gòu)的匯編和 LLVM IR 生成代碼 。
WAVM 在 X86-64 、MacOS 和 Linux 上經(jīng)過測(cè)試并完全支持 。它旨在在任何 POSIX 兼容系統(tǒng)上運(yùn)行,但并未在其他系統(tǒng)上進(jìn)行例行測(cè)試 。
對(duì)的支持正在進(jìn)行中 。WAVM 主要在Linux 上運(yùn)行,但在處理堆棧溢出和部分越界存儲(chǔ)方面存在一些已知錯(cuò)誤 。
WAVM 的運(yùn)行時(shí)需要 64 位虛擬地址空間 , 因此不能移植到 32 位主機(jī) 。然而,WAVM 的匯編器和反匯編器在 32 位主機(jī)上工作 。
完全支持 1.0+可擴(kuò)展
WAVM 完全支持1.0,并加上許多擴(kuò)展:
WAVM由C++編寫 , 目前在上有2.4K的star、200+ fork 。
4..1 什么是
是一個(gè)字節(jié)碼聯(lián)盟項(xiàng)目,它是一個(gè)獨(dú)立的 wasm-only 優(yōu)化運(yùn)行時(shí),用于和 WASI 。它可以在 Web 環(huán)境之外運(yùn)行代碼,既可以用作命令行程序,也可以用于嵌入到更大應(yīng)用程序中的庫 。
致力于成為一個(gè)高度可配置和可嵌入的運(yùn)行時(shí),以在任何規(guī)模的應(yīng)用程序上運(yùn)行,不過目前許多功能仍在開發(fā)中 。
4.2 特點(diǎn)
如果已經(jīng)安裝了 Rust 編譯器 , 那么可以獲取一些 Rust 源代碼:
fn main() {println!("Hello, world!");}
然后通過編譯和執(zhí)行:
$ rustup target add wasm32-wasi$ rustc hello.rs --target wasm32-wasi$ wasmtime hello.wasmHello, world!
由Rust編寫、目前在上有11.7K的star、900+ fork,超過16.5K的項(xiàng)目使用它 。
5.其他Wasm運(yùn)行時(shí)5.1 Wasm3
快速的解釋器和最通用的 WASM 運(yùn)行時(shí) 。
A fast, and the mostWASM .
Wasm3 可以用作的庫包含: 、 Rust 、 C/C++ 、、Zig 、Perl Swift 、 .Net 、Nim 、 、 、 、等等
wasm3 通過了規(guī)范測(cè)試套件,能夠運(yùn)行諸多 WASI 應(yīng)用程序 。最低系統(tǒng)要求:~64Kb 代碼和~10Kb RAM 。wasm3 可在多種架構(gòu)(x86、、ARM、RISC-V、、MIPS、、ARC32 等)和平臺(tái)上運(yùn)行:
Wasm3由C語言編寫、目前在上有5.9K的star、360+ fork 。
5.3 wasm-micro-
Micro(WAMR) 是一個(gè)輕量級(jí)的獨(dú)立(WASM) 運(yùn)行時(shí),具有占用空間小、高性能和高度可配置的特性 。適用于從嵌入式、物聯(lián)網(wǎng)、邊緣到可信執(zhí)行環(huán)境 (TEE)、智能合約、云原生等應(yīng)用程序。它包括以下幾個(gè)核心組成部分:
Micro 由C語言編寫、目前在上有3.6K的star、450+ fork , 代碼貢獻(xiàn)者超過100+ 。
6.本文總結(jié)
本文主要和大家介紹前端最火的幾個(gè)運(yùn)行時(shí),包括:、、WAVM、、Wasm3、WAMR等等以及它們的特點(diǎn) , 其中和由Rust編寫打開瀏覽器cpu占用過高怎么辦,而和WAVM由C++編寫,Wasm3、WAMR由C語言編寫 。關(guān)于六個(gè)運(yùn)行時(shí)到底哪個(gè)最好,文章并沒有給出答案,大家可以在實(shí)際項(xiàng)目中探索 。
針對(duì)每一個(gè)運(yùn)行時(shí),后續(xù)都會(huì)單獨(dú)出文進(jìn)行詳細(xì)介紹 。如果有興趣,可以直接在我主頁繼續(xù)閱讀,但是文末的參考資料提供了大量優(yōu)秀文檔以供學(xué)習(xí) 。最后,歡迎大家、評(píng)論、轉(zhuǎn)發(fā)、收藏!
參考資料
本文到此結(jié)束 , 希望對(duì)大家有所幫助 。