Emscripten 3.0 huwa disponibbli, kompilatur C/C++ għal WebAssembly

Ġie ppubblikat ir-rilaxx tal-kompilatur Emscripten 3.0, li jippermettilek tiġbor kodiċi f'C/C++ u lingwi oħra li għalihom il-frontends ibbażati fuq LLVM huma disponibbli f'kodiċi intermedju universali ta 'livell baxx WebAssembly, għal integrazzjoni sussegwenti ma' proġetti JavaScript, li taħdem. f'web browser, u uża f'Node.js jew toħloq applikazzjonijiet awtonomi b'ħafna pjattaformi li jaħdmu bl-użu ta' wasm runtime. Il-kodiċi tal-proġett huwa mqassam taħt il-liċenzja MIT. Il-kompilatur juża żviluppi mill-proġett LLVM, u l-librerija Binaryen tintuża għall-ġenerazzjoni u l-ottimizzazzjoni tal-WebAssembly.

L-għan ewlieni tal-proġett Emscripten huwa li toħloq għodda li tippermettilek tesegwixxi kodiċi fuq il-Web irrispettivament mil-lingwa ta 'programmar li fiha l-kodiċi huwa miktub. Applikazzjonijiet ikkumpilati jistgħu jużaw sejħiet għal libreriji standard C u C++ (libc, libcxx), estensjonijiet C++, multithreading ibbażat fuq pthreads, APIs POSIX, u ħafna libreriji multimedjali. APIs għall-integrazzjoni mal-Web API u l-kodiċi JavaScript huma pprovduti separatament.

Emscripten jappoġġja x-xandir tal-output tal-librerija SDL2 permezz tal-Canvas, u jipprovdi wkoll appoġġ għal OpenGL u EGL permezz tal-WebGL, li jippermettilek tikkonverti applikazzjonijiet grafiċi u logħob għal WebAssembly (per eżempju, hemm port tal-Qt toolkit u jappoġġja Unreal Engine 4 u magni tal-logħob tal-Unità, magna Bullet fiżika). Minbarra l-kompilazzjoni tal-kodiċi f'C/C++, qed jiġu żviluppati proġetti separatament biex jiżguraw it-tnedija ta 'interpreti u magni virtwali fil-browsers għal-lingwi Lua, C#, Python, Ruby u Perl. Huwa wkoll possibbli li jiġu applikati frontends mhux Clang għal LLVM, disponibbli għal lingwi bħal Swift, Rust, D u Fortran.

Bidliet ewlenin fl-Emscripten 3.0:

  • Il-librerija musl C użata f'emscripten ġiet aġġornata għall-verżjoni 1.2.2 (il-verżjoni 2 intużat fil-fergħa Emscripten 1.1.15.x).
  • Porzjon ta' funzjonijiet li kienu prinċipalment użati fi ħdan il-proġett tneħħew mil-librerija parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isTtructuraStructrulTypetPartturalType, isTtructuralTypeType , isFunctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTo kenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • Fil-mudelli shell.html u shell_minimal.html, l-output ta’ messaġġi ta’ żball li jseħħu waqt it-tħaddim ta’ emscripten u li joħorġu mill-applikazzjoni permezz ta’ stderr jinqalbu awtomatikament biex juża console.warn minflok console.error.
  • Żid il-ħila li tispeċifika kodifikazzjoni tat-test speċifika użata fl-ismijiet tal-fajls. Il-kodifikazzjoni tista 'tiġi speċifikata fil-forma ta' suffiss meta jgħaddi l-isem tal-fajl, pereżempju, "a.rsp.utf-8" jew "a.rsp.cp1251").

Sors: opennet.ru

Żid kumment