ืžื™ื™ืกื“ QEMU ื•ืžื™ื™ืกื“ FFmpeg ืžืคืจืกื QuickJS JavaScript Engine

ื”ืžืชืžื˜ื™ืงืื™ ื”ืฆืจืคืชื™ ืคื‘ืจื™ืก ื‘ืœืืจื“, ืฉื™ื™ืกื“ ืืช ื”ืคืจื•ื™ืงื˜ื™ื QEMU ื•-FFmpeg, ื™ืฆืจ ื’ื ืืช ื”ื ื•ืกื—ื” ื”ืžื”ื™ืจื” ื‘ื™ื•ืชืจ ืœื—ื™ืฉื•ื‘ ื”ืžืกืคืจ Pi ื•ืคื™ืชื— ืืช ืคื•ืจืžื˜ ื”ืชืžื•ื ื” .bpg, ืคืจืกื ืืช ื”ืžื”ื“ื•ืจื” ื”ืจืืฉื•ื ื” ืฉืœ ืžื ื•ืข JavaScript ื”ื—ื“ืฉ QuickJS. ื”ืžื ื•ืข ืงื•ืžืคืงื˜ื™ ื•ืžื™ื•ืขื“ ืœืฉื™ืœื•ื‘ ื‘ืžืขืจื›ื•ืช ืื—ืจื•ืช. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ื›ืชื•ื‘ ื‘-C ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT. ื‘ื ื™ื™ื” ืฉืœ ื”ืžื ื•ืข ื–ืžื™ื ื” ื’ื ื”ื™ื, ืžื•ืจื›ื‘ืช ืœืชื•ืš WebAssembly ื‘ืืžืฆืขื•ืช Emscripten ื•ืžืชืื™ืžื” ืœื‘ื™ืฆื•ืข ื‘ื“ืคื“ืคื ื™ื.

ื™ื™ืฉื•ื JavaScript ืชื•ืžืš ืžืคืจื˜ ES2019, ื›ื•ืœืœ ืžื•ื“ื•ืœื™ื, ื’ื ืจื˜ื•ืจื™ื ืืกื™ื ื›ืจื•ื ื™ื™ื ื•ืคืจื•ืงืกื™. ืžืชืžื˜ื™ืงื” ืœื ืกื˜ื ื“ืจื˜ื™ืช ื ืชืžื›ืช ื‘ืื•ืคืŸ ืื•ืคืฆื™ื•ื ืœื™ ื”ืจื—ื‘ื•ืช ืขื‘ื•ืจ JavaScript, ื›ื’ื•ืŸ ืกื•ื’ื™ BigInt ื•-BigFloat, ื•ื›ืŸ ืขื•ืžืก ื™ืชืจ ืฉืœ ื”ืžืคืขื™ืœ. ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ QuickJS ืžืฉืžืขื•ืชื™ื™ื ืขื“ื™ืฃ ืขืœ ืื ืœื•ื’ื™ื ื–ืžื™ื ื™ื, ืœืžืฉืœ, ื‘ืžื‘ื—ืŸ
bench-v8 ืžืงื“ื™ื ืืช ื”ืžื ื•ืข XS ื‘ืฉื™ืขื•ืจ ืฉืœ 35%, DukTape ื™ื•ืชืจ ืžื›ืคื•ืœ ื’'ืจื™ืกืงืจื™ืคื˜ ืฉืœื•ืฉ ืคืขืžื™ื ื• MuJS ืฉื‘ืข ืคืขืžื™ื.

ื‘ื ื•ืกืฃ ืœืกืคืจื™ื™ื” ืœื”ื˜ืžืขืช ื”ืžื ื•ืข ื‘ืืคืœื™ืงืฆื™ื•ืช, ื”ืคืจื•ื™ืงื˜ ืžืฆื™ืข ื’ื ืžืชื•ืจื’ืžืŸ qjs, ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ื›ื“ื™ ืœื”ืจื™ืฅ ืงื•ื“ JavaScript ืžืฉื•ืจืช ื”ืคืงื•ื“ื”. ื™ืชืจ ืขืœ ื›ืŸ, ืžื”ื“ืจ qjsc ื–ืžื™ืŸ, ื”ืžืกื•ื’ืœ ืœื™ื™ืฆืจ ืงื‘ืฆื™ ื”ืคืขืœื” ื ื™ืชื ื™ื ืœื”ืจืฆื” ื”ืžืชืื™ืžื™ื ืœื‘ื™ืฆื•ืข ืขืฆืžืื™ ืฉืื™ื ื ื“ื•ืจืฉื™ื ืชืœื•ืช ื—ื™ืฆื•ื ื™ืช.

ืชื›ื•ื ื•ืช ืขื™ืงืจื™ื•ืช:

  • ืงื•ืžืคืงื˜ื™ ื•ืงืœ ืœืฉื™ืœื•ื‘ ื‘ืคืจื•ื™ืงื˜ื™ื ืื—ืจื™ื. ื”ืงื•ื“ ื›ื•ืœืœ ืจืง ื›ืžื” ืงื‘ืฆื™ C ืฉืื™ื ื ื“ื•ืจืฉื™ื ืชืœื•ืช ื—ื™ืฆื•ื ื™ืช ืœื”ืจื›ื‘ื”. ื™ื™ืฉื•ื ื”ืงื•ืžืคื™ืœืฆื™ื” ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ ืœื•ืงื— ื‘ืขืจืš 190 KB;
  • ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ืžืื•ื“ ื•ื–ืžืŸ ื”ืคืขืœื” ืงืฆืจ. ื”ืขื‘ืจืช 56 ืืœืฃ ืžื‘ื—ื ื™ ืชืื™ืžื•ืช ืฉืœ ECMAScript ื ืžืฉื›ืช ื›-100 ืฉื ื™ื•ืช ื›ืืฉืจ ื”ื ืžื‘ื•ืฆืขื™ื ืขืœ ืœื™ื‘ื” ืื—ืช ืฉืœ ืžื—ืฉื‘ ืฉื•ืœื—ื ื™ ืจื’ื™ืœ. ืืชื—ื•ืœ ื–ืžืŸ ืจื™ืฆื” ืœื•ืงื— ืคื—ื•ืช ืž-300 ืžื™ืงืจื•-ืฉื ื™ื•ืช;
  • ืชืžื™ื›ื” ื›ืžืขื˜ ืžืœืื” ื‘ืžืคืจื˜ ES2019 ื•ืชืžื™ื›ื” ืžืœืื” ื‘ื ืกืคื— B, ื”ืžื’ื“ื™ืจ ืจื›ื™ื‘ื™ื ืœืชืื™ืžื•ืช ืขื ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ืžื“ื•ืจ ืงื•ื“ื;
  • ืขืžื™ื“ื” ืžืœืื” ื‘ื›ืœ ื”ืžื‘ื—ื ื™ื ืžื—ื‘ื™ืœืช ื”ื‘ื“ื™ืงื•ืช ืฉืœ ECMAScript;
  • ืชืžื™ื›ื” ื‘ื”ื™ื“ื•ืจ ืงื•ื“ Javascript ืœืงื‘ืฆื™ ื”ืคืขืœื” ืœืœื ืชืœื•ืช ื—ื™ืฆื•ื ื™ืช;
  • ืืกืคืŸ ืืฉืคื” ื”ืžื‘ื•ืกืก ืขืœ ืกืคื™ืจืช ื”ืชื™ื™ื—ืกื•ื™ื•ืช ืœืœื ื ื™ืงื•ื™ ืžื—ื–ื•ืจื™, ืžื” ืฉืืคืฉืจ ืœื ื• ืœื”ืฉื™ื’ ื”ืชื ื”ื’ื•ืช ืฆืคื•ื™ื” ื•ืœื”ืคื—ื™ืช ืืช ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ;
  • ืกื˜ ื”ืจื—ื‘ื•ืช ืœื—ื™ืฉื•ื‘ื™ื ืžืชืžื˜ื™ื™ื ื‘-JavaScript;
  • ืžืขื˜ืคืช ืœื‘ื™ืฆื•ืข ืงื•ื“ ื‘ืžืฆื‘ ืฉื•ืจืช ืคืงื•ื“ื”, ื”ืชื•ืžื›ืช ื‘ื”ื“ื’ืฉืช ืงื•ื“ ื”ืงืฉืจ;
  • ืกืคืจื™ื™ื” ืกื˜ื ื“ืจื˜ื™ืช ืงื•ืžืคืงื˜ื™ืช ืขื ืขื˜ื™ืคื•ืช ืžืขืœ ืกืคืจื™ื™ืช C.

ื”ืคืจื•ื™ืงื˜ ืžืคืชื— ื’ื ืฉืœื•ืฉ ืกืคืจื™ื•ืช C ื ืœื•ื•ืช ื”ืžืขื•ืจื‘ื•ืช ื‘-QuickJS ื•ืžืชืื™ืžื•ืช ืœืฉื™ืžื•ืฉ ืื™ืฉื™:

  • libregexp - ื”ื˜ืžืขื” ืžื”ื™ืจื” ืฉืœ ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืจื™ื™ื, ืชื•ืื ื‘ืื•ืคืŸ ืžืœื ืœืžืคืจื˜ Javascript ES 2019;
  • libunicode - ืกืคืจื™ื™ื” ืงื•ืžืคืงื˜ื™ืช ืœืขื‘ื•ื“ื” ืขื Unicode;
  • libbf - ื™ื™ืฉื•ื ืฉืœ ืคืขื•ืœื•ืช ื“ื™ื•ืง ืฉืจื™ืจื•ืชื™ื•ืช ืฉืœ ื ืงื•ื“ื” ืฆืคื” ื•ืคื•ื ืงืฆื™ื•ืช ื˜ืจื ืกืฆื ื“ื ื˜ืœื™ื•ืช ืขื ืขื™ื’ื•ืœ ืžื“ื•ื™ืง.

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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”