Python可以编译为在V8引擎上运行吗?

7 投票
7 回答
2888 浏览
提问于 2025-04-16 13:07

我们可以假设,JavaScript 是被编译成某种字节码,然后在 V8 引擎上运行的,对吧?那么,Python 这个语言是不是也足够相似,我们可以想象它也能被编译成同样的字节码,然后在 V8 上运行呢?

有没有什么项目在尝试做这个呢?

7 个回答

3

现在已经有三个项目可以把Python代码转成Javascript代码。转换后的Javascript可以在任何引擎上运行,包括V8引擎。你可以查找一下Pyjamas、Skulpt和Py2JS这几个项目。

需要注意的是,这个过程和把Python代码编译成V8的字节码是不一样的,但最终的效果差不多。

5

据我所知,目前没有专门针对V8虚拟机的项目。不过,Pypy和之前的Unladen Swallow(现在已经合并到主CPython代码的py3k-jit分支中)都尝试将Python代码即时编译成本地代码,这和V8对Javascript的处理方式类似。

正如@something所说,pyjamas让你可以用Python编写代码,然后把它转换成Javascript,这和GWT对Java的处理方式很像。通过这种方式转换的代码,在V8上运行时会享有和其他Javascript代码一样的好处。

3

V8其实并没有一种通用的字节码。它有一种正则表达式的字节码,但通常并不会编译进去。还有一种反序列化的字节码和一种重定位信息的字节码,但这两者都是实现细节,没法用来做其他事情。

所以你要找的其实是能够编译成JavaScript源代码的东西。

撰写回答