K dispozici je kompilátor Emscripten 3.0, C/C++ do WebAssembly

Bylo zveřejněno vydání kompilátoru Emscripten 3.0, který vám umožňuje kompilovat kód v C/C++ a dalších jazycích, pro které jsou k dispozici frontendy založené na LLVM, do univerzálního nízkoúrovňového středně pokročilého kódu WebAssembly, pro následnou integraci s projekty JavaScript, spuštění ve webovém prohlížeči a použití v Node.js nebo vytváření samostatných multiplatformních aplikací, které běží pomocí wasm runtime. Kód projektu je distribuován pod licencí MIT. Kompilátor využívá vývoj z projektu LLVM a knihovna Binaryen se používá pro generování a optimalizaci WebAssembly.

Hlavním cílem projektu Emscripten je vytvořit nástroj, který vám umožní spouštět kód na webu bez ohledu na programovací jazyk, ve kterém je kód napsán. Kompilované aplikace mohou používat volání standardních knihoven C a C++ (libc, libcxx), rozšíření C++, multithreading na bázi pthreads, POSIX API a mnoho multimediálních knihoven. Rozhraní API pro integraci s webovým rozhraním API a kód JavaScriptu jsou poskytovány samostatně.

Emscripten podporuje vysílání výstupu knihovny SDL2 přes Canvas a také poskytuje podporu pro OpenGL a EGL přes WebGL, což umožňuje převádět grafické aplikace a hry do WebAssembly (například existuje port sady nástrojů Qt a podporuje Unreal Engine 4 a Unit herní enginy, fyzický Bullet engine). Kromě kompilace kódu v C/C++ se samostatně vyvíjejí projekty, které mají zajistit spuštění interpretů a virtuálních strojů v prohlížečích pro jazyky Lua, C#, Python, Ruby a Perl. Na LLVM je také možné použít non-Clang frontendy, dostupné pro jazyky jako Swift, Rust, D a Fortran.

Hlavní změny v Emscripten 3.0:

  • Knihovna musl C používaná v emscriptenu byla aktualizována na verzi 1.2.2 (ve větvi Emscripten 2.x byla použita verze 1.1.15).
  • Z knihovny parseTools.js byla odstraněna část funkcí, které se v projektu používaly hlavně: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isFDefucturalType isTDefuntPaructural, isPosssibleFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • V šablonách shell.html a shell_minimal.html je výstup chybových zpráv, které se vyskytnou během operace emscripten a jsou výstupem aplikace přes stderr, standardně přepnut na použití console.warn namísto console.error.
  • Přidána možnost určit konkrétní kódování textu používané v názvech souborů. Kódování lze zadat ve formě přípony při předávání názvu souboru, například "a.rsp.utf-8" nebo "a.rsp.cp1251").

Zdroj: opennet.ru

Přidat komentář