เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ JavaScript เบ‚เบญเบ‡เป€เบŸเบชเบšเบธเบเป€เบ›เบตเบ”เปเบซเบผเปˆเบ‡ Hermes

เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ JavaScript เบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒเบ‚เบญเบ‡เป€เบŸเบชเบšเบธเบเป€เบ›เบตเบ”เปเบซเบผเปˆเบ‡ Hermes, เป€เบซเบกเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบญเบš React Native เปƒเบ™โ€‹เป€เบงโ€‹เบ—เบต Androidโ€‹. เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™ Hermesโ€‹ เปƒเบ™เบ•เบปเบง เปƒเบ™ React Native เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เบ›เปˆเบญเบ 0.60.2 เบ‚เบญเบ‡เบกเบทเป‰เบ™เบตเป‰. เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบญเบญเบโ€‹เปเบšเบšโ€‹เป€เบžเบทเปˆเบญโ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เป€เบงโ€‹เบฅเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบเบฒเบงโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบ JavaScript เบžเบทเป‰เบ™โ€‹เป€เบกเบทเบญเบ‡โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เป‚เบžเบโ€‹เบŠเบฑเบšโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹. เบฅเบฐเบซเบฑเบ” เบ‚เบฝเบ™โ€‹เป‚เบ”เบ เปƒเบ™ C ++ เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ‚เปเป‰เป„เบ”เป‰เบ›เบฝเบšเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Hermes, เบกเบตเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™. เป€เบกเบทเปˆเบญเปƒเบŠเป‰ V8, เป„เบฅเบเบฐเบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เปเบฅเบฐเบฅเบงเบšเบฅเบงเบกเบกเบฑเบ™เบ—เบฑเบ™เบ—เบต. Hermes เป€เบญเบปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ›เบชเบนเปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ–เบทเบเบˆเบฑเบ”เบชเบปเปˆเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡ bytecode เบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เปเบฅเบฐเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเบเบปเบ‡, เป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เปƒเบŠเป‰เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ SemiSpace, เป€เบŠเบดเปˆเบ‡เปเบˆเบเบขเบฒเบเบ•เบฑเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ (เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™), เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเปเบฅเบฐเบเบฒเบ™ defragmentation เบ‚เบญเบ‡เบ•เบฑเบ™, เบเบฑเบšเบ„เบทเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบเปƒเบซเป‰เบเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐ. เบเบฒเบ™เบชเบฐเปเบเบ™เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡ heap เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™ JavaScript เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบซเบผเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™. เบ—เปเบฒเบญเบดเบ”, เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป„เบ”เป‰เบ–เบทเบเบงเบดเป€เบ„เบฒเบฐเปเบฅเบฐเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™ (Hermes IR), เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™ เบช (Static Single Assignment). เบ•เปเปˆเป„เบ›, เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปƒเบ™ optimizer, เป€เบŠเบดเปˆเบ‡เบ™เปเบฒเปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเป€เบžเบทเปˆเบญเบซเบฑเบ™เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบฑเป‰เบ™เบเบฒเบ‡เบ•เบปเป‰เบ™เบ•เปเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ•เบปเบงเบเบฒเบ‡เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบซเบกเบฒเบเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบ, bytecode เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™.

เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ เบชเบฐ เปœเบฑเบš เบชเบฐ เปœเบนเบ™ เป‚เบ”เบ เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ ECMAScript 2015 JavaScript (เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฑเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆ) เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React Native เบ—เบตเปˆเบกเบตเบขเบนเปˆเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”. Hermes เป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡ eval(), เบ”เป‰เบงเบเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™, เบเบฒเบ™เบชเบฐเบ—เป‰เบญเบ™ (Reflect เปเบฅเบฐ Proxy), Intl API เปเบฅเบฐเบšเบฒเบ‡เบ—เบธเบ‡เปƒเบ™ RegExp. เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰ Hermes เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ React Native, เบžเบฝเบ‡เปเบ•เปˆเป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบฅเบทเบญเบ "enableHermes: true" เป€เบ‚เบปเป‰เบฒเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡ Hermes เปƒเบ™เป‚เบซเบกเบ” CLI, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบŸเบฅเปŒ JavaScript เบ—เบตเปˆเบกเบฑเบเบˆเบฒเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. เป‚เบซเบกเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ—เบตเปˆเบ‚เบตเป‰เบเบฝเบ”เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เบšเบฑเบ™เบซเบฒ, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบšเปเปˆเบฅเบงเบšเบฅเบงเบก JavaScript เบ—เบธเบเป†เบ„เบฑเป‰เบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เปเบ•เปˆเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ bytecode เบ—เบตเปˆเปƒเบŠเป‰เป„เบ”เป‰เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™.

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, Facebook เบšเปเปˆเป„เบ”เป‰เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฑเบš Hermes เบชเปเบฒเบฅเบฑเบš Node.js เปเบฅเบฐเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบญเบทเปˆเบ™เป†, เป‚เบ”เบเบชเบธเบกเปƒเบชเปˆเบžเบฝเบ‡เปเบ•เปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบกเบทเบ–เบท (เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก AOT เปเบ—เบ™ JIT เปเบกเปˆเบ™เบ”เบตเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบกเบทเบ–เบท, เป€เบŠเบดเปˆเบ‡เบกเบต RAM เบˆเปเบฒเบเบฑเบ”เปเบฅเบฐ Flash เบŠเป‰เบฒ). เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ”เบเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™ Microsoft เป€เบ›เบตเบ”เป€เบœเบตเบเป€เบกเบทเปˆเบญเปƒเบŠเป‰ Hermes, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Microsoft Office เบชเปเบฒเบฅเบฑเบš Android เบˆเบฐเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เปƒเบ™ 1.1 เบงเบดเบ™เบฒเบ—เบต. เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เป‚เบžเบ 21.5MB เบ‚เบญเบ‡ RAMโ€‹, เปƒเบ™โ€‹เบ‚เบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆโ€‹เปƒเบ™โ€‹เบ‚เบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบˆเบฑเบ V8 เบกเบฑเบ™โ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒ 1.4 เบงเบดโ€‹เบ™เบฒโ€‹เบ—เบตโ€‹เป€เบžเบทเปˆเบญโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เป‚เบžเบโ€‹เบซเบ™เปˆเบงเบโ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เปเบกเปˆเบ™ 30MBโ€‹.

เป€เบžเบตเปˆเบกเป€เบ•เบตเบก: เป€เบŸเบชเบšเบธเบ เบˆเบฑเบ”เบžเบตเบกเบกเบฒ เบœเบปเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹. เป€เบกเบทเปˆเบญเปƒเบŠเป‰ Hermes เบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ MatterMost, เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบกเบตเปƒเบซเป‰เป€เบฎเบฑเบ”เบงเบฝเบ (TTI, Time To Interact) เบซเบผเบธเบ”เบฅเบปเบ‡เบˆเบฒเบ 4.30 เบซเบฒ 2.01 เบงเบดเบ™เบฒเบ—เบต, เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ” APK เบซเบผเบธเบ”เบฅเบปเบ‡เบˆเบฒเบ 41 เบซเบฒ 22 MB, เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบกเบˆเบณเบˆเบฒเบ 185 เป€เบ›เบฑเบ™ 136. MB.

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

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