ДостапСн Π΅ 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 ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° Unreal Engine 4 ΠΈ Unit ΠΈΠ³Ρ€Π° ΠΌΠΎΡ‚ΠΎΡ€ΠΈ, Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΈ Bullet engine). ΠŸΠΎΠΊΡ€Π°Ρ˜ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ ΠΊΠΎΠ΄ Π²ΠΎ 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 isVectorType, isStructuralTypeStructuralTypeStructuralType, get ctionDef, isPossiblyFunctionType, isFunctionType, getReturnType, splitTo kenList, _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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€