Facebook açık kaynaklı Hermes JavaScript motoru

Facebook açık kaynaklı hafif JavaScript motoru Hermes, çerçeveyi temel alan uygulamaları çalıştırmak için optimize edilmiştir Yerli Reaksiyona Katıl Android platformunda. Hermes desteği yerleşik React Native'de bugünkü 0.60.2 sürümünden itibaren. Proje, yerel JavaScript uygulamalarının uzun başlatma süreleri ve önemli miktarda kaynak tüketimi ile ilgili sorunları çözmek için tasarlanmıştır. Kod yazıldı C++ dilinde ve MIT lisansı altında dağıtılmaktadır.

Hermes kullanmanın avantajları arasında uygulama başlatma süresinin kısalması, bellek tüketiminin azalması ve uygulama boyutunun küçülmesi yer almaktadır. V8 kullanırken en çok zaman alan aşamalar kaynak kodunun anında ayrıştırılıp derlenmesi aşamalarıdır. Hermes bu adımları yapım aşamasına getirir ve uygulamaların kompakt ve verimli bayt kodu biçiminde sunulmasına olanak tanır.

Uygulamayı doğrudan yürütmek için, SemiSpace çöp toplayıcı ile birlikte proje kapsamında geliştirilen, blokları yalnızca ihtiyaç duyuldukça dağıtan (On-demand), blokların taşınmasını ve birleştirilmesini destekleyen, boş belleği periyodik olarak işletim sistemine geri döndüren bir sanal makine kullanılır. tüm yığının içeriğini taramak.

JavaScript işleme birkaç aşamaya ayrılmıştır. İlk olarak kaynak metinler ayrıştırılır ve kodun ara temsili oluşturulur (Hermes IR), temsile dayalı olarak SSA (Statik Tek Atama). Daha sonra, ara gösterim, programın orijinal semantiğini korurken birincil ara kodu daha verimli bir ara gösterime dönüştürmek için ileri statik optimizasyon tekniklerini uygulayan bir optimize edicide işlenir. Son aşamada kayıtlı sanal makinenin bayt kodu oluşturulur.

Motorda Tarafından desteklenen ECMAScript 2015 JavaScript standardının bir parçasıdır (nihai amaç onu tam olarak desteklemektir) ve mevcut React Native uygulamalarının çoğuyla uyumluluk sağlar. Hermes, eval()'ın ifadeler, yansıma (Reflect ve Proxy), Intl API ve RegExp'teki bazı işaretlerle yerel olarak yürütülmesini desteklememeye karar verdi. Bir React Native uygulamasında Hermes'i etkinleştirmek için projeye “enableHermes: true” seçeneğini eklemeniz yeterlidir. Hermes'i CLI modunda oluşturmak da mümkündür; bu, komut satırından isteğe bağlı JavaScript dosyalarını yürütmenize olanak tanır. Hata ayıklama için, geliştirme süreci sırasında her seferinde JavaScript'i derlemenize değil, zaten cihazdayken anında bayt kodu oluşturmanıza olanak tanıyan tembel bir derleme modu mevcuttur.

Aynı zamanda Facebook, Hermes'i Node.js ve diğer çözümler için uyarlamayı planlamıyor ve yalnızca mobil uygulamalara odaklanıyor (JIT yerine AOT derlemesi, sınırlı RAM'e ve daha yavaş Flash'a sahip mobil sistemler bağlamında en uygunudur). Microsoft çalışanları tarafından gerçekleştirilen ön performans testleri gösterdiHermes kullanıldığında Android için Microsoft Office uygulamasının 1.1 saniyede kullanıma hazır hale gelmesi. Başlangıçtan sonra 21.5 MB RAM tüketir, V8 motorunu kullanırken başlatılması 1.4 saniye sürer ve bellek tüketimi 30 MB'tır.

Ekleme: Facebook опубликовал kendi test sonuçları. Hermes'i MatterMost uygulamasıyla birlikte kullanırken, iş için kullanılabilirliğin başlama süresi (TTI, Time To Interact) 4.30 saniyeden 2.01 saniyeye düştü, APK paketinin boyutu 41'den 22 MB'a ve bellek tüketimi 185'ten 136'ya düşürüldü MB.

Kaynak: opennet.ru

Yorum ekle