Update emsdk version from ca2b1316 to c09b2d2f (#27368) This is an automatic change generated by tools/maint/rebaseline_tests.py --update-emsdk. emsdk version updated: ca2b1316 => c09b2d2f The following revisions were included in this update: ``` - c09b2d2f Roll llvm-project from 398f2117379f to 3c6b4870425e (15 revisions) - b4865982 Roll llvm-project from 85cc99660cf0 to 398f2117379f (43 revisions) - e77575fd Roll emscripten from f062699d8063 to 0b10e353c5c2 (2 revisions) - 3fc8949f Roll llvm-project from 19595357e32b to 85cc99660cf0 (59 revisions) - 7789abeb Roll emscripten from 3f023523f14b to f062699d8063 (1 revision) - 17d03af5 Roll emscripten from 7aa3cc4673ff to 3f023523f14b (1 revision) - 0aac93e1 Roll v8 from 41abdf1244e1 to 80bcd758a7c3 (39 revisions) - b238b966 Roll llvm-project from d94df008e715 to 19595357e32b (30 revisions) - 5dda5656 Roll llvm-project from 6705f3d3d2e6 to d94df008e715 (28 revisions) ``` Full log: https://chromium.googlesource.com/emscripten-releases/+log/ca2b1316..c09b2d2f Co-authored-by: emscripten-bot <emscripten-bot@users.noreply.github.com>
Main project page: https://emscripten.org
Chromium builder status: emscripten-releases
Emscripten compiles C and C++ to WebAssembly using LLVM and Binaryen. Emscripten output can run on the Web, in Node.js, and in wasm runtimes.
Emscripten provides Web support for popular portable APIs such as OpenGL and SDL2, allowing complex graphical native applications to be ported, such as the Unity game engine and Google Earth. It can probably port your codebase, too!
While Emscripten mostly focuses on compiling C and C++ using Clang, it can be integrated with other LLVM-using compilers (for example, Rust has Emscripten integration, with the wasm32-unknown-emscripten target).
For detailed instructions and tutorials, visit the Emscripten Website.
There are two primary ways to install Emscripten:
Using the Emscripten SDK (emsdk) (Recommended) The easiest way to get started is by using the Emscripten SDK. Follow the instructions on the downloads page to install it.
From a Git Checkout (Manual Installation) If you have cloned the repository from Git, you can install the dependencies manually and then run the bootstrap script:
./bootstrap.py
For more details, see the developer guide.
Run emcc like you would gcc or clang:
$ emcc hello.c -o hello.js $ node hello.js Hello, world!
Emscripten will compile your code into a WebAssembly module along with a JavaScript file that can load and run it. You can then run the resulting JavaScript in your browser or under Node.js (or Deno or Bun).
Emscripten can also generate a sample HTML page that then loads the JavaScript:
$ emcc hello.c -o hello.html
You can then serve the generated hello.html using the emrun tool, or a web server of your choosing.
For information on how to contribute to the project, see CONTRIBUTING.md and the Contributing section on the website.
Emscripten is available under 2 licenses, the MIT license and the University of Illinois/NCSA Open Source License.
Both are permissive open source licenses, with little if any practical difference between them.
The reason for offering both is that (1) the MIT license is well-known and suitable for a compiler toolchain, while (2) LLVM‘s original license, the University of Illinois/NCSA Open Source License, was also offered to allow Emscripten’s code to be integrated upstream into LLVM. The second reason became less important after Emscripten switched to the LLVM wasm backend, at which point there isn't any code we expect to move back and forth between the projects; also, LLVM relicensed to Apache 2.0 + exceptions meanwhile. In practice you can just consider Emscripten as MIT licensed (which allows you to do pretty much anything you want with a compiler, including commercial and non-commercial use).
See LICENSE for the full content of the licenses.