ืžื ื•ืข JavaScript ืฉืœ ื”ืจืžืก ื‘ืงื•ื“ ืคืชื•ื— ืฉืœ ืคื™ื™ืกื‘ื•ืง

ืžื ื•ืข JavaScript ืงืœ ืžืฉืงืœ ื‘ืžืงื•ืจ ืคืชื•ื— ืฉืœ ืคื™ื™ืกื‘ื•ืง ื”ืจืžืก, ืžื•ืชืื ืœื”ืคืขืœืช ื™ื™ืฉื•ืžื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืžืกื’ืจืช ืชื’ื™ื‘ ืฉืคืช ืื ื‘ืคืœื˜ืคื•ืจืžืช ืื ื“ืจื•ืื™ื“. ืชืžื™ื›ื” ืฉืœ ื”ืจืžืก ืžื•ื‘ื ื” ื‘-React Native ื”ื—ืœ ืžื”ื’ืจืกื” 0.60.2 ืฉืœ ื”ื™ื•ื. ื”ืคืจื•ื™ืงื˜ ื ื•ืขื“ ืœืคืชื•ืจ ื‘ืขื™ื•ืช ืขื ื–ืžื ื™ ื”ืคืขืœื” ืืจื•ื›ื™ื ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ JavaScript ืžืงื•ืจื™ื™ื ื•ืฆืจื™ื›ืช ืžืฉืื‘ื™ื ืžืฉืžืขื•ืชื™ืช. ืงื•ื“ ื›ืชื•ื‘ ื‘-C++ ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT.

ื‘ื™ืŸ ื”ื™ืชืจื•ื ื•ืช ื‘ืฉื™ืžื•ืฉ ื‘-Hermes ื™ืฉื ื” ื”ืคื—ืชื” ื‘ื–ืžืŸ ื”ื”ืคืขืœื” ืฉืœ ื”ืืคืœื™ืงืฆื™ื”, ื™ืจื™ื“ื” ื‘ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ ื•ื”ืคื—ืชื” ื‘ื’ื•ื“ืœ ื”ืืคืœื™ืงืฆื™ื”. ื‘ืขืช ืฉื™ืžื•ืฉ ื‘-V8, ื”ืฉืœื‘ื™ื ืฉื“ื•ืจืฉื™ื ื–ืžืŸ ืจื‘ ื”ื ืฉืœื‘ื™ ื ื™ืชื•ื— ืงื•ื“ ื”ืžืงื•ืจ ื•ื”ื™ื“ื•ืจ ืฉืœื• ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”. ื”ืจืžืก ืžื‘ื™ืื” ืืช ื”ืฉืœื‘ื™ื ื”ืœืœื• ืœืฉืœื‘ ื”ื‘ื ื™ื™ื” ื•ืžืืคืฉืจืช ืืกืคืงืช ื™ื™ืฉื•ืžื™ื ื‘ืฆื•ืจื” ืฉืœ bytecode ืงื•ืžืคืงื˜ื™ ื•ื™ืขื™ืœ.

ืœื‘ื™ืฆื•ืข ื™ืฉื™ืจ ืฉืœ ื”ืืคืœื™ืงืฆื™ื”, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืฉืคื•ืชื—ื” ื‘ืžืกื’ืจืช ื”ืคืจื•ื™ืงื˜ ืขื ืื•ืกืฃ ื”ืืฉืคื” SemiSpace, ืืฉืจ ืžืคื™ืฅ ื‘ืœื•ืงื™ื ืจืง ืœืคื™ ื”ืฆื•ืจืš (On-demand), ืชื•ืžืš ื‘ื”ื–ื–ื” ื•ื‘ืื™ื—ื•ื™ ืฉืœ ื‘ืœื•ืงื™ื, ื”ื—ื–ืจืช ื–ื™ื›ืจื•ืŸ ืžืฉื•ื—ืจืจ ืœืžืขืจื›ืช ื”ื”ืคืขืœื”, ืœืœื ืžืขืช ืœืขืช ืกื•ืจืง ืืช ืชื•ื›ืŸ ื”ืขืจื™ืžื” ื›ื•ืœื”.

ืขื™ื‘ื•ื“ JavaScript ืžื—ื•ืœืง ืœืžืกืคืจ ืฉืœื‘ื™ื. ืจืืฉื™ืช, ื˜ืงืกื˜ื™ ื”ืžืงื•ืจ ืžื ื•ืชื—ื™ื ื•ื ื•ืฆืจ ื™ื™ืฆื•ื’ ื‘ื™ื ื™ื™ื ืฉืœ ื”ืงื•ื“ (ื”ืจืžืก IR), ื‘ื”ืชื‘ืกืก ืขืœ ื”ื™ื™ืฆื•ื’ SSA (ืžืงืฆื” ืกื˜ื˜ื™ ื‘ื•ื“ื“). ืœืื—ืจ ืžื›ืŸ, ื™ื™ืฆื•ื’ ื”ื‘ื™ื ื™ื™ื ืžืขื•ื‘ื“ ื‘ืžื™ื™ืขืœ, ืืฉืจ ืžื™ื™ืฉื ื˜ื›ื ื™ืงื•ืช ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืกื˜ื˜ื™ืช ืงื“ื™ืžื” ื›ื“ื™ ืœื”ืคื•ืš ืืช ืงื•ื“ ื”ื‘ื™ื ื™ื™ื ื”ืจืืฉื™ ืœื™ื™ืฆื•ื’ ื‘ื™ื ื™ื™ื ื™ืขื™ืœ ื™ื•ืชืจ ืชื•ืš ืฉืžื™ืจื” ืขืœ ื”ืกืžื ื˜ื™ืงื” ื”ืžืงื•ืจื™ืช ืฉืœ ื”ืชื•ื›ื ื™ืช. ื‘ืฉืœื‘ ื”ืื—ืจื•ืŸ ื ื•ืฆืจ ื”-bytecode ืขื‘ื•ืจ ื”ืžื›ื•ื ื” ื”ื•ื•ื™ืจื˜ื•ืืœื™ืช ื”ืจืฉื•ืžื”.

ื‘ืžื ื•ืข ื ืชืžืš ืขืœ ื™ื“ื™ ื—ืœืง ืžืชืงืŸ ECMAScript 2015 JavaScript (ื”ืžื˜ืจื” ื”ืกื•ืคื™ืช ื”ื™ื ืœืชืžื•ืš ื‘ื• ื‘ืื•ืคืŸ ืžืœื) ื•ืžืกืคืง ืชืื™ืžื•ืช ืœืจื•ื‘ ื™ื™ืฉื•ืžื™ React Native ื”ืงื™ื™ืžื™ื. ื”ืจืžืก ื”ื—ืœื™ื˜ื” ืœื ืœืชืžื•ืš ื‘ื‘ื™ืฆื•ืข ืžืงื•ืžื™ ืฉืœ eval(), ืขื ื”ืฆื”ืจื•ืช, ื”ืฉืชืงืคื•ืช (Reflect ื•-Proxy), Intl API ื•ื›ืžื” ื“ื’ืœื™ื ื‘-RegExp. ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช Hermes ื‘ื™ื™ืฉื•ื React Native, ืคืฉื•ื˜ ื”ื•ืกืฃ ืืช ื”ืืคืฉืจื•ืช "enableHermes: true" ืœืคืจื•ื™ืงื˜. ืืคืฉืจ ื’ื ืœื‘ื ื•ืช ืืช ื”ืจืžืก ื‘ืžืฆื‘ CLI, ื”ืžืืคืฉืจ ืœืš ืœื‘ืฆืข ืงื‘ืฆื™ JavaScript ืฉืจื™ืจื•ืชื™ื™ื ืžืฉื•ืจืช ื”ืคืงื•ื“ื”. ืงื™ื™ื ืžืฆื‘ ืงื•ืžืคื™ืœืฆื™ื” ืขืฆืœืŸ ืœื ื™ืคื•ื™ ื‘ืื’ื™ื, ื”ืžืืคืฉืจ ืœืš ืœื ืœื”ื“ืจ JavaScript ื‘ื›ืœ ืคืขื ื‘ืชื”ืœื™ืš ื”ืคื™ืชื•ื—, ืืœื ืœื™ืฆื•ืจ ืงื•ื“ ื‘ืชื™ื ืชื•ืš ื›ื“ื™ ืชื ื•ืขื” ื›ื‘ืจ ื‘ืžื›ืฉื™ืจ.

ื™ื—ื“ ืขื ื–ืืช, ืคื™ื™ืกื‘ื•ืง ืœื ืžืชื›ื ื ืช ืœื”ืชืื™ื ืืช Hermes ืœ-Node.js ื•ืœืคืชืจื•ื ื•ืช ืื—ืจื™ื, ืชื•ืš ื”ืชืžืงื“ื•ืช ืจืง ื‘ืืคืœื™ืงืฆื™ื•ืช ืžื•ื‘ื™ื™ืœ (ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ AOT ื‘ืžืงื•ื JIT ื”ื™ื ื”ืื•ืคื˜ื™ืžืœื™ืช ื‘ื™ื•ืชืจ ื‘ื”ืงืฉืจ ืฉืœ ืžืขืจื›ื•ืช ืžื•ื‘ื™ื™ืœ, ื‘ืขืœื•ืช ื–ื™ื›ืจื•ืŸ RAM ืžื•ื’ื‘ืœ ื•ืคืœืืฉ ืื™ื˜ื™ ื™ื•ืชืจ). ื‘ื“ื™ืงื•ืช ื‘ื™ืฆื•ืขื™ื ืจืืฉื•ื ื™ื•ืช ืฉื ืขืจื›ื• ืขืœ ื™ื“ื™ ืขื•ื‘ื“ื™ Microsoft ื’ื™ืœื”ืฉื‘ืฉื™ืžื•ืฉ ื‘ื”ืจืžืก, ืืคืœื™ืงืฆื™ื™ืช Microsoft Office ืœืื ื“ืจื•ืื™ื“ ื”ื•ืคื›ืช ืœื–ืžื™ื ื” ืœืฉื™ืžื•ืฉ ืชื•ืš 1.1 ืฉื ื™ื•ืช. ืœืื—ืจ ื”ื”ืคืขืœื” ื•ืฆื•ืจืš 21.5MB ืฉืœ ื–ื™ื›ืจื•ืŸ RAM, ื‘ืขื•ื“ ืฉื‘ืฉื™ืžื•ืฉ ื‘ืžื ื•ืข V8 ืœื•ืงื— 1.4 ืฉื ื™ื•ืช ืœื”ืชื ืข ื•ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ ื”ื™ื 30MB.

ืชื•ืกืคืช: ืคื™ื™ืกื‘ื•ืง ืคื•ืจืกื ืชื•ืฆืื•ืช ื‘ื“ื™ืงื” ืžืฉืœื•. ื‘ืขืช ืฉื™ืžื•ืฉ ื‘-Hermes ืขื ืืคืœื™ืงืฆื™ื™ืช MatterMost, ื”ื–ืžืŸ ืœืชื—ื™ืœืช ื”ื–ืžื™ื ื•ืช ืœืขื‘ื•ื“ื” (TTI, Time To Interact) ื™ืจื“ ืž-4.30 ืœ-2.01 ืฉื ื™ื•ืช, ื’ื•ื“ืœ ื—ื‘ื™ืœืช ื”-APK ืฆื•ืžืฆื ืž-41 ืœ-22 ืžื’ื”-ื‘ื™ื™ื˜ ื•ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ ืž-185 ืœ-136 MB.

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

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