Emscripten 3.0 ืื™ื– ื‘ื ื™ืžืฆื, ืึท C/C ++ ืฆื• ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ ืงืึทืžืคึผื™ื™ืœืขืจ

ื“ื™ ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื“ื™ Emscripten 3.0 ืงืึทืžืคึผื™ื™ืœืขืจ ืื™ื– ืืจื•ื™ืก, ืึทืœืึทื•ื™ื ื’ ืื™ืจ ืฆื• ื–ืึทืžืœืขืŸ ืงืึธื“ ืื™ืŸ C / C ++ ืื•ืŸ ืื ื“ืขืจืข ืฉืคึผืจืึทื›ืŸ ืคึฟืึทืจ ื•ื•ืึธืก LLVM-ื‘ืื–ื™ืจื˜ ืคืจืึธื ื˜ืขื ื“ื– ื–ืขื ืขืŸ ื‘ืืจืขื›ื˜ื™ื’ื˜ ืื™ืŸ ื•ื ื™ื•ื•ืขืจืกืึทืœ ื ื™ื“ืขืจื™ืง-ืžื“ืจื’ื” ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืงืึธื“ ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™, ืคึฟืึทืจ ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ื™ื ืึทื’ืจื™ื™ืฉืึทืŸ ืžื™ื˜ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืคึผืจืึทื“ื–ืฉืขืงืก, ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ืึท ื•ื•ืขื‘ ื‘ืœืขื˜ืขืจืขืจ ืื•ืŸ ื ื•ืฆืŸ ืื™ืŸ Node.js ืึธื“ืขืจ ืงืจื™ื™ื™ื˜ื™ื ื’ ืกื˜ืึทื ื“ืึทืœืึธื ืข ืžื•ืœื˜ื™-ืคึผืœืึทื˜ืคืึธืจืžืข ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื•ื•ืึธืก ืœื•ื™ืคืŸ ืžื™ื˜ ื•ื•ืึทืกื ืจื•ื ื˜ื™ืžืข. ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืงืึธื“ ืื™ื– ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื•ื ื˜ืขืจ ื“ื™ MIT ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ. ื“ืขืจ ืงืึทืžืคึผื™ื™ืœืขืจ ื ื™ืฆื˜ ื“ื™ื•ื•ืขืœืึทืคึผืžืึทื ืฅ ืคื•ืŸ ื“ื™ LLVM ืคึผืจื•ื™ืขืงื˜, ืื•ืŸ ื“ื™ Binaryen ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ ื•ื•ืขื‘ ืึทืกืขืžื‘ืœื™ ื“ื•ืจ ืื•ืŸ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ.

ื“ืขืจ ื”ื•ื™ืคึผื˜ ืฆื™ืœ ืคื•ืŸ ื“ื™ Emscripten ืคึผืจื•ื™ืขืงื˜ ืื™ื– ืฆื• ืฉืึทืคึฟืŸ ืึท ื’ืขืฆื™ื™ึทื’ ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื•ื™ืกืคื™ืจืŸ ืงืึธื“ ืื•ื™ืฃ ื“ื™ ื•ื•ืขื‘ ืจืึทื’ืึทืจื“ืœืึทืก ืคื•ืŸ ื“ื™ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš ืื™ืŸ ื•ื•ืึธืก ื“ื™ ืงืึธื“ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ. ืงืึทืžืคึผื™ื™ืœื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืงืขื ืขืŸ ื ื•ืฆืŸ ืงืึทืœืœืก ืฆื• ื ืึธืจืžืึทืœ C ืื•ืŸ C ++ ืœื™ื™ื‘ืจืขืจื™ื– (libc, libcxx), C ++ ื™ืงืกื˜ืขื ืฉืึทื ื–, ืคึผื˜ื”ืจืขืึทื“ืก-ื‘ืื–ื™ืจื˜ ืžื•ืœื˜ื™ื˜ื”ืจืขืึทื“ื™ื ื’, POSIX APIs ืื•ืŸ ืคื™ืœืข ืžื•ืœื˜ื™ืžืขื“ื™ืึท ืœื™ื™ื‘ืจืขืจื™ื–. ืึทืคึผื™ืก ืคึฟืึทืจ ื™ื ื˜ืึทื’ืจื™ื™ืฉืึทืŸ ืžื™ื˜ ื•ื•ืขื‘ ืึทืคึผื™ ืื•ืŸ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืงืึธื“ ื–ืขื ืขืŸ ืฆื•ื’ืขืฉื˜ืขืœื˜ ืกืขืคึผืขืจืึทื˜ืœื™.

Emscripten ืฉื˜ื™ืฆื˜ ื‘ืจืึธื“ืงืึทืกื˜ื™ื ื’ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื“ื™ SDL2 ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื“ื•ืจืš ืงืึทื ื•ื•ืึทืก, ืื•ืŸ ืื•ื™ืš ื’ื™ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ OpenGL ืื•ืŸ EGL ื“ื•ืจืš WebGL, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืงืึธื ื•ื•ืขืจื˜ ื’ืจืึทืคื™ืงืึทืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ืŸ ืฉืคึผื™ืœืขืจื™ื™ึท ืฆื• ื•ื•ืขื‘ืึทืกืกืขืžื‘ืœื™ (ืœืžืฉืœ, ืขืก ืื™ื– ืึท ืคึผืึธืจื˜ ืคื•ืŸ ื“ื™ Qt ื˜ืึธืึธืœืงื™ื˜ ืื•ืŸ ืฉื˜ื™ืฆื˜ Unreal Engine. 4 ืื•ืŸ ื™ื•ื ื™ื˜ ืฉืคึผื™ืœ ืขื ื“ื–ืฉืึทื ื–, ื’ืฉืžื™ื•ืช ื‘ื•ืœืึทื˜ ืžืึธื˜ืึธืจ). ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ืงืึทืžืคึผื™ื™ืœื™ื ื’ ืงืึธื“ ืื™ืŸ C / C ++, ืคึผืจืึทื“ื–ืฉืขืงืก ื–ืขื ืขืŸ ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืกืขืคึผืขืจืึทื˜ืœื™ ืฆื• ืขื ืฉื•ืจ ื“ื™ ืงืึทื˜ืขืจ ืคื•ืŸ ื™ื ื˜ืขืจืคึผืจืึทื˜ืขืจื– ืื•ืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ืื™ืŸ ื‘ืจืึทื•ื–ืขืจื– ืคึฟืึทืจ ื“ื™ ืฉืคึผืจืึทื›ืŸ Lua, C #, Python, Ruby ืื•ืŸ Perl. ืขืก ืื™ื– ืื•ื™ืš ืžืขื’ืœืขืš ืฆื• ืฆื•ืœื™ื™ื’ืŸ ื ื™ื˜-ืงืœืึทื ื’ ืคืจืึธื ื˜ืขื ื“ื– ืฆื• LLVM, ื‘ื ื™ืžืฆื ืคึฟืึทืจ ืฉืคึผืจืึทื›ืŸ ืึทื–ืึท ื•ื•ื™ ืกื•ื•ื™ืคื˜, ืจื•ืกื˜, ื“ ืื•ืŸ ืคืึธืจื˜ืจืึทืŸ.

ื”ื•ื™ืคึผื˜ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ 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 getStructuralPart, isPoucturalType ssiblyFunctionType, isFunctionType, getReturnType, splitTo kenList, _IntToHex, IEEEUnHex, Compiletime.isPointerType, Compiletime.isStructType, Compiletime.INT_TYPES, isType.
  • ืื™ืŸ ื“ื™ shell.html ืื•ืŸ shell_minimal.html ื˜ืขืžืคึผืœืึทื˜ืขืก, ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื˜ืขื•ืช ืึทืจื˜ื™ืงืœืขืŸ ื•ื•ืึธืก ืคืึทืœืŸ ื‘ืขืฉืึทืก ื“ื™ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ืขืžืกืงืจื™ืคึผื˜ืขืŸ ืื•ืŸ ืจืขื–ื•ืœื˜ืึทื˜ ื“ื•ืจืš ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื“ื•ืจืš stderr ืื™ื– ืกื•ื•ื™ื˜ืฉื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ืฆื• ื ื•ืฆืŸ console.warn ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ console.error.
  • ืฆื•ื’ืขื’ืขื‘ืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื˜ืขืงืกื˜ ืงืึธื“ื™ืจื•ื ื’ ื’ืขื ื™ืฆื˜ ืื™ืŸ ื˜ืขืงืข ื ืขืžืขืŸ. ื“ื™ ืงืึธื“ื™ืจื•ื ื’ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืึท ืกืึทืคื™ืงืก ื•ื•ืขืŸ ื’ื™ื™ื˜ ืคืืจื‘ื™ื™ ื“ื™ ื˜ืขืงืข ื ืึธืžืขืŸ, ืœืžืฉืœ, "a.rsp.utf-8" ืึธื“ืขืจ "a.rsp.cp1251").

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’