我正在尝试将使用 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 替代方案的清单,但还没有特别关注最近的速度改进或良好的语义,但人们使用更好的工具为浏览器编写代码已成为普遍的地方。特别是 Emscripten 有大量令人惊叹的演示。
已经考虑的可能选项:
- Shedskin - 目前我已经尝试让 Shedskin 工作,但我的 C++/C 技能有限(Emscripten 只为它使用的受 Boehm 启发的垃圾收集器公开了一个 C API,而 Shedskin 需要一个 C++ 垃圾收集类来处理它的对象,但它不存在然而)。
- Unladen Swallow / RPython,到 LLVM - 还不能在 Ubuntu 上正确设置
- Boo 到 Java,然后到 LLVM(还不能在我的 Ubuntu 系统上设置)
附加约束:
- 我需要在我的 Ubuntu 系统上使用它。
- 编译后的 Javascript 应该可能小于 1 MB
- 使用同样交叉编译的本机语言进行调试应该仍然是可能的,允许利用现有的调试工具。
“这个构建指令表的过程应该非常有趣。它没有成为苦力的真正危险,因为任何非常机械的过程都可能交给机器本身。” ——艾伦·M·图灵,1946