Cheerp - a C/C++ compiler for Web applications - generates WebAssembly and JavaScript
Switch branches/tags
Nothing to show
Clone or download
Stefano De Rossi
Latest commit e35506e Nov 14, 2017
Permalink
Failed to load latest commit information.
media Added new Cheerp logo to meta project. Nov 2, 2017
README.md Updated with link to tutorial. Nov 14, 2017

README.md

Cheerp - a C/C++ compiler for Web applications

Gitter chat GitHub Issues Latest version Latest version changelog

Cheerp is an open-source, commercial C/C++ compiler for Web applications. It allows to compile virtually any C/C++ code (up to C++14) to WebAssembly, JavaScript, asm.js or a combination thereof.

Download latest version: Latest version Latest version changelog

Main documentation link: https://github.com/leaningtech/cheerp-meta/wiki

Main project link: https://leaningtech.com/cheerp/

This repository is the main reference for documentation, issue tracking, and release notes. Please contribute to Cheerp!

What is Cheerp?

Cheerp is a C/C++ compiler for the Web, based and integrated into the LLVM/clang infrastructure, and featuring numerous custom optimisation steps to maximise performance and minimise size of the compiled JavaScript/WebAssembly output.

Cheerp is used mainly to port existing C/C++ libraries and applications to HTML5, but can also be used to write high-performance Web applications and components from scratch. C/C++ gets optimised and compiled into JavaScript/WebAssembly, and can easily be deployed as part of a web page.

What is unique about Cheerp?

Cheerp enables C/C++ code to be compiled to WebAssembly, JavaScript, asm.js or a combination thereof. Compared to alternative C/C++ compilers for web applications such as Emscripten, Cheerp:

  1. Achieves the same near-native runtime performance when compiling to WebAssembly, but can also compile to a JavaScript output with dynamic memory (garbage-collectible output), zero-overhead DOM manipulation and access to WebApis and superior C++-JavaScript interoperability.
  2. Allows to compile a single code base into a combination of WebAssembly and JavaScript by (optionally) tagging portions of the code with [[cheerp::genericjs]] and [[cheerp::wasm]].
  3. Can generate code 30-90% smaller than Emscripten, with faster startup.

Cheerp is open-source software and is free to use for GPLv2 projects. Non-copyleft commercial licenses, commercial support and consulting packages are available from Leaning Technologies.

Getting Started

You can download the latest official release of Cheerp for Windows, Linux and macOS a this address: https://leaningtech.com/cheerp/download/. Installation instructions are available here.

Alternatively, you can build Cheerp from source. Please follow the instructions available here.

To get started, you can have a look at our simple tutorial to build your first JavaScript Hello World, or your first WebAssembly program.

For a more in-depth tutorial, please visit this tutorial: a game of Pong in WebAssembly.

Bugs and Questions

You can get in touch with us using our Gitter chat, or by filing a bug on our Issue tracker.

Documentation

Documentation is available at https://github.com/leaningtech/cheerp-meta/wiki.