فیس بوک کد منبع را برای موتور سبک جاوا اسکریپت هرمس باز کرده است ، برای اجرای برنامه های مبتنی بر چارچوب React Native بر روی سیستم عامل Android بهینه شده است.
مهندس نرم افزار فیس بوک مارک هورویتس موتور جدید جاوا اسکریپت را در کنفرانس Chain React 2019 در پورتلند ، اورگان نشان داد. Hermes یک ابزار جدید توسعه دهنده است که بر بهبود عملکرد راه اندازی برنامه به همان روشی که فیس بوک در حال حاضر برای برنامه های خود انجام می دهد و موثرتر کردن برنامه ها در گوشی های هوشمند سطح اول ، تمرکز دارد.
درباره هرمس
پشتیبانی هرمس از نسخه 0.60.2 امروز در React Native تعبیه شده است. این پروژه برای حل مشکلات با زمان راه اندازی طولانی برای برنامه های بومی جاوا اسکریپت و مصرف قابل توجه منابع شناخته شده است. کد به زبان C ++ نوشته شده و تحت مجوز MIT توزیع می شود.
از مزایای استفاده از هرمس ، کاهش زمان شروع برنامه وجود دارد، کاهش مصرف حافظه و کاهش اندازه برنامه.
شتاب برنامه ها راه اندازی با استفاده از پیش ترکیب در یک بایت کد بدست می آید جمع و جور و کارآمد در مرحله تدوین.
برای اجرای مستقیم برنامه ، از یک ماشین مجازی با جمع آوری زباله SemiSpace که به عنوان بخشی از پروژه توسعه یافته استفاده می شود. با V8 ، طولانی ترین مراحل برای تجزیه و تحلیل کد منبع و کامپایل آن در حال انجام است.
موتور هرمس این مراحل را به مرحله تدوین می برد و اجازه می دهد برنامه ها به صورت کد بایت بهینه شده تحویل داده شوند.
پردازش JavaScript به چندین مرحله تقسیم می شود. در ابتدا ، کد منبع تجزیه می شود و نمایندگی کد میانی (Hermes IR) بر اساس نمایش SSA (تخصیص بی نظیر استاتیک) تولید می شود.
علاوه بر این ، نمایندگی میانی در بهینه ساز پردازش می شود ، که با استفاده از تکنیک های بهینه سازی استاتیک فعال ، کد متوسط را به نمایشی متوسط تر و کارآمد تر تبدیل می کند ، ضمن اینکه معنایی برنامه اصلی را حفظ می کند.
سرانجام در آخرین مرحله ، کد بایت برای ماشین مجازی ثبت شده تولید می شود.
در یک نسخه ی نمایشی ، مارک هوروویتس نشان داد که یک برنامه React Native با هرمس است تقریباً دو ثانیه سریعتر از برنامه مشابه بدون هرمس بارگیری شد.
مارک هوروویتز اطمینان حاصل کرد که هرمس اندازه APK را نیز کاهش داده است تا وسط برنامه ذخیره شده 41 مگابایتی React Native و یک چهارم حافظه برنامه را از بین برد.
به عبارت دیگر ، با استفاده از هرمس ، توسعه دهندگان می توانند کاربران را وادار کنند که با برنامه ای با موانع کمتر ، مانند زمان بارگیری بارگیری کند و محدودیت های ناشی از چندین برنامه مشترک با منابع حافظه محدود ، تعامل سریع تری داشته باشند ، مانند: به ویژه در ورودی تلفن های سطح.
این موتور بخشی از استاندارد ECMAScript 2015 JavaScript را پشتیبانی می کند (پشتیبانی کامل آن هدف نهایی است) و با اکثر برنامه های موجود React Native سازگار است. در هرمس ، تصمیم گرفته شد که از ریخته گری محلی eval () ، "با" عبارات ، بازتاب (Reflect and Proxy) ، Intl API API و برخی پرچم ها در RegExp پشتیبانی نشود.
برای فعال کردن هرمس در برنامه React Native ، کافیست گزینه "enableHermes: true" را به پروژه اضافه کنید. همچنین می توان Hermes را در حالت رابط CLI کامپایل کرد ، که به شما امکان می دهد پرونده های جاوا اسکریپت خودسرانه را از خط فرمان اجرا کنید.
در همان زمان، فیس بوک قصد ندارد هرمس را برای Node.js و راه حل های دیگر ، فقط بر روی برنامه های تلفن همراه متمرکز کند (کامپایل AOT به جای JIT در زمینه برنامه های تلفن همراه مبتنی بر React Native بهینه تر است.)
مایکروسافت آزمایشات اولیه عملکردی را انجام داد و نشان داد که هنگام استفاده از هرمس ، برنامه Microsoft Office for Android در 1.1 ثانیه کار می کند.
پس از پرتاب و مصرف آن 21.5 مگابایت رم است ، در حالی که از موتور V8 استفاده می کنید ، 1.4 ثانیه زمان راه اندازی صرف می شود و مصرف حافظه 30 مگابایت است.
اولین کسی باشید که نظر