Emscripten

Emscripten是基於LLVM / Clang的編譯器，用來将C和C++源代码编译为WebAssembly 。在WebAssembly於2017年出現以前，JavaScript的子集asm.js曾是編譯目標 Emscripten 允许預先编译用 C 或 C++ 编写的应用程序和库以在網頁瀏覽器中運行，絕大多數的情況下運行速度與直譯（或即時編譯）的 JavaScript 相同或更快。Emscripten 甚至可以模拟整个POSIX操作系统，使程序员能够使用C標準函式庫(libc) 中的函数。 随着WebAssembly的接口（英語：WebAssembly System Interface，WASI）和运行时系统（例如Node.js、Wasmtime和Wasmer）上的WebAssembly的開發進展，Emscripten也可编译成在網頁以外的地方使用的WebAssembly 。 Emscripten 已讓许多 C/C++ 代码库順利移植到WebAssembly，包括Unreal Engine 3、SQLite 、 MeshLab 、 Bulletphysical 。 AutoCAD 、Qt 应用程序框架的子集等等。通过 Emscripten 順利移植到 WebAssembly 的其他软件範例包括： Unity、Godot和Unreal游戏引擎利用Emscripten提供了HTML5的导出选项。 openFrameworks（英语：openFrameworks） 通过 Emscripten 将本机 C++ 应用程序导出成 HTML5。emscripten-qt允许将使用Qt 应用程序框架编写的应用程序编译为WebAssembly。 2014年12月，互联网档案馆推出了用Emscripten编译的DOSBox模拟器，提供数千个基於瀏覽器的存档的MS-DOS和PC程序。 自由软件主题 asm.js Google Native Client (PNaCl) Haxe WebAssembly Release 3.1.67. 2024年9月16日 [2024年9月21日].  emscripten-core/emscripten: Emscripten: An LLVM-to-JavaScript Compiler. GitHub. [2023-09-03]. （原始内容存档于2023-09-03）. C: 40.0%; C++: 34.4%; JavaScript: 17.4%.  WebAssembly · emscripten-core/emscripten Wiki · GitHub. [2023-09-03]. （原始内容存档于2019-01-16）.  Walton, Zach. Easily Port C++ To HTML5/JavaScript With Emscripten. WebProNews. iEntry Network. 2012-04-04 [2012-04-25]. （原始内容存档于2013-07-30）.  Clark, Lin. Standardizing WASI: A system interface to run WebAssembly outside the web – Mozilla Hacks - the Web developer blog. Mozilla Hacks – the Web developer blog. Mozilla. [31 October 2022]. （原始内容存档于2022-10-30）.  The Wasmtime Project. WASI: The WebAssembly System Interface. WASI.dev. The Wasmtime Project. [2021-02-10]. （原始内容存档于2022-07-05）.  The Wasmtime Project. Wasmtime: A small and efficient runtime for WebAssembly & WASI. Wasmtime.dev. The Wasmtime Project. [2021-02-10]. （原始内容存档于2020-12-04）.  Wasmer. Wasmer: The Universal WebAssembly Runtime. Wasmer.io. Wasmer. [2021-02-10]. （原始内容存档于2021-03-02）.  sqlite3 WebAssembly & JavaScript Documentation Index. SQLite. [2023-05-08]. （原始内容存档于2024-05-02）.  http://www.meshlabjs.net （页面存档备份，存于互联网档案馆） - Homepage of the experimental, client based, javascript, version of MeshLab that runs inside a browser Porting Examples and Demos. Emscripten GitHub wiki. [2016-03-01]. （原始内容存档于2023-09-03）.  The Future of AutoCAD. Through the Interface. [2018-05-09]. （原始内容存档于2023-09-03）.  Qt for WebAssembly. [2023-09-03]. （原始内容存档于2023-10-12）.  Unity game engine heading to the browser without plug-ins. Ars Technica. 18 March 2014 [2016-03-01]. （原始内容存档于2019-03-22）.  The future of scripting in Unity – Unity Blog. Unity Technologies Blog. [2016-03-01]. （原始内容存档于2016-03-04）.  Tappy Chicken. www.unrealengine.com. [2016-03-01]. （原始内容存档于2017-08-21）.  openFrameworks setup for Emscripten. openFrameworks. [2016-03-04]. （原始内容存档于2023-04-19）.  Ohlheiser, Abby. You can now play nearly 2,400 MS-DOS video games in your browser. The Washington Post. 2015-01-05 [2015-01-08]. （原始内容存档于2015-01-07）.  Each New Boot a Miracle （页面存档备份，存于互联网档案馆） by Jason Scott (December 23, 2014) Internet Archive Search: "collection:softwarelibrary_msdos". archive.org. [2016-03-01].  官方网站 GitHub上的emscripten頁面 Emscripten文檔 （页面存档备份，存于互联网档案馆） 接口使用範例與演示 （页面存档备份，存于互联网档案馆） 部分WebAssembly运行时的列表 （页面存档备份，存于互联网档案馆）