Emscripten 3.0, en byggeværktøjskæde til WebAssembly ved hjælp af LLVM

nylig udgivelsen af ​​den nye version af Emscripten 3.0-kompileren blev annonceret, som er kendetegnet ved at tillade, at kode kompileres i C/C++ og andre sprog, som LLVM-baserede frontends er tilgængelige for, i en lav-niveau universel middleware WebAssembly.

Hovedfunktionen af ​​denne kompilering er dens efterfølgende integration med JavaScript-projekter, køres i en webbrowser, brug i Node. Js eller opret selvstændige applikationer på tværs af platforme, der kører med wasm-runtime.

Om Emscripten

Hovedmålet udvikling af Emscripten-projektet er at skabe et værktøj, der giver dig mulighed for at køre kode på nettet, uanset hvilket programmeringssprog det er skrevet på.

Kompilerede applikationer kan bruge standard C- og C++-biblioteksopkald (libc, libcxx), C++-udvidelser, pthreads-baseret multithreading, POSIX API og mange multimediebiblioteker. API'er til integration med web-API'en og JavaScript-koden leveres separat.

Tilmelde understøtter streaming af SDL2-biblioteksoutput via Canvas, og giver også OpenGL- og EGL-understøttelse gennem WebGL, så du kan konvertere grafikapplikationer og spil til WebAssembly.

Stort set enhver bærbar C- eller C++-kodebase kan kompileres i WebAssembly ved hjælp af EmscriptenFra højtydende spil, der skal gengive grafik, afspille lyde og indlæse og behandle filer, til applikationsrammer som Qt. Emscripten er allerede blevet brugt til at konvertere en meget lang liste af virkelige kodebaser til WebAssembly, herunder kommercielle kodebaser som Unreal Engine 4 og Unity Engine.

Udover at kompilere C/C++-koden, udvikles projekter separat for at sikre, at tolke og virtuelle maskiner til Lua, C #, Python, Ruby og Perl starter i browserne. Det er også muligt at anvende ikke-Clang-grænseflader til LLVM, der er tilgængelige for sprog som Swift, Rust, D og Fortran.

Det skal bemærkes, at der er forskelle mellem native runtime og Emscripten, hvilket betyder, at generelt f.eksDet er nødvendigt at foretage nogle ændringer i den oprindelige kode. Når det er sagt, behøver mange applikationer kun at ændre den måde, de definerer deres hovedsløjfe på, og også ændre deres filhåndtering for at imødekomme browser / JavaScript-begrænsninger.

Der er også begrænsninger, der kan gøre noget kode nemmere at migrere - læs retningslinjerne for overførsel for at finde ud af, hvor du muligvis skal bruge mere indsats.

De vigtigste nye funktioner i Emscripten 3.0

I denne nye version, der præsenteres, er musl C-biblioteket brugt i emscripten blevet opdateret til version 1.2.2 (version 1.1.15 blev brugt i Emscripten 2.x-grenen).

Fra parseTools.js-biblioteket blev en del af funktionerne fjernet, som hovedsageligt bruges i projektet: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralType _IntToHex, IEEEUnHexTyp,CompiletimeTyp,CompiletimeTyp,CompiletimeTyp,CompiletimeTyp.

Mens i skabelonerne shell.html og shell_minimal.html, outputtet af fejlmeddelelserne der opstår under emscripten-operationen og udstedt af applikationen gennem stderr det ændres som standard til at bruge console.warn i stedet for console.error.

Det fremhæves også, at tilføjet muligheden for at angive en specifik tekstkodning, der bruges i filnavne. Kodning kan angives som et suffiks, når filnavnet sendes, for eksempel "a.rsp.utf-8" eller "a.rsp.cp1251").

Endelig, hvis du er interesseret i at vide mere om det om Emscripten, kan du se detaljerne om projektet i dets officiel hjemmeside.

Og på samme måde kan du konsultere dokumentation på nettet om, hvordan du bruger Emscripten, et referencested, som vi kan anbefale, er Mozilla-udviklerwebstedet: https://developer.mozilla.org.

Det er også vigtigt at nævne, at projektkoden er distribueret under MIT-licensen. Compileren bruger udviklingen fra LLVM-projektet, og Binaryen-biblioteket bruges til at generere WebAssembly og optimering. Du kan tjekke din kode kilde på GitHub.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.