НаличСн ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Emscripten 3.0, C/C++ към WebAssembly

Π˜Π·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Emscripten 3.0 Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄ Π½Π° C/C++ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π·ΠΈΡ†ΠΈ, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ са Π½Π°Π»ΠΈΡ‡Π½ΠΈ интСрфСйси, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° LLVM, Π² унивСрсалСн ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ниско Π½ΠΈΠ²ΠΎ WebAssembly, Π·Π° послСдваща интСграция с JavaScript ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π² ΡƒΠ΅Π± Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² Node.js ΠΈΠ»ΠΈ създаванС Π½Π° самостоятСлни ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½ΠΈ прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° wasm runtime. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Π½Π° MIT. ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Binaryen сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ ΠΈ оптимизация Π½Π° WebAssembly.

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ†Π΅Π» Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Emscripten Π΅ Π΄Π° създадС инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΠΎΠ΄ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, нСзависимо ΠΎΡ‚ Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ написан ΠΊΠΎΠ΄ΡŠΡ‚. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ прилоТСния ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ извиквания към стандартни C ΠΈ C++ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (libc, libcxx), C++ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° pthreads многопоточност, POSIX API ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡƒΠ»Ρ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. API Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ с Web API ΠΈ JavaScript ΠΊΠΎΠ΄ сС прСдоставят ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ.

Emscripten ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΈΠ·Π»ΡŠΡ‡Π²Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° SDL2 Ρ‡Ρ€Π΅Π· Canvas ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° осигурява ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° OpenGL ΠΈ EGL Ρ‡Ρ€Π΅Π· WebGL, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈ прилоТСния ΠΈ ΠΈΠ³Ρ€ΠΈ Π² WebAssembly (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠΌΠ° ΠΏΠΎΡ€Ρ‚ Π½Π° Qt toolkit ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Unreal Engine 4 ΠΈ Unit ΠΈΠ³Ρ€ΠΎΠ²ΠΈ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈ, физичСски Bullet Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»). Π’ допълнСниС към ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄ Π² C/C++, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ, Π·Π° Π΄Π° сС осигури стартиранСто Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈ Π·Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Lua, C#, Python, Ruby ΠΈ Perl. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ възмоТно Π΄Π° сС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ°Ρ‚ интСрфСйси, Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΡ‚ Clang, към LLVM, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π·Π° Π΅Π·ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ Swift, Rust, D ΠΈ Fortran.

Основни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Emscripten 3.0:

  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° musl C, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² emscripten, Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΄ΠΎ вСрсия 1.2.2 (вСрсия 2 Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² ΠΊΠ»ΠΎΠ½Π° Π½Π° Emscripten 1.1.15.x).
  • Част ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ основно Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, са ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° parseTools.js: removePointing, pointingLevels, removeAllPointing, isVoidType, isStructPointerType, isArrayType, isStructType, isVectorType, isStructuralType getStructuralTypeParts, getStructuralTypePartBits, isFun ctionDef, isPossiblyFunctionType, 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€