目前 Mozilla 正在基于 WebAssembly 可移植代碼格式研發(fā) JavaScript 和 Rust 之間的橋梁——wasm-bindgen,意義是提高 JavaScript 和 Rust 之間的互操作性。 Mozilla 這么做是想讓 Rust 成為類似 JavaScript 的 Web 語(yǔ)言,讓它能夠與 Web 應(yīng)用中的 WebAssembly 和 JavaScript 一起使用。 Wasm-bindgen 提供 WebAssembly(wasm) 模塊和 JavaScript 之間的高級(jí)別交互。使用 wasm-bindgen,JavaScript 和 WebAssembly 之前不僅可以通過(guò)整形和浮點(diǎn)型進(jìn)行通信,還可以使用字符串、JavaScript 對(duì)象和類進(jìn)行。 wasm-bindgen 目前這個(gè)工具是基于 Rust 編寫的,不過(guò)它的底層基礎(chǔ)是獨(dú)立于語(yǔ)言的,隨著這個(gè)工具日趨穩(wěn)定,它還可以用于像 C/C 這種語(yǔ)言。 wasm-bindgen 的高級(jí)功能包括:
讓 Rust 成為 Web 語(yǔ)言 目前,WebAssembly 僅支持四種類型:兩種整型和兩種浮點(diǎn)型。但 JavaScript 和 Rust 開發(fā)人員經(jīng)常使用更豐富的類型,例如 Rust 開發(fā)人員使用 Result 類型進(jìn)行錯(cuò)誤處理,這樣,使用 wasm-bindgen 的時(shí)候,JavaScript 可以使用字符串或 Rust 函數(shù)調(diào)用 Rust API 來(lái)捕獲 JavaScript 異常。 通過(guò)消除 WebAssembly 和 JavaScript 之間的不匹配問(wèn)題,JavaScript 可以調(diào)用 WebAssembly 函數(shù),而反過(guò)來(lái), WebAssembly 可以也對(duì) JavaScript 函數(shù)執(zhí)行相同的操作。 基于 ECMAScript 模塊,wasm-bindgen 專注于 Rust,但其目的也是最終用于 C 和 C 等語(yǔ)言。但 Mozilla 稱 wasm-bindgen 目前還不夠穩(wěn)定,暫時(shí)還無(wú)法擴(kuò)展到其它語(yǔ)言。 Rust 社區(qū)的一大目標(biāo)是讓 Rust 成為 Web 語(yǔ)言。通過(guò)對(duì)標(biāo) WebAssembly,Rust 可以像 JavaScript 一樣成為一種可以在網(wǎng)絡(luò)上運(yùn)行的語(yǔ)言。但 Mozilla 指出,它并沒(méi)有試圖用 Rust 取代 JavaScript。它不希望 Rust WebAssembly 應(yīng)用程序完全用 Rust 編寫,相反,大部分應(yīng)用程序代碼仍然使用 JavaScript。 Rust 和 WebAssembly 將分別用于應(yīng)用程序的特定部分,例如解析源映射或確定對(duì) DOM 做了哪些更改。 wasm-bindgen 現(xiàn)已提供下載: 活動(dòng)福利 4月12日-4月15日,參與我們的問(wèn)卷調(diào)查【“提需求”贏福利,程序員的需求是什么樣的?】,并在文末留言您對(duì)開源中國(guó)公眾號(hào)的意見或建議。 我們將在活動(dòng)結(jié)束后,抽選數(shù)名幸運(yùn)用戶送出精美技術(shù)圖書一本(圖片僅供參考,書籍隨機(jī)贈(zèng)送) |
|