如何用LLVM替换浏览器javascript引擎?

Hep*_*tic 22 javascript browser gecko webkit llvm

作为概念证明,我想让浏览器能够运行LLVM IR.基本思想是任何具有LLVM编译器的语言都能够作为网络上的一等公民.(这就是为什么我不想去LLVM IR - > JS路由除了"后备"以外的任何东西)

LLVM代码应该能够具有相同的限制所有相同的功能(例如DOM).我正在寻找入门指南,其中最佳潜水地点(我有C/C++经验)以及最简单的浏览器将是什么.

理想情况下,我正在寻找一些非常模块化的东西,所以这只是另一个"脚本引擎",就像javascript一样,就像其他任何未来的那样(例如直接python一个)

非常感谢

Mar*_*ark 3

Emscripten是一个针对 asm.js 的 LLVM 后端,可以在所有主流浏览器上执行。该项目可以追溯到 2010 年。这会将 IR 转换为 asm.js。理想情况下,您应该能够扩展项目以支持其他语言,而不仅仅是 C/C++;或者作为启动板,在根据您想要的浏览器界面编写执行环境的绑定之前将其他组件放置到位。

asm.js 已用于运行 Unreal 引擎,以及为 Archive.org 的游戏档案移植 DosBox。