Công cụ JavaScript Hermes nguồn mở của Facebook

Công cụ JavaScript nhẹ nguồn mở của Facebook Hermes, được tối ưu hóa để chạy các ứng dụng dựa trên framework Phản ứng bản địa trên nền tảng Android. hỗ trợ Hermes được xây dựng trong trong React Native bắt đầu với bản phát hành 0.60.2 ngày hôm nay. Dự án được thiết kế để giải quyết các vấn đề về thời gian khởi động lâu cho các ứng dụng JavaScript gốc và mức tiêu thụ tài nguyên đáng kể. Mã số được viết bởi bằng C++ và được phân phối theo giấy phép MIT.

Trong số những ưu điểm của việc sử dụng Hermes, đó là giảm thời gian khởi động ứng dụng, giảm mức tiêu thụ bộ nhớ và giảm kích thước ứng dụng. Khi sử dụng V8, giai đoạn tốn nhiều thời gian nhất là giai đoạn phân tích mã nguồn và biên dịch mã nguồn một cách nhanh chóng. Hermes đưa các bước này vào giai đoạn xây dựng và cho phép phân phối ứng dụng dưới dạng mã byte nhỏ gọn và hiệu quả.

Để trực tiếp thực thi ứng dụng, một máy ảo được phát triển trong dự án được sử dụng với trình thu gom rác SemiSpace, công cụ này chỉ phân phối các khối khi cần (Theo yêu cầu), hỗ trợ di chuyển và chống phân mảnh các khối, trả lại bộ nhớ đã giải phóng cho hệ điều hành mà không cần định kỳ quét nội dung của toàn bộ heap.

Quá trình xử lý JavaScript được chia thành nhiều giai đoạn. Đầu tiên, các văn bản nguồn được phân tích cú pháp và tạo ra một biểu diễn trung gian của mã (Hermes IR), dựa vào biểu diễn SSA (Bài tập đơn tĩnh). Tiếp theo, biểu diễn trung gian được xử lý trong trình tối ưu hóa, áp dụng các kỹ thuật tối ưu hóa tĩnh chuyển tiếp để chuyển đổi mã trung gian chính thành biểu diễn trung gian hiệu quả hơn trong khi vẫn giữ nguyên ngữ nghĩa ban đầu của chương trình. Ở giai đoạn cuối, mã byte cho máy ảo đã đăng ký được tạo.

Trong động cơ được hỗ trợ bởi một phần của tiêu chuẩn JavaScript ECMAScript 2015 (mục tiêu cuối cùng là hỗ trợ đầy đủ nó) và cung cấp khả năng tương thích với hầu hết các ứng dụng React Native hiện có. Hermes đã quyết định không hỗ trợ thực thi cục bộ eval(), với các câu lệnh, phản ánh (Reflect và Proxy), API Intl và một số cờ trong RegExp. Để kích hoạt Hermes trong ứng dụng React Native, chỉ cần thêm tùy chọn “enableHermes: true” vào dự án. Cũng có thể xây dựng Hermes ở chế độ CLI, cho phép bạn thực thi các tệp JavaScript tùy ý từ dòng lệnh. Chế độ biên dịch lười biếng có sẵn để gỡ lỗi, cho phép bạn không phải biên dịch JavaScript mọi lúc trong quá trình phát triển mà có thể tạo mã byte một cách nhanh chóng trên thiết bị.

Đồng thời, Facebook không có kế hoạch điều chỉnh Hermes cho Node.js và các giải pháp khác mà chỉ tập trung vào các ứng dụng di động (biên dịch AOT thay vì JIT là tối ưu nhất trong bối cảnh hệ thống di động có RAM hạn chế và Flash chậm hơn). Thử nghiệm hiệu năng sơ bộ do nhân viên Microsoft thực hiện cho thấyrằng khi sử dụng Hermes, ứng dụng Microsoft Office dành cho Android sẽ có sẵn để sử dụng sau 1.1 giây. sau khi khởi động và tiêu tốn 21.5 MB RAM, trong khi khi sử dụng động cơ V8 phải mất 1.4 giây để khởi động và tiêu tốn bộ nhớ là 30 MB.

Ngoài ra: Facebook công bố kết quả kiểm tra của chính mình. Khi sử dụng Hermes với ứng dụng Matter Most, thời gian bắt đầu sẵn sàng cho công việc (TTI, Time To Interact) giảm từ 4.30 xuống 2.01 giây, kích thước gói APK giảm từ 41 xuống 22 MB và mức tiêu thụ bộ nhớ từ 185 xuống 136 MB.

Nguồn: opennet.ru

Thêm một lời nhận xét