QEMU เปเบฅเบฐเบœเบนเป‰เบเปเปˆเบ•เบฑเป‰เบ‡ FFmpeg เป€เบœเบตเบเปเบœเปˆ QuickJS JavaScript Engine

เบ™เบฑเบเบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เบเบฃเบฑเปˆเบ‡ Fabrice Bellard, เบœเบนเป‰เบ—เบตเปˆเป€เบ„เบตเบเบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™ QEMU เปเบฅเบฐ FFmpeg, เปเบฅเบฐเบเบฑเบ‡เป„เบ”เป‰เบชเป‰เบฒเบ‡เบชเบนเบ”เบ—เบตเปˆเป„เบงเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ pi เปเบฅเบฐเบžเบฑเบ”เบ—เบฐเบ™เบฒเบฎเบนเบšเปเบšเบšเบฎเบนเบšเบžเบฒเบš. .bpg, เบˆเบฑเบ”เบžเบตเบกเบกเบฒเบชเบฐเบšเบฑเบšเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ JavaScript เปƒเบซเบกเปˆ QuickJS. เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเปเบกเปˆเบ™เบซเบ™เบฒเปเบซเบ™เป‰เบ™เปเบฅเบฐเบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเบญเบทเปˆเบ™เป†. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เป€เบ›เบฑเบ™ C เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰เบเบฑเบ‡เบกเบตเบเบฒเบ™เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบเบฑเบš WebAssembly เป‚เบ”เบเปƒเบŠเป‰ Emscripten เปเบฅเบฐเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” JavaScript เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเป€เบžเบฒเบฐเบ‚เบญเบ‡ ES2019, เบฅเบงเบกเบ—เบฑเบ‡เป‚เบกเบ”เบนเบ™, เป€เบ„เบทเปˆเบญเบ‡เบ›เบฑเปˆเบ™เป„เบŸ asynchronous, เปเบฅเบฐเบ•เบปเบงเปเบ—เบ™. เบ„เบฐโ€‹เบ™เบดเบ”โ€‹เบชเบฒเบ”โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบ–เบฒเบ™โ€‹เปเบกเปˆเบ™โ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹. เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ เบชเปเบฒเบฅเบฑเบš JavaScript, เป€เบŠเบฑเปˆเบ™: เบ›เบฐเป€เบžเบ” BigInt เปเบฅเบฐ BigFloat, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ overloading. เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, QuickJS เบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™ เบ”เบตเบเบงเปˆเบฒ analogues เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš
bench-v8 เปเบกเปˆเบ™เบขเบนเปˆเบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ XS เบ—เบตเปˆ 35%, duktape เบซเบผเบฒเบเบเบงเปˆเบฒเบชเบญเบ‡เป€เบ—เบปเปˆเบฒ jerryscript เบชเบฒเบกเป€เบ—เบทเปˆเบญเปเบฅเบฐ MuJS เป€เบˆเบฑเบ”เป€เบ—เบทเปˆเบญ.

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบฑเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เป‚เบ„เบ‡เบเบฒเบ™เบเบฑเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒ qjs, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเปเบฅเปˆเบ™เบฅเบฐเบซเบฑเบ” JavaScript เบˆเบฒเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, qjsc compiler เปเบกเปˆเบ™เบกเบตเบขเบนเปˆ, เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เปเบšเบšเป‚เบ”เบ”เบ”เปˆเบฝเบงเบ—เบตเปˆเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบžเบฒเบเบ™เบญเบ.

ัะฝะพะฒะฝั‹ะตะพัะพะฑะตะฝะฝะพัั‚ะธ:

  • เบเบฐเบ—เบฑเบ”เบฎเบฑเบ”เปเบฅเบฐเบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบญเบทเปˆเบ™เป†. เบฅเบฐเบซเบฑเบ”เบ›เบฐเบเบญเบšเบกเบตเบžเบฝเบ‡เปเบ•เปˆเป„เบŸเบฅเปŒ C เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบžเบฒเบเบ™เบญเบเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™ 190 KB;
  • เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เบซเบผเบฒเบ เปเบฅเบฐเป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ•เปเปˆเบฒ. เบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เบญเบ‡ ECMAScript 56 เบžเบฑเบ™เบ„เบปเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™ 100 เบงเบดเบ™เบฒเบ—เบตเป€เบกเบทเปˆเบญเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบซเบผเบฑเบเบ”เบฝเบงเบ‚เบญเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ•เบฑเป‰เบ‡เป‚เบ•เบฐเบ›เบปเบเบเบฐเบ•เบด. เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเปˆเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเปœเป‰เบญเบเบเบงเปˆเบฒ 300 microseconds;
  • เป€เบเบทเบญเบšเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบเปเบฒเบ™เบปเบ” ES2019 เปเบฅเบฐเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเป€เบญเบเบฐเบชเบฒเบ™เบŠเป‰เบญเบ™ B, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเป€เบเบปเปˆเบฒ;
  • เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบ ECMAScript Test Suite;
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ” Javascript เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบžเบฒเบเบ™เบญเบ;
  • เป€เบ„เบทเปˆเบญเบ‡เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเบญเป‰เบฒเบ‡เบญเบตเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบงเบปเบ‡เบˆเบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰เปเบฅเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบกเบˆเปเบฒ;
  • เบŠเบธเบ”เบ‚เบญเบ‡เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบฒเบ‡เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เปƒเบ™เบžเบฒเบชเบฒ JavaScript;
  • Shell เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เปƒเบ™เป‚เบซเบกเบ”เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบ™เบฑเป‰เบ™เบฅเบฐเบซเบฑเบ” contextual;
  • เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบฐเปœเบฒเบ”เบเบฐเบ—เบฑเบ”เบฎเบฑเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบซเบผเบฒเบเบเบงเปˆเบฒเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” C.

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เบเบฑเบ‡โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบชเบฒเบก companion Cโ€‹-libraries เบ—เบตเปˆโ€‹เบเปˆเบฝเบงโ€‹เบ‚เป‰เบญเบ‡โ€‹เบเบฑเบš QuickJS เปเบฅเบฐโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เปเบเบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบซเบฒเบโ€‹:

  • libregexp เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡ Javascript ES 2019 เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™;
  • libunicode - เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Unicode;
  • libbf เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบˆเบธเบ”เบฅเบญเบเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเป‚เบ”เบเบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™ transcendental เบฎเบญเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™