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

时间:2011-06-12 07:35:01

标签: javascript browser webkit llvm gecko

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

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

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

非常感谢

1 个答案:

答案 0 :(得分:3)

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

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