Ladybird tháng 10/2026: JIT JavaScript và engine Wasm mới
Trình duyệt Ladybird tách style và layout khỏi main thread, ra mắt JIT cho JavaScript, thay engine WebAssembly mới và vượt Safari Technology Preview trên Web Platform Tests. Đây là bước tiến lớn hướng tới bản alpha đầu tiên dự kiến ra mắt cuối năm nay.

Trình duyệt mã nguồn mở Ladybird vừa công bố bản cập nhật tháng 10/2026 với loạt thay đổi nền tảng: đưa style và layout sang thread riêng, xây dựng JIT (just-in-time compiler – trình biên dịch tức thời) cho JavaScript, thay thế engine WebAssembly và thiết kế lại giao diện người dùng. Đáng chú ý nhất, dự án đã vượt Safari Technology Preview trên bộ kiểm thử Web Platform Tests (WPT) vào ngày 26/10.
Ladybird tháng 10/2026
Style và layout không còn phải chờ JavaScript
Các trình duyệt thông thường chạy JavaScript, style và layout trên cùng một main thread, lần lượt từng việc một. Trong khi một script đang chạy, trang không thể cập nhật. Ladybird đã chuyển style và layout sang thread riêng, còn việc ghi nhận lệnh vẽ (paint recording) sang một thread khác, cho phép chúng chạy song song với JavaScript. Nếu script cần thông tin layout như kích thước phần tử, nó sẽ chờ đến khi công việc layout đang chờ hoàn tất, nên không bao giờ nhận dữ liệu cũ.
Nhờ vậy, hai thứ giờ đây vẫn hoạt động trong lúc một script chạy dài:
- Animation CSS tiếp tục chạy khi JavaScript bận, kể cả các animation làm thay đổi layout như
widthvàfont-size. - Trạng thái
:hovervẫn hoạt động khi JavaScript bận. Render thread tìm phần tử dưới con trỏ chuột, áp dụng style hover, khởi động transition, cập nhật con trỏ và vẽ frame mới. Khi script kết thúc, main thread bắt kịp và kích hoạt các sự kiện hover.
Theo Ladybird, hiện chưa có trình duyệt nào khác làm được điều này. Bạn có thể tự kiểm chứng với nút bấm chặn main thread trong ba giây: hầu hết trình duyệt vẫn giữ hình vuông quay nhưng làm đứng thanh và vùng hover.
JIT cho JavaScript
Trên Linux và macOS, LibJS giờ đây biên dịch các đoạn JavaScript "nóng" (chạy nhiều lần) thành mã máy, trên cả kiến trúc x86-64 lẫn AArch64.
Trước đây nhóm phát triển từng quyết định không làm JIT mà tập trung tinh chỉnh interpreter. Tuy nhiên, vì interpreter đã khá cạnh tranh, việc tăng tốc gấp đôi đòi hỏi rất nhiều công sức mà chỉ biến một lần treo 300ms thành 150ms — vẫn đủ để người dùng nhận ra. Vì thế họ cần một JIT tối ưu hóa.
Thiết kế được mô tả là "cố ý nhàm chán": tối ưu hóa suy đoán dựa trên profiling kiểu dữ liệu lúc chạy, giống các engine JavaScript khác. Trong lúc code "khởi động", engine ghi lại các kiểu và hình dạng đối tượng gặp phải, rồi dùng dữ liệu đó để đưa ra phỏng đoán như "giá trị này luôn là số nguyên" và inline các hàm nhỏ. Để phát hiện lỗi trong quá trình phát triển, nhóm dùng một fuzzer chạy cùng đoạn code trên cả JIT và interpreter rồi so sánh kết quả.
JIT trong LibJS
Engine WebAssembly mới
Ladybird đã thay engine WebAssembly viết bằng C++ kết hợp Cranelift bằng một engine mới có interpreter và JIT riêng. Engine này hỗ trợ những phần mới hơn của WebAssembly mà bản cũ chưa có, như xử lý ngoại lệ (exception handling) và thu gom rác (GC). Trên các bài đo Wasm của JetStream 3 mà cả hai engine đều chạy được, engine mới đạt điểm cao hơn khoảng 7 lần.
Interpreter Wasm được viết bằng flap — một ngôn ngữ và trình biên dịch nhỏ do chính dự án tạo ra vào tháng 7 để viết interpreter của LibJS. Một nguồn mã duy nhất có thể build cho x86-64, AArch64 và Windows x64. Các hàm nóng chuyển từ interpreter sang JIT, kể cả khi đang chạy giữa vòng lặp.
Về hiệu năng thực tế, JSLinux — một trình giả lập PC x86 — giờ khởi động Alpine Linux tới shell trong 1,8 giây, so với 1,5 giây của Chrome.
Engine WebAssembly mới
Vượt Safari Technology Preview trên WPT
Ngày 26/10, Ladybird vượt Safari Technology Preview trên Web Platform Tests và kết thúc tháng ở mức 2.184.722 subtest, tăng 75.650. Phần lớn mức tăng đến trong năm ngày, từ khoảng 2,12 triệu hồi ngày 22/10 lên khoảng 2,18 triệu vào ngày 27/10. Dự án đã hướng các AI coding agent vào WPT và yêu cầu chúng bổ sung các chức năng còn thiếu; nhiều bản sửa nhỏ cộng lại thành kết quả lớn. Hai mảng tăng mạnh nhất là /css (khoảng 30.000) và /editing (khoảng 10.000).
Giao diện trình duyệt mới
Đây là lần đầu tiên Ladybird ngồi lại vạch ra một thiết kế giao diện hoàn chỉnh thay vì phát triển tùy hứng. Phong cách được giữ khiêm tốn, nhẹ nhàng để sự chú ý dồn về trang web. Thiết kế bao phủ tab, thanh công cụ, menu và các trang about: riêng trên macOS và Linux, với ba chế độ sáng, tối và tím tối dành cho cửa sổ riêng tư.
Các cải tiến đáng chú ý:
- Tab: ghim tab, tìm kiếm trong toàn bộ tab đang mở và khôi phục cửa sổ khi khởi động.
- Điều khiển biểu mẫu: giao diện mới, ô nhập ngày và giờ có bộ chọn.
- Cuộn trang: cuộn mượt bằng con lăn chuột, overscroll đàn hồi trên macOS, quán tính touchpad trên các nền tảng khác, thanh cuộn ẩn cho đến khi dùng.
Những trang web hoạt động tốt hơn
Nhiều trang phổ biến giờ đã dùng được: Google Slides mở được bài thuyết trình thay vì báo lỗi, GitHub hiển thị sơ đồ Mermaid, ChatGPT có ô nhập văn bản tự giãn khi gõ, nytimes.com và reuters.com vượt được bước kiểm tra bot, Instagram hiển thị frame đầu của video thay vì để trắng, và Gmail không còn giữ trang cũ trong bộ nhớ sau khi tải lại. Ngay cả x86CSS — một trình giả lập x86 viết bằng CSS — cũng đã dùng được.
Tính năng mới cho người dùng
Ladybird bổ sung hỗ trợ bước đầu cho trình đọc màn hình VoiceOver trên macOS và Orca trên Linux, cùng nhiều tính năng khác:
- Kiểm tra chính tả trong ô nhập văn bản trên macOS.
- Picture-in-Picture (hình trong hình).
- Liên kết tới đoạn văn bản: link có thể cuộn tới và tô sáng một đoạn, tạo được từ menu ngữ cảnh.
- Quyền truy cập vị trí và micro.
- DevTools: Inspect Element, tự động hoàn thành trong console và mở rộng được đối tượng.
- Tìm trong trang tô sáng mọi kết quả, tắt chặn quảng cáo theo từng site từ thanh công cụ, và Reload Without Cache.
Nhiều phần hơn của nền tảng web
Trong tháng, Ladybird bổ sung nhiều tính năng CSS và API: multi-column, display: grid-lanes cho masonry, MathML, corner-shape, CSS Motion Path, nhiều phần của anchor positioning và text-wrap: balance. Ngoài ra còn có calc-size() cho phép animation chiều cao tới và từ auto, vertical writing modes, zoom, sizing keyword stretch, shape() và border-shape, field-sizing, view progress timelines, animation-range và bước đầu của SVG animation.
Về API web: HTML Sanitizer API, Touch Events, Cross-Origin-Opener-Policy, Paint Timing, Event Timing, Largest Contentful Paint, WebVTT cues, canvas dải màu rộng, WebDriver BiDi, cùng using và await using của JavaScript và nhiều bản sửa cho execCommand và contenteditable.
Bảo mật và cô lập tiến trình
Trang web chạy trong các renderer process được sandbox, nên một trang độc hại chiếm được renderer sẽ bị kẹt trong đó. Ladybird tiếp tục vá các lỗ hổng bảo mật, kể cả những cách vượt sandbox. Ví dụ, trước đây một renderer bị xâm nhập có thể yêu cầu browser process mở bất kỳ file nào trên máy; giờ chỉ renderer đang hiển thị file cục bộ mới đọc được chúng. Renderer cũng từng có thể giả lập cú nhấp chuột của người dùng để mở popup hoặc đọc clipboard — browser process không còn tin điều đó nữa.
Trình duyệt cũng được chia thành nhiều process hơn để một process bị xâm nhập khó lan rộng: iframe khác site và popup khác site có renderer riêng, mỗi site cấp cao nhất có network process riêng với HTTP cache và cookie bên thứ ba tách biệt, mỗi renderer có audio process và image decoder riêng.
Đa phương tiện và Windows
Trên Windows, video đã phát được và YouTube đã hoạt động. Giải mã video bằng phần cứng chuyển sang process riêng và hoạt động trên Linux qua Vulkan. Ladybird cũng tự đọc file MP4 thay vì dùng FFmpeg, khắc phục vấn đề tua và buffer.
Về ngôn ngữ, runtime của LibJS đã chuyển từ C++ sang Rust ngay trước khi JIT ra mắt, nên engine JavaScript giờ thuần Rust, trừ interpreter viết bằng flap và bộ thu gom rác. Engine Wasm mới cũng viết bằng Rust, và WebGL, canvas 2D, IndexedDB, Streams, URL cùng phần tính style cũng đã chuyển sang Rust.
Chuẩn bị cho bản alpha
Bản alpha đầu tiên dự kiến ra mắt vào cuối năm nay. Trong tháng, dự án đã thêm release build (gói macOS, tarball Linux, gói .deb và .rpm, bundle Flatpak), báo cáo crash cho phép người dùng xem và chọn gửi, trang chào mừng để chọn bố cục tab, công cụ tìm kiếm và chặn quảng cáo, cùng tính năng báo trang bị lỗi ngay trong trình duyệt.
Góc nhìn
Với các kỹ sư và lập trình viên Việt Nam, Ladybird tháng này đáng chú ý ở hai điểm thực dụng. Thứ nhất, việc đưa style và layout ra khỏi main thread xử lý đúng một nỗi đau quen thuộc: JavaScript dài làm đơ tương tác, kể cả hover và animation CSS. Nếu cách làm này được các trình duyệt khác áp dụng, những trang nặng JavaScript — vốn phổ biến ở các ứng dụng web nội bộ và dashboard — sẽ có trải nghiệm mượt hơn mà không phải viết lại nhiều.
Thứ hai, cách dự án dùng AI coding agent để bù đắp hàng chục nghìn subtest WPT là một ví dụ đáng tham khảo về việc chia nhỏ công việc kiểm thử thành nhiều bản sửa nhỏ. Tuy vậy, cần lưu ý đây vẫn là trình duyệt đang tiền alpha, chưa phù hợp để thay thế các trình duyệt chính trong công việc hằng ngày; giá trị thực tế lúc này nằm ở việc theo dõi hướng phát triển và các tiêu chuẩn web mà nó đang đẩy nhanh.
Nguồn: ladybird.org · Quy trình biên tập
Bài viết liên quan
Công nghệ
Trình duyệt Ladybird tháng 8/2026: Tăng tốc đáng kể và cải thiện đáng chú ý
05 tháng 9, 2026
Công nghệ
Cập nhật Ladybird tháng 4/2026: Trình xem PDF, giao diện GTK4 và tối ưu hóa hiệu năng JavaScript
03 tháng 5, 2026

Công nghệ
Tạm biệt JavaScript, chào đón HTML: Khi tối giản hóa mang lại hiệu quả tốt hơn
11 tháng 5, 2026