用于编译Python/Boo/Ruby语法的工具,用于C/C++/LLVM/Javascript(使用JS ArrayBuffer提高速度)

Luk*_*ley 7 javascript python firefox pypy llvm

我正在尝试将使用Pythonic语义编写的代码自动编译/转换为本机和快速Javascript代码.

有什么工具可以做到这一点,可以像Java等一样提供良好的调试支持?

有没有人这样做过?

为什么?

我正在尝试用复杂的主循环,时间轴,一些物理模拟和一些复杂的交互来编写一些可视化代码.IE:它是一个实际的CPU绑定问题.

使用Javascript编写并在其浏览器环境中进行测试比在一个体面的IDE中运行的Java,.NET或Python更难调试.但是对于使用复杂的客户端代码进行实际的大规模Web开发,至少需要编译为Javascript,如果不直接写入它.

背景:最新进展

Emscripten允许将C/C++编译为Javascript,由于ArrayBuffer的类型化阵列支持和新的浏览器JS引擎,可以在浏览器中提高效率,因为ASM.js和LLJS利用了Mozilla最近的速度改进(其他供应商可能很快跟随).

Altjs.org有一个Javascript holternaltives的清单,但是还没有专注于最近的速度改进或特别好的语义,但它已成为人们用更好的工具为浏览器编码的常见地方.特别是Emscripten有很多令人惊叹的演示.

已考虑的可能选择:

  • Shedskin - 目前我已经尝试过让Shedskin工作,但我的C++/C技能有限(Emscripten只为它使用的Boehm灵感垃圾收集器公开了一个C API,Shedskin需要一个C++垃圾收集类来处理它的对象,它不存在然而).
  • UnLden Swallow/RPython,到LLVM - 尚未能在Ubuntu上正确设置
  • Boo到Java然后到LLVM(还没能在我的Ubuntu系统上安装)

附加限制:

  • 我需要在我的Ubuntu系统上使用它.
  • 编译的Javascript应该小于1 MB
  • 仍然可以使用本地语言(也是交叉编译)进行调试,从而可以利用现有的调试工具.

"构建指令表的这个过程应该非常有趣.它不需要成为苦差事的真正危险,因为任何非常机械的过程都可能被转移到机器本身." - 艾伦·图灵,1946年

pal*_*ind 2

您想要一种可以编译为高效低级 JavaScript 的高级动态语言吗?哪有这回事。如果动态语言速度很快,我们一开始就不需要 asm.js。

如果你想编写可编译为高效 JavaScript 的代码,你将必须学习一种较低级的语言。Emscripten 速度快的原因是它从低级语言 (C/C++) 进行编译,与常规 JavaScript 相比,它允许更好的编译器优化。这也是asm.js和LLVM可以更快的原因。它们的速度来自于没有动态类型、垃圾收集(这就是为什么可以使用 ArrayBuffer 作为内存)和其他高级功能。

底线是。目前还没有工具可以将具有 Python 语义的语言编译为本机且快速的 Javascript 代码。根据语义的含义,这种情况不太可能出现,因为 Python 本身就是一种缓慢的语言。

目前生成快速 JavaScript 的最佳选择是 Emscripten。您还可以考虑 LLJS 或手动编写快速 JavaScript(Chrome 有这方面的调试工具)。

另外,考虑到你的问题的标题,你非常关心语法。你不应该这样。在为工作选择正确的语言时,语法是最不重要的因素之一。