Facebook açıq mənbəli Hermes JavaScript mühərriki

Facebook açıq mənbəli yüngül JavaScript mühərriki Hermes, çərçivə əsasında işləyən proqramlar üçün optimallaşdırılmışdır Sitat gətir Android platformasında. Hermes dəstəyi daxili Bugünkü 0.60.2 buraxılışından başlayaraq React Native-də. Layihə yerli JavaScript proqramları və əhəmiyyətli resurs istehlakı üçün uzun başlanğıc vaxtları ilə bağlı problemləri həll etmək üçün nəzərdə tutulmuşdur. Kod Müəllif C++ dilində və MIT lisenziyası ilə paylanmışdır.

Hermes-dən istifadənin üstünlükləri arasında tətbiqin işə salınma vaxtının azalması, yaddaş istehlakının azalması və tətbiq ölçüsünün azalması var. V8-dən istifadə edərkən, ən çox vaxt aparan mərhələlər mənbə kodunun təhlili və tez bir zamanda tərtib edilməsi mərhələləridir. Hermes bu addımları qurma mərhələsinə gətirir və tətbiqlərin kompakt və səmərəli bayt kodu şəklində çatdırılmasına imkan verir.

Tətbiqi birbaşa icra etmək üçün, layihə çərçivəsində hazırlanmış virtual maşın SemiSpace zibil kollektoru ilə istifadə olunur, o, blokları yalnız lazım olduqda paylayır (Tələb üzrə), blokların köçürülməsini və defraqmentasiyasını dəstəkləyir, boş yaddaşı vaxtaşırı olmadan əməliyyat sisteminə qaytarır. bütün yığının məzmununun skan edilməsi.

JavaScript emalı bir neçə mərhələyə bölünür. Əvvəlcə mənbə mətnləri təhlil edilir və kodun aralıq təsviri yaradılır (Hermes IR), təmsilçiliyə əsaslanır SSA (Statik Tək Təyinat). Sonra, aralıq təqdimat optimallaşdırıcıda işlənir, o, proqramın orijinal semantikasını qoruyarkən ilkin ara kodu daha səmərəli aralıq təmsilə çevirmək üçün irəli statik optimallaşdırma üsullarını tətbiq edir. Son mərhələdə qeydiyyatdan keçmiş virtual maşın üçün bayt kodu yaradılır.

Mühərrikdə tərəfindən dəstəklənir ECMAScript 2015 JavaScript standartının bir hissəsidir (son məqsəd onu tam dəstəkləməkdir) və əksər mövcud React Native proqramları ilə uyğunluğu təmin edir. Hermes, eval(), ifadələri, əks etdirmə (Reflect və Proxy), Intl API və RegExp-də bəzi bayraqların yerli icrasını dəstəkləməmək qərarına gəldi. React Native tətbiqində Hermes-i aktivləşdirmək üçün layihəyə “enableHermes: true” seçimini əlavə etmək kifayətdir. CLI rejimində Hermes qurmaq da mümkündür, bu da əmr satırından ixtiyari JavaScript fayllarını icra etməyə imkan verir. Sazlama üçün tənbəl kompilyasiya rejimi mövcuddur ki, bu da inkişaf prosesində hər dəfə JavaScript-i tərtib etməyə deyil, artıq cihazda bayt kodu yaratmağa imkan verir.

Bununla yanaşı, Facebook “Hermes”i Node.js və digər həllər üçün uyğunlaşdırmağı planlaşdırmır, yalnız mobil proqramlara diqqət yetirir (JIT əvəzinə AOT kompilyasiyası məhdud RAM və daha yavaş Flash olan mobil sistemlər kontekstində ən optimaldır). Microsoft işçiləri tərəfindən ilkin performans testi keçirilib ortaya qoyduHermes-dən istifadə edərkən Android üçün Microsoft Office proqramı 1.1 saniyəyə istifadəyə hazır olur. işə saldıqdan sonra və 21.5 MB RAM istehlak edir, V8 mühərrikindən istifadə edərkən işə salmaq üçün 1.4 saniyə çəkir və yaddaş sərfi 30 MB təşkil edir.

Əlavə: Facebook nəşr öz test nəticələri. Hermes-i MatterMost tətbiqi ilə istifadə edərkən, işə başlama vaxtı (TTI, qarşılıqlı əlaqə vaxtı) 4.30-dan 2.01 saniyəyə, APK paketinin ölçüsü 41-dən 22 MB-a, yaddaş istehlakı isə 185-dən 136-ya endirildi. MB.

Mənbə: opennet.ru

Добавить комментарий