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