Даступны Emscripten 3.0, кампілятар з C/C++ у WebAssembly

Апублікаваны выпуск кампілятара Emscripten 3.0, які дазваляе кампіляваць код на C/C++ і іншых мовах, для якіх маюцца фронтэнды на базе LLVM, ва ўніверсальны нізкаўзроўневы прамежкавы код WebAssembly, для наступнай інтэграцыі з JavaScript-праектамі, запуску ў web-браўзэры, выкарыстанні ў Node. js або стварэння адасобленых шматплатформавых прыкладанняў, якія запускаюцца пры дапамозе wasm runtime. Код праекту распаўсюджваецца пад ліцэнзіяй MIT. У кампілятары выкарыстоўваюцца напрацоўкі праекту LLVM, а для генерацыі WebAssembly і аптымізацыі задзейнічана бібліятэка Binaryen.

Асноўнай мэтай развіцця праекту Emscripten з'яўляецца стварэнне прылады, які дазваляе выконваць у Web код незалежна ад мовы праграмавання, на якім дадзены код напісаны. У кампіляваных прыкладаннях могуць выкарыстоўвацца выклікі стандартных бібліятэк C і З++ (libc, libcxx), пашырэнні C++, шматструменнасць на базе pthreads, API POSIX і шматлікія мультымедыйныя бібліятэкі. Асобна прадастаўляюцца API для інтэграцыі з Web API і кодам на JavaScript.

Emscripten падтрымлівае трансляцыю вываду бібліятэкі SDL2 праз Canvas, а таксама дае падтрымку OpenGL і EGL праз WebGL, што дазваляе ператвараць у WebAssembly у тым ліку і графічныя прыкладанні і гульні (напрыклад, маецца порт тулкіта Qt і падтрымліваюцца гульнявыя рухавічкі Unreal Engine 4 і Unit, фізічны. рухавічок Bullet). Апроч кампіляцыі кода на C/C++ асобна развіваюцца праекты для забеспячэння запуску ў браўзэрах інтэрпрэтатараў і віртуальных машын для моў Lua, C#, Python, Ruby і Perl. Таксама магчыма ўжыванне выдатных ад Clang фронтэндаў да LLVM, даступных для такіх моў, як Swift, Rust, D і Fortran.

Асноўныя змены ў Emscripten 3.0:

  • Задзейнічаная ў emscripten Сі-бібліятэка musl абноўлена да версіі 1.2.2 (у галінцы Emscripten 2.x выкарыстоўвалася версія 1.1.15).
  • З бібліятэкі parseTools.js выдаленая порцыя функцый, якія галоўным чынам выкарыстоўваліся ўсярэдзіне праекту: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, ssiblyFunctionType, isFunctionType, getReturnType, splitTokenList, _IntToHex, IEEEUnHex , Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • У шаблонах shell.html і shell_minimal.html выснова паведамленняў аб памылках, якія ўзнікаюць падчас прац emscripten і выдаваных прыкладаннем праз stderr, па змаўчанні пераключаны на выкарыстанне console.warn замест console.error.
  • Дададзена магчымасць указання вызначанай тэкставай кадоўкі, выкарыстоўванай у імёнах файлаў. Кадзіроўка можа задавацца ў форме суфікса пры перадачы імя файла, напрыклад, "a.rsp.utf-8" або "a.rsp.cp1251").

Крыніца: opennet.ru

Дадаць каментар