Emscripten 3.0 is beschikbaar, een C/C++ naar WebAssembly compiler

De release van de Emscripten 3.0-compiler is gepubliceerd, waarmee u code kunt compileren in C/C++ en andere talen waarvoor op LLVM gebaseerde frontends beschikbaar zijn in de universele low-level tussencode WebAssembly, voor daaropvolgende integratie met JavaScript-projecten, uitgevoerd in een webbrowser en gebruik in Node.js of het maken van zelfstandige multi-platformapplicaties die worden uitgevoerd met wasm runtime. De projectcode wordt gedistribueerd onder de MIT-licentie. De compiler maakt gebruik van ontwikkelingen uit het LLVM-project en de Binaryen-bibliotheek wordt gebruikt om WebAssembly en optimalisatie te genereren.

Het hoofddoel van het Emscripten-project is het creëren van een tool waarmee je code op het web kunt uitvoeren, ongeacht de programmeertaal waarin de code is geschreven. Gecompileerde toepassingen kunnen gebruik maken van aanroepen naar standaard C- en C++-bibliotheken (libc, libcxx), C++-extensies, op pthreads gebaseerde multithreading, POSIX API's en vele multimediabibliotheken. API's voor integratie met Web API en JavaScript-code worden afzonderlijk geleverd.

Emscripten ondersteunt het uitzenden van de output van de SDL2-bibliotheek via Canvas, en biedt ook ondersteuning voor OpenGL en EGL via WebGL, waarmee je grafische applicaties en games naar WebAssembly kunt converteren (er is bijvoorbeeld een port van de Qt-toolkit en ondersteunt Unreal Engine 4 en Unit game-engines, fysieke Bullet-engine). Naast het compileren van code in C/C++ worden er afzonderlijk projecten ontwikkeld om de lancering van tolken en virtuele machines in browsers voor de talen Lua, C#, Python, Ruby en Perl te garanderen. Ook is het mogelijk om niet-Clang frontends toe te passen op LLVM, beschikbaar voor talen als Swift, Rust, D en Fortran.

Grote veranderingen in Emscripten 3.0:

  • De musl C-bibliotheek die in emscripten wordt gebruikt, is bijgewerkt naar versie 1.2.2 (versie 2 werd gebruikt in de Emscripten 1.1.15.x-tak).
  • Een deel van de functies die voornamelijk binnen het project werden gebruikt, is verwijderd uit de parseTools.js-bibliotheek: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralTypePartBits, isFunctionDef, isPossablyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • In de shell.html- en shell_minimal.html-sjablonen wordt de uitvoer van foutmeldingen die optreden tijdens de werking van emscripten en door de toepassing via stderr worden uitgevoerd standaard omgeschakeld naar console.warn in plaats van console.error.
  • De mogelijkheid toegevoegd om een ​​specifieke tekstcodering op te geven die in bestandsnamen wordt gebruikt. De codering kan worden opgegeven in de vorm van een achtervoegsel bij het doorgeven van de bestandsnaam, bijvoorbeeld "a.rsp.utf-8" of "a.rsp.cp1251").

Bron: opennet.ru

Voeg een reactie