Facebook mbukak sumber mesin JavaScript Hermes

Mesin JavaScript entheng sumber mbukak Facebook Hermes, optimized kanggo mbukak aplikasi adhedhasar framework React Native ing platform Android. Dhukungan Hermes dibangun ing ing React Native wiwit karo release 0.60.2 dina. Proyèk iki dirancang kanggo ngatasi masalah kanthi wektu wiwitan sing dawa kanggo aplikasi JavaScript asli lan konsumsi sumber daya sing signifikan. Kode ditulis dening ing C ++ lan mbagekke ing lisensi MIT.

Antarane kaluwihan nggunakake Hermes, ana nyuda wektu wiwitan aplikasi, nyuda konsumsi memori lan nyuda ukuran aplikasi. Nalika nggunakake V8, tahap paling akeh wektu yaiku tahap parsing kode sumber lan kompilasi kanthi cepet. Hermes ndadekke langkah-langkah kasebut menyang tahap mbangun lan ngidini aplikasi dikirim ing wangun bytecode sing kompak lan efisien.

Kanggo langsung nglakokake aplikasi kasebut, mesin virtual sing dikembangake ing proyek kasebut digunakake karo kolektor sampah SemiSpace, sing nyebarake blok mung yen dibutuhake (On-demand), ndhukung obah lan defragmentasi pamblokiran, mbalekake memori sing dibebasake menyang sistem operasi, tanpa periodik. mindhai isi kabeh tumpukan.

Pangolahan JavaScript dipérang dadi sawetara tahapan. Kaping pisanan, teks sumber diurai lan representasi intermediate kode digawe (Hermes IR), adhedhasar perwakilan S.S.A. (Tugas Tunggal Statis). Sabanjure, perwakilan penengah diproses ing pangoptimal, sing ngetrapake teknik optimasi statis maju kanggo ngowahi kode perantara utama dadi perwakilan perantara sing luwih efisien nalika njaga semantik asli program kasebut. Ing tahap pungkasan, bytecode kanggo mesin virtual sing kadhaptar digawe.

Ing mesin didhukung dening bagean saka ECMAScript 2015 standar JavaScript (goal pokok iku kanggo ndhukung kanthi) lan menehi kompatibilitas karo paling ana aplikasi React Native. Hermes wis mutusaké ora ndhukung eksekusi lokal eval (), karo statements, bayangan (Refleksi lan Proxy), Intl API lan sawetara panji ing RegExp. Kanggo ngaktifake Hermes ing aplikasi React Native, tambahake pilihan "enableHermes: true" menyang proyek kasebut. Sampeyan uga bisa nggawe Hermes ing mode CLI, ngidini sampeyan nglakokake file JavaScript sewenang-wenang saka baris perintah. Mode kompilasi kesed kasedhiya kanggo debugging, sing ngidini sampeyan ora ngumpulake JavaScript saben wektu sajrone proses pangembangan, nanging bisa ngasilake bytecode kanthi cepet ing piranti kasebut.

Ing wektu sing padha, Facebook ora ngrancang kanggo ngganti Hermes kanggo Node.js lan solusi liyane, mung fokus ing aplikasi seluler (kompilasi AOT tinimbang JIT paling optimal ing konteks sistem seluler, sing duwe RAM winates lan Flash sing luwih alon). Pengujian kinerja awal sing ditindakake dening karyawan Microsoft dicethakakéyen nggunakake Hermes, aplikasi Microsoft Office kanggo Android kasedhiya kanggo digunakake ing 1.1 detik. sawise wiwitan lan nganggo 21.5MB RAM, nalika nggunakake mesin V8 njupuk 1.4 detik kanggo miwiti lan konsumsi memori 30MB.

Tambahan: Facebook diterbitake asil test dhewe. Nalika nggunakake Hermes karo aplikasi MatterMost, wektu kanggo miwiti kasedhiyan kanggo karya (TTI, Wektu Kanggo Interaksi) suda saka 4.30 kanggo 2.01 detik, ukuran paket APK suda saka 41 kanggo 22 MB, lan konsumsi memori saka 185 kanggo 136. MB.

Source: opennet.ru

Add a comment