zebkit: nhúng engine Chromium như một thư viện thay vì runtime
Dự án zebkit đóng gói engine Chromium (Blink, V8, PDFium, FFmpeg) thành một thư viện C liên kết trực tiếp vào ứng dụng, không kèm trình duyệt hay runtime Electron. Theo benchmark của tác giả, bản 0.2.0 nhỏ hơn 34%, khởi động nguội nhanh hơn và dùng ít bộ nhớ hơn so với Electron 45.2.1.

Một dự án mã nguồn mở mang tên zebkit đang thu hút sự chú ý trên Hacker News với cách tiếp cận khác biệt so với Electron: thay vì dựng ứng dụng bên trong một runtime trình duyệt, nó đóng gói engine Chromium thành một thư viện để ứng dụng của bạn trực tiếp liên kết và gọi.
Điểm cốt lõi: giữ nguyên Blink, V8 với đầy đủ các tầng JIT, PDFium, FFmpeg cùng phần còn lại của Chrome, nhưng bỏ toàn bộ phần trình duyệt và không kèm runtime Electron. Ứng dụng vẫn giữ main(), vòng lặp sự kiện và bộ công cụ giao diện của mình; khi cần hiển thị web, nó thêm một view của zebkit.
Kiến trúc của zebkit
Khác Electron ở đâu
Tác giả mô tả Electron như một "nền móng" — ứng dụng được xây bên trong nó, phụ thuộc runtime, hệ thống cửa sổ và cách đóng gói của nó. zebkit thì như một "mảnh ghép": ứng dụng thêm vào giống như thêm SQLite, và giữ nguyên tiến trình, bộ công cụ và cách phát hành của mình.
Về mặt kỹ thuật, zebkit chạy trong vòng lặp sự kiện của chính ứng dụng qua zebkit_init() và zebkit_pump(), vẽ vào cửa sổ của ứng dụng (cửa sổ X11, NSView hoặc HWND). Không có Node.js, không có runtime JavaScript thứ hai và không có IPC xuyên qua một tiến trình trung gian.
Dự án cung cấp API một lớp cho Linux, macOS và Windows, kèm binding cho Rust, Python (thuần ctypes, không cần biên dịch) và JavaScript qua zebkit-js chạy trên V8 của engine. Hơn 17 thư viện C bên trong engine — SQLite, BoringSSL, zlib, Zstandard, Brotli, ICU, HarfBuzz, libwebp, FFmpeg, PDFium... — được xuất ra dưới tiền tố zebkit_vendor_*, giúp ứng dụng không phải đóng gói chúng hai lần.
Benchmark so với Electron
Theo số liệu đo của nhóm phát triển trên Linux x86-64 (ngày 6 và 7 tháng 11 năm 2026), so sánh zebkit 0.2.0 với Electron 45.2.1:
- Kích thước: 171,2 MiB so với 260,5 MiB (không nén), nhỏ hơn 34%
- Khởi động nguội đến lần vẽ đầu tiên: 2,3 giây so với 6,6 giây
- Bộ nhớ với trang trống: 179 MB so với 250 MB
- PDF 756 trang: CPU 0,75 giây / 261 MB so với 1,6 giây / 399 MB
Tác giả cũng thẳng thắn nêu điểm Electron còn hơn: ít hơn một tiến trình mỗi trang, và mức bộ nhớ tốt hơn trên hai trong mười trang phổ biến được thử (YouTube và The Verge), nơi quảng cáo và video quyết định.
Huy hiệu phiên bản engine trên GitHub
Playwright chạy ngay trong engine
Một điểm đáng chú ý là toàn bộ API của Playwright (locator, hành động chờ đến khi thực hiện được, bàn phím, chuột, cảm ứng, route, dialog, trace, HAR, video) chạy bên trong engine, không cần CDP và không cần driver Node.js.
Theo benchmark của dự án, thao tác locator.click() mất 2,0 ms với API trong tiến trình, 3,5 ms khi dùng script Playwright kết nối vào zebkit, và 33,3 ms khi dùng Playwright với Chrome. Client Playwright gốc vẫn kết nối được không đổi thông qua chromium.connect().
Bên cạnh đó, tools/zebkit-mcp biến các khả năng của engine thành công cụ MCP (Model Context Protocol) cho agent AI, chạy qua stdin hoặc HTTP, với quyền truy cập file và origin bị từ chối cho đến khi người vận hành cấp phép.
An toàn theo mặc định
Một trang web không có đối tượng zebkit nào trừ khi ứng dụng cấp quyền — theo từng view, từng origin và từng khả năng; origin do trình duyệt xác định chứ không phải do trang tự khai. Renderer vẫn chạy trong sandbox, và các quyền mà trình duyệt thông thường sẽ hỏi người dùng thì mặc định không được cấp.
Giao diện native dựng từ JavaScript
Trạng thái hiện tại
Phiên bản hiện tại là 0.4.0, dựa trên Chromium 157.0.8103.38. Hỗ trợ Linux x86-64 (glibc 2.17 trở lên, X11 và Wayland), macOS trên Apple silicon và Windows 10 x64 trở lên. Việc build cần khoảng 30 GB cho cây nguồn Chromium và mất vài giờ trong lần đầu.
Các bản dựng engine được phát hành sẵn, kèm zebkit-run, zebkit-js và zebkit-mcp. Nhóm phát triển lưu ý tài liệu docs/API.md có liệt kê những điểm vẫn còn khác so với Chrome thật, trong đó có đăng nhập Google.
Góc nhìn
Với các đội đang dùng Electron hay Tauri, zebkit gợi ý một hướng thứ ba: giữ engine trình duyệt đầy đủ để có độ tương thích web cao, nhưng không trả giá bằng một runtime riêng và một tầng IPC. Việc Playwright chạy trong tiến trình mà không cần CDP đặc biệt hấp dẫn với các nhóm làm automation hoặc agent AI, nơi độ trễ mỗi lệnh cộng dồn rất nhanh qua hàng nghìn bước.
Tuy vậy, đây là dự án non trẻ, một tác giả, và phải tự biên dịch lại Chromium — chi phí bảo trì và cập nhật bản vá bảo mật không nhỏ. Các nhóm Việt Nam cân nhắc nên thử trên một công cụ nội bộ trước khi đặt cược vào sản phẩm thương mại, và đặc biệt kiểm tra kỹ tài liệu về sandbox cùng những điểm khác biệt so với Chrome trên nền tảng mình dùng.
Nguồn: github.com · Quy trình biên tập
Bài viết liên quan

Phần mềm
Zed 1.0 chính thức ra mắt: Trình soạn thảo mã nguồn bằng Rust tích hợp AI nhưng vẫn tôn trọng truyền thống
30 tháng 4, 2026

Phần mềm
Vercel Labs mã nguồn mở Zero-Native: Framework ứng dụng đa nền tảng viết bằng ngôn ngữ Zig
15 tháng 6, 2026

Công nghệ
Bez: Sinh trình duyệt web từ đặc tả và kiểm thử bằng AI
02 tháng 10, 2026