Emscripten 3.0 är tillgänglig, en C/C++ till WebAssembly-kompilator

Utgivningen av Emscripten 3.0-kompilatorn har publicerats, vilket gör att du kan kompilera kod i C/C++ och andra språk för vilka LLVM-baserade gränssnitt är tillgängliga i universell lågnivå mellankod WebAssembly, för efterföljande integration med JavaScript-projekt, som körs i en webbläsare och använd i Node.js eller skapa fristående multiplattformsapplikationer som körs med wasm runtime. Projektkoden distribueras under MIT-licensen. Kompilatorn använder utvecklingar från LLVM-projektet, och Binaryen-biblioteket används för generering och optimering av WebAssembly.

Huvudmålet med Emscripten-projektet är att skapa ett verktyg som låter dig exekvera kod på webben oavsett vilket programmeringsspråk koden är skriven på. Kompilerade applikationer kan använda anrop till standard C- och C++-bibliotek (libc, libcxx), C++-tillägg, pthreads-baserad multithreading, POSIX API:er och många multimediabibliotek. API:er för integration med webb-API och JavaScript-kod tillhandahålls separat.

Emscripten stöder sändning av utdata från SDL2-biblioteket via Canvas, och ger även stöd för OpenGL och EGL via WebGL, vilket gör att du kan konvertera grafiska applikationer och spel till WebAssembly (det finns till exempel en port i Qt-verktygslådan och stöder Unreal Engine 4 och Unit-spelmotorer, fysisk Bullet-motor). Förutom att kompilera kod i C/C++ utvecklas projekt separat för att säkerställa lanseringen av tolkar och virtuella maskiner i webbläsare för språken Lua, C#, Python, Ruby och Perl. Det är också möjligt att applicera icke-Clang-gränssnitt på LLVM, tillgängliga för språk som Swift, Rust, D och Fortran.

Stora förändringar i Emscripten 3.0:

  • Musl C-biblioteket som används i emscripten har uppdaterats till version 1.2.2 (version 2 användes i Emscripten 1.1.15.x-grenen).
  • En del av funktionerna som huvudsakligen användes inom projektet har tagits bort från parseTools.js-biblioteket: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralPartsParts,Fuctural,Typ,Typt,Typt isPossiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • I mallarna shell.html och shell_minimal.html ändras utmatningen av felmeddelanden som inträffar under driften av emscripten och som matas ut av applikationen via stderr som standard till att använda console.warn istället för console.error.
  • Lade till möjligheten att ange en specifik textkodning som används i filnamn. Kodningen kan anges i form av ett suffix när filnamnet skickas, till exempel "a.rsp.utf-8" eller "a.rsp.cp1251").

Källa: opennet.ru

Lägg en kommentar