Facebook open sourced engine Hermes JavaScript

Facebook open sourced engine JavaScript lightweight Hermes, dioptimalkeun pikeun ngajalankeun aplikasi dumasar kana kerangka meta Asalna dina platform Android. rojongan Hermes diwangun-di dina React Native dimimitian ku release 0.60.2 dinten ieu. Proyék ieu dirancang pikeun ngabéréskeun masalah sareng waktos ngamimitian anu panjang pikeun aplikasi JavaScript asli sareng konsumsi sumberdaya anu signifikan. Kodeu ditulis ku dina C ++ sarta disebarkeun dina lisénsi MIT.

Diantara kaunggulan ngagunakeun Hermes, aya pangurangan waktos ngamimitian aplikasi, panurunan dina konsumsi mémori sareng pangurangan ukuran aplikasi. Nalika nganggo V8, tahap anu paling nyéépkeun waktos nyaéta tahapan parsing kode sumber sareng kompilasi dina laleur. Hermes nyangking léngkah-léngkah ieu kana tahap ngawangun sareng ngamungkinkeun aplikasi dikirimkeun dina bentuk bytecode anu kompak sareng efisien.

Pikeun langsung ngaéksekusi aplikasi, mesin virtual anu dikembangkeun dina proyék dianggo sareng kolektor sampah SemiSpace, anu nyebarkeun blok ngan ukur upami diperyogikeun (On-demand), ngadukung gerakan sareng defragmentasi blok, mulangkeun mémori anu dibébaskeun kana sistem operasi, tanpa périodik. scanning eusi sakabéh numpuk.

Ngolah JavaScript dibagi kana sababaraha tahap. Kahiji, téks sumber diuraikeun sareng dibangkitkeun perwakilan perantara kode (Hermes IR), dumasar kana perwakilan S.S.A. (Tunggal Tugas Statik). Salajengna, perwakilan panengah diolah dina optimizer, anu nerapkeun téknik optimasi statik maju pikeun ngarobih kode perantara primér janten perwakilan perantara anu langkung éfisién bari ngajaga semantik asli program. Dina tahap panungtungan, nu bytecode pikeun mesin virtual didaptarkeun dihasilkeun.

Dina mesin dirojong ku bagian tina ECMAScript 2015 standar JavaScript (tujuan pamungkas nyaéta pikeun pinuh ngarojong eta) jeung nyadiakeun kasaluyuan jeung paling aya aplikasi React Native. Hermes geus mutuskeun teu ngarojong palaksanaan lokal tina eval (), kalawan pernyataan, cerminan (Refleksi na proxy), Intl API sarta sababaraha umbul di RegExp. Pikeun ngaktifkeun Hermes dina aplikasi React Native, tambahkeun pilihan "enableHermes: true" kana proyek. Éta ogé mungkin pikeun ngawangun Hermes dina modeu CLI, ngamungkinkeun anjeun ngaéksekusi file JavaScript sawenang tina garis paréntah. A mode kompilasi puguh geus sadia pikeun debugging, nu ngidinan Anjeun pikeun teu compile JavaScript unggal waktu salila prosés pangwangunan, tapi pikeun ngahasilkeun bytecode on laleur geus aya dina alat.

Dina waktos anu sami, Facebook henteu ngarencanakeun adaptasi Hermes pikeun Node.js sareng solusi anu sanés, ngan ukur museurkeun kana aplikasi sélulér (kompilasi AOT tinimbang JIT paling optimal dina konteks sistem sélulér, anu gaduh RAM kawates sareng Flash anu langkung laun). Uji kinerja awal anu dilakukeun ku karyawan Microsoft wangsityén nalika nganggo Hermes, aplikasi Microsoft Office pikeun Android tiasa dianggo dina 1.1 detik. sanggeus ngamimitian tur meakeun 21.5MB RAM, bari nalika maké mesin V8 butuh 1.4 detik pikeun ngamimitian jeung konsumsi memori 30MB.

Tambahan: Facebook diterbitkeun hasil tés sorangan. Nalika nganggo Hermes sareng aplikasi MatterMost, waktos ngamimitian kasadiaan pikeun padamelan (TTI, Time To Interact) turun tina 4.30 dugi ka 2.01 detik, ukuran pakét APK dikirangan tina 41 dugi ka 22 MB, sareng konsumsi mémori tina 185 dugi ka 136. MB.

sumber: opennet.ru

Tambahkeun komentar