Nordstjernen, Northstar, Southstar: ba trình duyệt tối giản viết bằng C và Rust

Công nghệ05 tháng 11, 2026·6 phút đọc

Dự án Nordstjernen ra mắt phiên bản 1.0.40 cùng Northstar 1.0.20 và Southstar 1.0.6, một gia đình ba trình duyệt "clean-room": bản chủ lực nhiều tab viết bằng C, bản tối giản một trang mỗi cửa sổ theo giấy phép GPL, và bản chuyển hoàn toàn sang Rust. Đáng chú ý là cả ba đều không dùng JIT và không có telemetry, nhắm vào việc dễ đọc, dễ kiểm toán hơn các trình duyệt phổ thông.

Nordstjernen, Northstar, Southstar: ba trình duyệt tối giản viết bằng C và Rust

Ba trình duyệt tối giản viết bằng C và Rust

Một dự án trình duyệt mã nguồn mở có tên Nordstjernen vừa công bố loạt bản phát hành mới cho cả ba sản phẩm trong cùng một dòng mã nguồn: Nordstjernen Sol Explorer 1.0.40, Northstar 1.0.20 và Southstar 1.0.6. Điểm đáng chú ý không nằm ở tính năng mới, mà ở triết lý thiết kế: các trình duyệt này được viết lại từ đầu (clean-room — tức là không sao chép mã nguồn có sẵn), không dùng trình biên dịch JIT và không gửi telemetry.

Ba sản phẩm dùng chung một dòng engine nhưng nhắm tới ba đối tượng khác nhau: bản chủ lực nhiều tab, bản tối giản theo giấy phép GPL, và bản viết lại hoàn toàn bằng Rust.

Giao diện trình duyệt Northstar 1.0.20 phát video YouTubeGiao diện trình duyệt Northstar 1.0.20 phát video YouTube

Ba phiên bản, ba định hướng

Nordstjernen là trình duyệt chủ lực, hỗ trợ nhiều cửa sổ và nhiều tab, chạy trên Windows, macOS, Linux, Android, FreeBSD, NetBSD và cả trên JVM. Nhân engine có khoảng 245.000 dòng C (không tính thư viện bên ngoài và tài nguyên sinh tự động) — đủ nhỏ để một người đọc và kiểm toán trọn vẹn.

Northstar là phiên bản tối giản: mỗi cửa sổ chỉ một trang, không có tab, chạy trong một tiến trình duy nhất với khoảng 188.000 dòng C gốc, phát hành theo giấy phép GNU GPL v3 trở lên. Bản này bỏ tab, bỏ tiến trình renderer riêng cho từng tab, bỏ WebGL và WebGPU; engine trang chạy trên một luồng riêng bên trong tiến trình duyệt.

Southstar là bản chuyển Nordstjernen sang Rust. Thay vì bắt đầu từ kho lưu trữ trống, nhóm phát triển lấy nguyên mã nguồn C đang chạy được (kèm toàn bộ lịch sử) rồi chuyển từng mô-đun một sang Rust trong khi trình duyệt vẫn hoạt động. Tháng 10/2026, phần C cuối cùng của dự án đã được thay thế, kể cả engine QuickJS-ng: toàn bộ mã riêng của Southstar giờ là Rust, khoảng 330.000 dòng trong khoảng 145 crate, C chỉ còn trong các thư viện hệ thống được liên kết.

Bản mới có gì

Bản Nordstjernen Sol Explorer 1.0.40 mang tên gọi mới cho trình duyệt, bổ sung Shared Web Workers, ElementInternals cho các custom element gắn với form, popup thật có liên kết tới cửa sổ mở nó, giải mã video phần cứng VP9, AV1 và HEVC qua GStreamer, ưu tiên H.264 ở nơi hệ điều hành tự giải mã, cùng một bộ sửa lỗi bảo mật về frame, CORS và cookie. Bản này cũng có tùy chọn dùng bộ phân tích IPC viết bằng Rust an toàn bộ nhớ.

Bản Northstar 1.0.20 mặc định để hệ điều hành giải mã video — Media Foundation trên Windows, GStreamer trên Linux — nạp font qua FontFace API, kế thừa các bản sửa lỗi YouTube và Media Source từ Nordstjernen Sol, và vá các lỗ hổng liên quan tới CORS khi import module, header bảo mật được cache, cookie HttpOnly và sandbox frame.

Bản Southstar 1.0.6 phát được MP4 và H.264 trên Windows qua Media Foundation, sửa lỗi về realm sự kiện của iframe và cookie HttpOnly.

Không JIT, không telemetry

Điểm khác biệt lớn nhất so với Chrome, Firefox hay Safari là cả ba trình duyệt đều không có JIT — không trình biên dịch tức thời cho JavaScript lẫn WebAssembly. Nhóm phát triển lập luận rằng thiếu JIT giúp trình duyệt an toàn hơn nhiều mà vẫn có thể đủ nhanh.

JavaScript chạy trên QuickJS (bản quickjs-ng rẽ nhánh trong cây mã nguồn, có Temporal, Intl đầy đủ và decorators), hoặc QuickJS gốc của Fabrice Bellard. WebAssembly chạy trên trình thông dịch nhanh của WAMR. Riêng Southstar dùng Boa, trình thông dịch JavaScript viết bằng Rust, vượt toàn bộ 52.133 bài kiểm thử test262 ngoài thư mục staging.

Về quyền riêng tư: không telemetry, không ping cập nhật. Từ bản 1.0.21, client hints tự khai báo Nordstjernen thay vì giả danh Chrome; cookie được phân vùng; kiểm tra duyệt web an toàn diễn ra hoàn toàn trên máy. Từ bản 1.0.28, trình duyệt dùng giấy phép kép: GNU GPL v3 trở lên hoặc Nordstjernen Source License 1.0, tùy chọn.

Đối chiếu chuẩn và sandbox

Nhóm phát triển đo hành vi theo từng mục của đặc tả HTML của WHATWG, không so với trình duyệt khác. Kết quả với Nordstjernen: 141 mục đặc tả hoàn thiện đầy đủ, 31 mục một phần, 0 mục vắng mặt trong các phần 1–16 của WHATWG HTML.

Trên bộ Web Platform Tests (tháng 10/2026), trình duyệt vượt 91,5% các bài kiểm thử con thuộc html/, dom/, url/ và liên quan (151.974 trên 166.164), cùng 73,2% các bài thuộc css/ (110.540 trên 151.048). QuickJS vượt 82.243 trên 82.248 bài test262 mà nó chạy.

Về kiến trúc bảo mật, Nordstjernen dùng mỗi tab một tiến trình riêng, chạy trong sandbox và giao tiếp với giao diện qua IPC cùng bộ nhớ chia sẻ. Renderer bị giới hạn bằng seccomp + Landlock trên Linux, hồ sơ Seatbelt trên macOS và chính sách giảm thiểu tiến trình trên Windows.

Trình duyệt cho agent và in ấn

Từ bản 1.0.33, tùy chọn nordstjernen --mcp biến trình duyệt thành một MCP server tích hợp, cho phép một agent cục bộ đọc và điều khiển cửa sổ trình duyệt — tab, phác thảo trang, nhấp, gõ phím, chụp màn hình và chạy JavaScript. Tính năng này mặc định tắt cho tới khi được bật trong phần cài đặt, chỉ lắng nghe trên loopback, cần token và hiện huy hiệu trên thanh công cụ khi có kết nối. Bản thân trình duyệt vẫn không có trợ lý AI.

Từ bản 1.0.23, Ctrl+P dàn trang theo khổ giấy rồi chuyển cho hộp thoại in của hệ điều hành — CUPS trên Linux, hộp thoại Win32 trên Windows, bảng Cocoa trên macOS — nên không phải viết mã in riêng cho từng nền tảng. Tùy chọn --dump=print:FILE xuất cùng bố cục phân trang ra file PDF nhiều trang mà không cần máy in.

Góc nhìn

Với lập trình viên và doanh nghiệp Việt Nam, dòng Nordstjernen đáng chú ý ở hai điểm thực dụng. Thứ nhất, đây là ví dụ hiếm hoi về một engine trình duyệt đủ nhỏ để một nhóm ít người đọc hiểu và kiểm toán — hữu ích cho những ai muốn học cách một trình duyệt thực sự vận hành, từ phân tích HTML, cascade CSS đến sandbox tiến trình, thay vì chỉ đọc qua tài liệu trừu tượng.

Thứ hai, việc không có JIT và không telemetry là sự đánh đổi có chủ đích. Doanh nghiệp cần chạy các tác vụ web tự động trong môi trường kiểm soát, hoặc muốn một trình duyệt không gửi dữ liệu ra ngoài, có thêm một lựa chọn mã nguồn mở để tham khảo. Tuy nhiên, đây là các trình duyệt non trẻ, độ phủ web vẫn thấp hơn nhiều so với Chrome hay Firefox, nên phù hợp để thử nghiệm và nghiên cứu hơn là thay thế ngay trình duyệt hằng ngày.

Nguồn: nordstjernen.org · Quy trình biên tập

Chia sẻ:FacebookX