Emscripten 3.0, een build-toolchain voor WebAssembly met LLVM

onlangs de release van de nieuwe versie van de Emscripten 3.0-compiler is aangekondigd, die wordt gekenmerkt door het laten compileren van code in C/C++ en andere talen waarvoor op LLVM gebaseerde frontends beschikbaar zijn, in een low-level universele middleware WebAssembly.

De belangrijkste functie van deze compilatie is de daaropvolgende integratie met JavaScript-projecten, uitgevoerd in een webbrowser, te gebruiken in Node. Js of maak platformonafhankelijke zelfstandige applicaties die draaien met de wasm-runtime.

Over Emscripten

Het belangrijkste doel ontwikkeling van het Emscripten-project is om een ​​tool te maken waarmee u code op het web kunt uitvoeren, ongeacht de programmeertaal waarin het is geschreven.

Gecompileerde toepassingen kunnen standaard C- en C++-bibliotheekaanroepen gebruiken (libc, libcxx), C++-extensies, op pthreads gebaseerde multithreading, POSIX API en vele multimediabibliotheken. API's voor integratie met de web-API en JavaScript-code worden afzonderlijk geleverd.

Inschrijven ondersteunt streaming SDL2-bibliotheekuitvoer via Canvas, en biedt ook OpenGL- en EGL-ondersteuning via WebGL, zodat u grafische toepassingen en games naar WebAssembly kunt converteren.

Vrijwel elke draagbare C- of C++-codebasis kan worden gecompileerd in WebAssembly met behulp van EmscriptenVan krachtige games die afbeeldingen moeten weergeven, geluiden moeten afspelen en bestanden moeten laden en verwerken, tot applicatieframeworks zoals Qt. Emscripten is al gebruikt om een ​​zeer lange lijst van real-world codebases naar WebAssembly te converteren, inclusief commerciële codebases zoals Unreal Engine 4 en Unity Engine.

Naast het compileren van de C/C++ code, worden projecten apart ontwikkeld om ervoor te zorgen dat interpreters en virtuele machines voor Lua, C#, Python, Ruby en Perl in de browsers starten. Het is ook mogelijk om niet-Clang-interfaces toe te passen op LLVM die beschikbaar zijn voor talen als Swift, Rust, D en Fortran.

Opgemerkt moet worden dat er zijn verschillen tussen native runtime en Emscripten, wat betekent dat in het algemeen eHet is noodzakelijk om enkele wijzigingen aan te brengen in de native code. Dat gezegd hebbende, hoeven veel applicaties alleen de manier waarop ze hun hoofdlus definiëren te veranderen en ook hun bestandsverwerking aan te passen aan browser- / JavaScript-beperkingen.

Er zijn ook beperkingen die het migreren van bepaalde code gemakkelijker kunnen maken - lees de richtlijnen voor portabiliteit om te bepalen waar u mogelijk meer moeite moet doen.

Belangrijkste nieuwe functies van Emscripten 3.0

In deze nieuwe versie die wordt gepresenteerd, is de musl C-bibliotheek die in emscripten wordt gebruikt, bijgewerkt naar versie 1.2.2 (versie 1.1.15 werd gebruikt in de Emscripten 2.x-tak).

Uit de parseTools.js-bibliotheek is een deel van de functies verwijderd, die voornamelijk in het project worden gebruikt: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntToHex, IEEEUnHex, Compiletime.isPointerType, CompileTileType, Compiletime,.Type, CompileType, Compiletime

Terwijl in de sjablonen shell.html en shell_minimal.html, de uitvoer van de foutmeldingen die optreden tijdens de emscripten-bewerking en uitgegeven door de applicatie via stderr het is standaard gewijzigd om console.warn te gebruiken in plaats van console.error.

Dat wordt ook benadrukt de mogelijkheid toegevoegd om een ​​specifieke tekstcodering op te geven die in bestandsnamen wordt gebruikt. Codering kan worden opgegeven als achtervoegsel bij het doorgeven van de bestandsnaam, bijvoorbeeld "a.rsp.utf-8" of "a.rsp.cp1251").

Tot slot, als u er meer over wilt weten over Emscripten, kunt u de details van het project raadplegen in zijn officiële website.

En op dezelfde manier kunt u documentatie op internet raadplegen over het gebruik van Emscripten, een referentiesite die we kunnen aanbevelen is de Mozilla-ontwikkelaarswebsite: https://developer.mozilla.org.

Het is ook belangrijk om te vermelden dat de projectcode wordt verspreid onder de MIT-licentie. De compiler gebruikt de ontwikkelingen van het LLVM-project en de Binaryen-bibliotheek wordt gebruikt om WebAssembly en optimalisatie te genereren. U kunt uw code controleren bron op GitHub.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.