Emscripten 3.0, C/C++ al WebAssembly kompililo havebla

La eldono de la kompililo Emscripten 3.0 estis publikigita, permesante al vi kompili kodon en C/C++ kaj aliaj lingvoj por kiuj LLVM-bazitaj fasadoj estas haveblaj en universala malaltnivela meza kodo WebAssembly, por posta integriĝo kun JavaScript-projektoj, funkciante. en TTT-legilo, kaj uzu en Node.js aŭ kreante memstarajn plurplatformajn aplikaĵojn, kiuj funkcias per wasm-rultempo. La projektkodo estas distribuita sub la MIT-licenco. La kompililo uzas evoluojn de la LLVM-projekto, kaj la biblioteko Binaryen estas uzata por WebAssembly-generado kaj optimumigo.

La ĉefa celo de la projekto Emscripten estas krei ilon, kiu ebligas al vi ekzekuti kodon en la Reto sendepende de la programlingvo en kiu la kodo estas skribita. Kompilitaj aplikoj povas uzi vokojn al normaj C kaj C++-bibliotekoj (libc, libcxx), C++-etendaĵoj, pthreads-bazita multifadenado, POSIX-APIoj, kaj multaj multmediaj bibliotekoj. APIoj por integriĝo kun Web API kaj JavaScript-kodo estas provizitaj aparte.

Emscripten subtenas dissendadon de la eligo de la SDL2-biblioteko per Canvas, kaj ankaŭ provizas subtenon por OpenGL kaj EGL per WebGL, kiu ebligas al vi konverti grafikajn aplikojn kaj ludojn al WebAssembly (ekzemple, ekzistas haveno de la Qt ilaro kaj subtenas Unreal Engine. 4 kaj Unit-ludmotoroj, fizika Bullet-motoro). Krom kompili kodon en C/C++, projektoj estas disvolvitaj aparte por certigi la lanĉon de interpretistoj kaj virtualaj maŝinoj en retumiloj por la lingvoj Lua, C#, Python, Ruby kaj Perl. Ankaŭ eblas apliki ne-Clang-interfacojn al LLVM, disponeblaj por lingvoj kiel Swift, Rust, D kaj Fortran.

Gravaj ŝanĝoj en Emscripten 3.0:

  • La musl C-biblioteko uzata en emscripten estis ĝisdatigita al versio 1.2.2 (versio 2 estis uzata en la branĉo Emscripten 1.1.15.x).
  • Parto de funkcioj, kiuj estis ĉefe uzataj ene de la projekto, estis forigita el la parseTools.js-biblioteko: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isTtructuraStrucTypetParturalType, isStructuralTypeType. , isFunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTo kenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • En la ŝablonoj shell.html kaj shell_minimal.html, la eligo de erarmesaĝoj kiuj okazas dum la funkciado de emscripten kaj estas eligitaj de la aplikaĵo per stderr estas defaŭlte ŝanĝita por uzi console.warn anstataŭ console.error.
  • Aldonis la kapablon specifi specifan tekstokodigon uzatan en dosiernomoj. La kodigo povas esti specifita en la formo de sufikso pasante la dosiernomon, ekzemple, "a.rsp.utf-8" aŭ "a.rsp.cp1251").

fonto: opennet.ru

Aldoni komenton