# kripken/emscripten

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/kripken-emscripten).**

27,429 stars · 3,526 forks · C++ · NOASSERTION

## Links

- GitHub: https://github.com/kripken/emscripten
- awesome-repositories: https://awesome-repositories.com/repository/kripken-emscripten.md

## Description

Emscripten is a WebAssembly toolchain and compiler backend that transforms C and C++ source code into WebAssembly bytecode. It serves as a framework for porting native applications and libraries to web browsers and server runtimes by translating LLVM intermediate representation into optimized WebAssembly modules.

The system specializes in porting native graphical standards, such as OpenGL and SDL2, by mapping native graphics API calls to browser-compatible WebGL commands. This allows complex visual applications and native desktop software to be deployed as portable web formats.

The toolchain includes a compatible C standard library, a virtual file system that emulates POSIX-compliant I/O operations, and a dynamic linker simulation. It also generates JavaScript glue code to manage memory allocation and function calls between the WebAssembly module and the browser environment.

## Tags

### Programming Languages & Runtimes

- [C/C++ to WebAssembly Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/c-c-to-webassembly-compilers.md) — Transforms C and C++ source code into WebAssembly bytecode for execution in web browsers and server runtimes. ([source](https://github.com/kripken/emscripten#readme))
- [Compiler Backends](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/compiler-infrastructure/compiler-backends.md) — Implements a compiler backend that translates LLVM intermediate representation into optimized WebAssembly modules.
- [Native-to-Web Porting Frameworks](https://awesome-repositories.com/f/programming-languages-runtimes/native-to-web-porting-frameworks.md) — Serves as a comprehensive framework for porting native graphical APIs and libraries to web-based platforms.
- [Standard Library Implementations](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/standard-libraries/standard-library-implementations.md) — Implements a compatible version of the C and C++ standard libraries targeting the WebAssembly memory model.
- [WebAssembly](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/webassembly.md) — Provides the necessary tooling to compile and execute native C/C++ applications as WebAssembly modules.
- [WebAssembly Glue Code Generators](https://awesome-repositories.com/f/programming-languages-runtimes/webassembly-glue-code-generators.md) — Generates JavaScript wrapper code to manage memory allocation and function calls between WebAssembly and the browser.
- [Compiler Toolchains](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/compiler-toolchains.md) — Provides a compiler toolchain that leverages LLVM to target the WebAssembly execution environment.
- [Runtime Symbol Resolution](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/linkers/runtime-symbol-resolution.md) — Provides a simulation of a dynamic linker to resolve external symbols across multiple compiled modules at runtime.
- [Multi-Target Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/multi-target-compilers.md) — Integrates with LLVM-based compilers to enable multiple programming languages to target the WebAssembly environment. ([source](https://github.com/kripken/emscripten#readme))

### Web Development

- [Bytecode Compilers](https://awesome-repositories.com/f/web-development/performance-optimizations/component-update-optimizations/bytecode-compilers.md) — Transforms C and C++ source code into optimized WebAssembly bytecode using an LLVM backend.
- [WebAssembly Frameworks](https://awesome-repositories.com/f/web-development/webassembly-frameworks.md) — Provides a toolchain for compiling C and C++ source code into WebAssembly for high-performance execution in browsers.

### Data & Databases

- [Virtual File Systems](https://awesome-repositories.com/f/data-databases/virtual-file-systems.md) — Simulates a POSIX-compliant file system in memory to support standard C I/O operations.

### DevOps & Infrastructure

- [Cross-Platform Deployment Targets](https://awesome-repositories.com/f/devops-infrastructure/cross-platform-deployment-targets.md) — Converts native desktop software into a portable WebAssembly format that runs across different operating systems via a browser.

### Graphics & Multimedia

- [Graphics API Translators](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/graphics-rendering-apis/graphics-api-translators.md) — Translates native graphics API calls into open standard commands for hardware-accelerated rendering in the browser. ([source](https://github.com/kripken/emscripten#readme))
- [WebGL & GPU Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/webgl-gpu-rendering.md) — Maps native OpenGL graphics API calls into browser-compatible WebGL commands for 3D rendering.

### Part of an Awesome List

- [Compiler Technology](https://awesome-repositories.com/f/awesome-lists/devtools/compiler-technology.md) — Compiles LLVM-based code into JavaScript for web execution.
