Chrome 支持運行 Kotlin、Java 等 GC 編程語言,你知道了嗎?
谷歌 Chrome 開發者博客官宣:Chrome 已默認啟用 WebAssembly 垃圾回收 (WasmGC) 功能 —— 能夠將具有 GC 的編程語言編譯為 WebAssembly (Wasm)。
下面是示例代碼
- Kotlin Wasm
import kotlinx.browser.document
import kotlinx.dom.appendText
import org.w3c.dom.HTMLDivElement
fun main() {
(document.getElementById("warning") as HTMLDivElement).style.display = "none"
document.body?.appendText("Hello, ${greet()}!")
}
fun greet() = "world"
據介紹,WasmGC 是 WebAssembly 社區群組發布的一項提案。當前的 Wasm 最小可行化實現只能處理線性內存中的 number 類型數據,即整數和浮點數。隨著引用類型 (reference types) 提案的發布,Wasm 還可以保留外部引用。
WasmGC 現在添加了結構體和數組堆類型,因此支持非線性內存分配。每個 WasmGC 對象都有固定的類型和結構,這使得虛擬機可以輕松生成有效的代碼來訪問其字段,而不會像 JavaScript 等動態語言那樣存在去優化的風險。
因此,該提案通過結構和數組堆類型為 WebAssembly 增加了對高級托管語言的有效支持,使得針對 Wasm 的語言編譯器能夠與主機 VM 中的垃圾回收器集成。簡單來說,通過 WasmGC,將編程語言移植到 Wasm 意味著編程語言的垃圾回收器不再需要成為移植的一部分,而是可以直接使用現有的垃圾回收器。