Duetto:更快更智能的C++/JavaScript代码转换器

jopen 11年前

        Duetto 是一个编译器,可以将 C++ 程序编译为二进制代码和 Javascript 代码,这允许开发者使用单一的 C++ 代码库编写高性能的分布式 Client/Server 应用。 

Duetto:更快更智能的C++/JavaScript代码转换器

        Duetto 的作用 

        为了使 Web 应用的执行速度接近于本地应用,科技巨头开始探索使用底层语言开发 Web 应用的可能性。Mozilla 带来了 asm.js,这是一个 JavaScript 子集,可以被用来作为一个底层的、高效的编译器目标语言,也就是说开发者可以将本地应用编译为该语言或 JavaScript,以实现更高的性能。 

        目前比较知名的解决方案是 Emscripten,这是一个基于 LLVM 的编译器,可以将任何通过 LLVM 前端(比如 C/C++ Clang)生成的 LLVMIR 中间码编译成 JavaScript。 

        Duetto 类似于 Emscripten,同样基于 LLVM。但 Duetto 的开发人员表示,Duetto 比 Emscripten 更快、更智能。 

        更智能的 Emscripten 替代品 

        Emscripten 通过模拟一个完整的字节寻址地址空间来处理 C++ 代码,尽管这是一个很好的解决方案,但是不太理想。因为 JavaScript 不是基于字节寻址地址模式的,而是基于对象寻址模式——所有内存被包含在一个对象中。而 C++ 没有什么不同。 

        Duetto 的做法是——集成了 clang 和 LLVM 工具链,能够将 C++ 面向对象的结构映射为本地 JavaScript 对象。事实证明,在现代 JavaScript 引擎上,访问对象比访问数组要更快。Duetto 开发人员给出了以下基准测试结果: 

Duetto:更快更智能的C++/JavaScript代码转换器

        目前状态 

        Duetto 开发人员表示,目前该编译器的后端已经开发完备,已经可以将 C++ 应用程序编译为 Web 应用,尤其是游戏应用。 

        但是 Duetto 前端还不太完善,目前 Duetto 开发人员的首要任务是改进 bug 报告,使用户的移植体验更加平滑。 

        Duetto 开发人员称,未来 6 个月内,Duetto 将会作为开源项目正式发布。 

        项目官网http://leaningtech.com/duetto/

来自: www.iteye.com