Chrome 支持运行 Kotlin、Java 等 GC 编程语言

来源: OSCHINA
编辑:
2023-11-03 17:02:00

谷歌 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 意味着编程语言的垃圾回收器不再需要成为移植的一部分,而是可以直接使用现有的垃圾回收器

展开阅读全文
点击加入讨论🔥(22) 发布并加入讨论🔥
本篇精彩评论
国外技术团队都在致力于丰富web生态,
而国内只会抱怨《还是喜欢原来的前端, 现在前端搞的太复杂了》。
2023-11-03 22:32
9
举报
受够了一些牛马天天怀念jq,我很怀疑那些人到底是不是前端
2023-11-04 14:56
4
举报
因为技术底层都是别人搞得,国内所谓web只是用web的应用层程序员而已。基础架构都是人家的。
2023-11-07 15:18
1
举报
js作为动态类型语言,v8引擎已经对其做了极致的优化,但性能跟c/c++仍有相当大的差距,想要更高的性能需要静态类型的代码和对其优化的运行环境,于是有了wasm的前身asm.js。AssemblyScript在实际工作中意义不大,需要改写成高性能的AssemblyScript代码的面向计算密集型的js代码不多,现有的可以编译成的wasm的高性能c/c++代码很多,何必用AssemblyScript再写一遍?从当年看到用asm.js把unity和虚幻引擎搬到浏览器上,到现在wasm虽然还不是很火,但一直在发展。
2023-11-04 14:47
1
举报
wow, 一个重大的转折点,以后会有越来越多的语言编译成 wasm,未来已来
2023-11-03 21:43
1
举报
22 评论
3 收藏
分享
返回顶部
顶部