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

如何用LLVM替换浏览器javascript引擎?,javascript,browser,webkit,llvm,gecko,Javascript,Browser,Webkit,Llvm,Gecko,作为概念证明,我希望得到一个能够运行LLVM IR的浏览器。其基本思想是,任何带有LLVM编译器的语言都可以作为一级公民在网上工作。(这就是为什么除了“回退”之外,我不想使用LLVM IR->JS路线) LLVM代码应该能够使用相同的限制来访问所有相同的函数(例如DOM)。我正在寻找入门指南,最好的切入点是什么(我有C/C++的经验)以及最容易扩展的浏览器是什么 理想情况下,我正在寻找非常模块化的东西,因此这只是另一个“脚本引擎”,就像javascript引擎一样,就像未来的任何其他引擎一样(例

作为概念证明,我希望得到一个能够运行LLVM IR的浏览器。其基本思想是,任何带有LLVM编译器的语言都可以作为一级公民在网上工作。(这就是为什么除了“回退”之外,我不想使用LLVM IR->JS路线)

LLVM代码应该能够使用相同的限制来访问所有相同的函数(例如DOM)。我正在寻找入门指南,最好的切入点是什么(我有C/C++的经验)以及最容易扩展的浏览器是什么

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

非常感谢

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


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

请看一下(PNaCl)。请注意,LLVM IR根本不是平台独立的。在这方面有什么进展吗?这似乎很有趣,因为PoC emscripten似乎是一个不错的选择。我确实喜欢你的想法,但我认为问“如何”是一个错误的方式。如果有人知道怎么做,他们就会去做,或者发布他们的设计。如果你想做到这一点,你需要做一些研究,当你提出一个你不知道如何解决的技术问题时,你可以过来问。你可以比较Dartium和Chromium之间的差异。