欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

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

程序员文章站 2024-03-05 22:38:49
...
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/