Cheep 一个从 C/C++ 到 WebAssembly 和 JavaScript 的开源编译器

欢呼

Cheerp:Web 的 C++ 编译器

最近公布了 欢呼 3.0 发布, 一个编译器 允许您将任何 C/C++ 代码编译成 WebAssembly 或 JavaScript. 新分支以移动编译器和随附库以使用宽松的 Apache 2.0 和 LLVM 许可证而著称,而不是以前应用的有限许可政策,该政策为非商业项目提供 GPLv2 许可选项,为商业项目提供许可所有者。

Cheerp 既可用于移植现有的 C/C++ 应用程序和库以在浏览器中运行,也可用于从头创建高性能 Web 应用程序和 WebAssembly 组件。

自上次发布 Cheerp ( Cheerp 2.7 ) 以来已经一年多了,这个新版本包含了新的功能和优化,再次推动了使用 C++ 作为 Web 应用程序编程语言的技术水平。和游戏。

最重要的是,在此版本中,我们对 Cheerp 的许可模式进行了重大更改。 从 Cheerp 3.0 开始,所有核心编译器组件和库现在都在 Apache 2.0/LLVM 许可证下获得许可。 这标志着与我们之前的 GPLv2/双重商业许可模式的根本背离,允许将 Cheerp 3.0 用于任何目的,不受限制。

关于 Cheerp

萨尔瓦多PROYECTO 允许您在 Web 应用程序中组合 C/C++ 代码和 JavaScript 能够从 JavaScript 代码访问最初用 C/C++ 开发的函数,从 C/C++ 代码访问 JavaScript 对象、JavaScript 库、Web API 和所有 DOM 功能,并允许您创建混合构建,编译成 JavaScript 和部分 WebAssembly 的代码。 支持使用标准 libc 和 libc++ 库的构建项目。

与 Emscripten 编译器相比,Cheerp 生成更优化和紧凑的 WebAssembly 中间代码 (平均而言,生成的文件大小要小 7%。)

从概念上讲,差异归结为以下事实: 脚本 作为WebAssembly的对象格式,在后处理阶段进行绑定和优化 WebAssembly (wasm-opt)。 Cheerp 使用 LLVM 字节码作为库和目标文件的中间表示,允许使用 LLVM 级元数据进行更广泛的项目范围优化,而无需进行后处理。

相关文章:
Emscripten 3.0,一个使用 LLVM 的 WebAssembly 构建工具链

另外, Cheerp 使用 PreExecuter 优化器抢先执行代码 在编译时,例如,将用于初始化全局对象的构造函数转换为常量。 另外,编译时使用PartialExecuter,在解析函数参数的基础上,去掉执行时保证不会用到的代码。

Cheerp 还可以生成 JavaScript 代码以动态处理内存。 由垃圾收集器覆盖。 特别是,Cheerp 没有使用类型化数组模拟传统的地址空间,而是提供了从 C++ 对象到 JavaScript 对象的直接映射,这减少了内存消耗,因为 JavaScript 垃圾收集器能够删除未使用的对象。 为了提高性能,生成的 WebAssembly 中间代码使用 SIMD 扩展来编排数据操作的并行化。

Cheerp 可用作构建嵌入式 Web 应用程序的平台 C++ 中的客户端/服务器。 在当前实践中,通常开发一个单独的用 JavaScript 编写的基于浏览器的前端和一个单独的用 PHP、Python、Ruby 或 JavaScript/Node.js 编写的后端。

Cheerp 提供了构建完整的 C++ Web 应用程序的方法,这些应用程序在单个代码库中同时支持后端和前端。

在构建过程中,服务器端被编译为本地代码,界面被转换为 JavaScript 表示。 所有项目组件的调试,包括那些转换为 JavaScript 的组件,都是使用 Source Map 技术使用 C++ 源文本进行的。

最后, 如果您有兴趣了解更多有关它的信息,您可以在中查看详细信息 以下链接。

编译器代码基于 LLVM 和 Clang 开发,包括额外的优化以提高性能和减少编译输出的大小。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。