Emscripten 3.0, C/C++-zu-WebAssembly-Compiler verfügbar

Die Veröffentlichung des Emscripten 3.0-Compilers wurde veröffentlicht, der es Ihnen ermöglicht, Code in C/C++ und anderen Sprachen, für die LLVM-basierte Frontends verfügbar sind, in universellen Low-Level-Zwischencode WebAssembly zu kompilieren, um ihn anschließend in ausgeführte JavaScript-Projekte zu integrieren in einem Webbrowser und verwenden Sie es in Node.js oder erstellen Sie eigenständige Multiplattformanwendungen, die mit der Wasm-Laufzeit ausgeführt werden. Der Projektcode wird unter der MIT-Lizenz vertrieben. Der Compiler nutzt Entwicklungen aus dem LLVM-Projekt und die Binaryen-Bibliothek dient zur Generierung von WebAssembly und zur Optimierung.

Das Hauptziel des Emscripten-Projekts besteht darin, ein Tool zu erstellen, mit dem Sie Code im Web ausführen können, unabhängig von der Programmiersprache, in der der Code geschrieben ist. Kompilierte Anwendungen können Aufrufe an Standard-C- und C++-Bibliotheken (libc, libcxx), C++-Erweiterungen, pthreads-basiertes Multithreading, POSIX-APIs und viele Multimedia-Bibliotheken verwenden. APIs für die Integration mit Web-API und JavaScript-Code werden separat bereitgestellt.

Emscripten unterstützt die Übertragung der Ausgabe der SDL2-Bibliothek über Canvas und bietet außerdem Unterstützung für OpenGL und EGL über WebGL, wodurch Sie grafische Anwendungen und Spiele in WebAssembly konvertieren können (es gibt beispielsweise einen Port des Qt-Toolkits und unterstützt Unreal Engine). 4- und Unit-Game-Engines, physische Bullet-Engine). Neben der Kompilierung von Code in C/C++ werden gesondert Projekte entwickelt, um die Ausführung von Interpretern und virtuellen Maschinen in Browsern für die Sprachen Lua, C#, Python, Ruby und Perl zu ermöglichen. Es ist auch möglich, Nicht-Clang-Frontends auf LLVM anzuwenden, verfügbar für Sprachen wie Swift, Rust, D und Fortran.

Wichtige Änderungen in Emscripten 3.0:

  • Die in emscripten verwendete musl-C-Bibliothek wurde auf Version 1.2.2 aktualisiert (Version 2 wurde im Emscripten 1.1.15.x-Zweig verwendet).
  • Ein Teil der Funktionen, die hauptsächlich im Projekt verwendet wurden, wurden aus der parseTools.js-Bibliothek entfernt: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralTypePartBits, isFunctionDef, isPossablyFunctionType, isFunctionType, getReturnType, splitTo kenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • In den Vorlagen „shell.html“ und „shell_minimal.html“ ist die Ausgabe von Fehlermeldungen, die beim Betrieb von emscripten auftreten und von der Anwendung über stderr ausgegeben werden, standardmäßig auf console.warn statt console.error umgestellt.
  • Möglichkeit hinzugefügt, eine bestimmte Textkodierung anzugeben, die in Dateinamen verwendet wird. Die Kodierung kann in Form eines Suffixes bei der Übergabe des Dateinamens angegeben werden, beispielsweise „a.rsp.utf-8“ oder „a.rsp.cp1251“).

Source: opennet.ru

Kommentar hinzufügen