Engine JavaScript mới này chỉ cần 10 kB RAM để chạy trên thiết bị nhúng

Dù JavaScript ban đầu được tạo ra để chạy các đoạn script trong trang web, ngày nay nó đã được dùng để viết ứng dụng desktop, phần mềm máy chủ và gần như mọi thứ ở giữa. Giờ đây, JavaScript thậm chí còn có thể trở thành lựa chọn cho các hệ thống nhúng và vi điều khiển cực kỳ hạn chế bộ nhớ, nhờ vào dự án MicroQuickJS.

MicroQuickJS là một dự án mới của Fabrice Bellard, cái tên đứng sau hàng loạt dự án mã nguồn mở nổi tiếng như QEMU, FFmpeg, bộ nén dữ liệu không mất mát NNCP hay trình giả lập JSLinux. Dự án lần này được xây dựng dựa trên QuickJS, một engine JavaScript tối giản viết bằng ngôn ngữ C do chính ông phát triển.

Mục tiêu của MicroQuickJS là biên dịch và chạy mã JavaScript với mức tiêu thụ bộ nhớ cực thấp, chỉ khoảng 10 kB RAM, trong khi toàn bộ engine chỉ cần khoảng 100 kB bộ nhớ ROM, đã bao gồm cả thư viện C đi kèm. Engine này hỗ trợ một tập con của JavaScript, gần với chuẩn ES5 (ECMAScript 2009). Điều đó cũng đồng nghĩa các tính năng mới hơn từ ES6 trở đi như let , const , arrow function hay Map gần như sẽ không hoạt động.

So với các engine JavaScript thông thường, MicroQuickJS còn “khó tính” hơn. Nó chủ động chặn một số thao tác dễ gây lỗi hoặc kém hiệu quả, chẳng hạn như mảng có các phần tử trống (arrays with holes).

Theo tài liệu dự án, dù MicroQuickJS chia sẻ khá nhiều mã nguồn với QuickJS, phần kiến trúc bên trong đã được thay đổi đáng kể để giảm mức tiêu thụ bộ nhớ. Cụ thể, engine này sử dụng tracing garbage collector, máy ảo không dùng stack của CPU, và chuỗi ký tự được lưu ở định dạng UTF-8.

Tất nhiên, MicroQuickJS sẽ không thể thay thế Node.js trong phần lớn dự án hiện nay. Engine này dường như không hỗ trợ mạng hay truy cập hệ thống tập tin của thiết bị. Tuy vậy, nó lại tỏ ra rất phù hợp với các thiết bị nhỏ gọn như Arduino hay Raspberry Pi Pico, nơi những engine JavaScript phổ biến gần như không có cửa hoạt động.

Tài liệu cũng mô tả khá chi tiết kiến trúc nội bộ của engine, bao gồm cả trình giả lập số thực dấu phẩy động trong trường hợp CPU không hỗ trợ trực tiếp, cùng với việc gần như không phụ thuộc vào thư viện C. Dù các kịch bản ứng dụng thực tế có thể còn hạn chế, đây vẫn là một dự án cực kỳ ấn tượng về mặt kỹ thuật.

Nếu tò mò, bạn có thể ghé qua kho mã nguồn trên GitHub để xem code, hướng dẫn biên dịch, benchmark và tìm hiểu sâu hơn về cách MicroQuickJS hoạt động. Hiện tại dự án chưa cung cấp file nhị phân sẵn, nên nếu muốn trải nghiệm, bạn sẽ cần tự biên dịch.

Thứ Ba, 13/01/2026 09:15
31 👨 22
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
    ❖ Chuyện công nghệ