Người sáng lập QEMU và FFmpeg xuất bản Công cụ JavaScript QuickJS

Nhà toán học người Pháp Fabrice Bellard, người sáng lập dự án QEMU và FFmpeg, cũng đã tạo ra công thức tính Pi nhanh nhất và phát triển định dạng hình ảnh BPG, đã xuất bản bản phát hành đầu tiên của công cụ JavaScript mới QuickJS. Động cơ nhỏ gọn và được thiết kế để tích hợp vào các hệ thống khác. Mã dự án được viết bằng C và được phân phối theo giấy phép MIT. Bản dựng của công cụ cũng có sẵn, được biên dịch vào WebAssembly bằng Emscripten và phù hợp để thực thi trên trình duyệt.

Triển khai JavaScript ủng hộ Thông số kỹ thuật ES2019, bao gồm các mô-đun, bộ tạo không đồng bộ và proxy. Toán học không chuẩn được hỗ trợ tùy chọn tiện ích mở rộng cho JavaScript, chẳng hạn như các loại BigInt và BigFloat, cũng như quá tải toán tử. Hiệu suất của QuickJS rất đáng kể vượt trội so với các chất tương tự có sẵn, ví dụ, trong thử nghiệm
bench-v8 đi trước động cơ XS ở mức 35%, DukTape tăng hơn gấp đôi jerryscript ba lần và MuJS bảy lần.

Ngoài thư viện để nhúng công cụ vào các ứng dụng, dự án còn cung cấp trình thông dịch qjs, có thể được sử dụng để chạy mã JavaScript từ dòng lệnh. Hơn nữa, trình biên dịch qjsc có sẵn, có khả năng tạo ra các tệp thực thi đầu ra phù hợp để thực thi độc lập mà không yêu cầu phụ thuộc bên ngoài.

Các tính năng chính:

  • Nhỏ gọn và dễ dàng tích hợp vào các dự án khác. Mã chỉ bao gồm một số tệp C không yêu cầu phụ thuộc bên ngoài để lắp ráp. Ứng dụng được biên dịch đơn giản nhất chiếm khoảng 190 KB;
  • Hiệu suất rất cao và thời gian khởi động ngắn. Việc vượt qua 56 nghìn bài kiểm tra khả năng tương thích ECMAScript mất khoảng 100 giây khi được thực thi trên một lõi của máy tính để bàn thông thường. Quá trình khởi tạo thời gian chạy mất ít hơn 300 micro giây;
  • Hỗ trợ gần như đầy đủ cho đặc tả ES2019 và hỗ trợ đầy đủ cho Phụ lục B, xác định các thành phần để tương thích với các ứng dụng web cũ;
  • Hoàn thành vượt qua tất cả các bài kiểm tra từ Bộ kiểm tra ECMAScript;
  • Hỗ trợ biên dịch mã Javascript thành các tệp thực thi mà không cần phụ thuộc bên ngoài;
  • Trình thu thập rác dựa trên việc đếm tham chiếu mà không cần dọn dẹp theo chu kỳ, cho phép chúng tôi đạt được hành vi có thể dự đoán được và giảm mức tiêu thụ bộ nhớ;
  • Một bộ tiện ích mở rộng để tính toán toán học bằng JavaScript;
  • Shell để thực thi mã ở chế độ dòng lệnh, hỗ trợ làm nổi bật mã theo ngữ cảnh;
  • Thư viện tiêu chuẩn nhỏ gọn với các trình bao bọc trên thư viện C.

Dự án cũng đang phát triển ba thư viện C đi kèm có liên quan đến QuickJS và phù hợp cho mục đích sử dụng cá nhân:

  • libregexp - triển khai nhanh các biểu thức chính quy, hoàn toàn tương thích với đặc tả Javascript ES 2019;
  • libunicode - một thư viện nhỏ gọn để làm việc với Unicode;
  • libbf - Thực hiện các phép toán dấu phẩy động chính xác tùy ý và các hàm siêu việt với làm tròn chính xác.

Nguồn: opennet.ru

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