Dự án Chromium sẽ hỗ trợ sử dụng thư viện Rust

Chromium

, dự án Chromium sẽ hỗ trợ sử dụng thư viện C++ Rust của bên thứ ba trong Chromium

Google mới đây đã thông báo rằng nhóm phát triển dự án Chromium đang nỗ lực bổ sung bộ công cụ Rust cho môi trường sản xuất vào hệ thống xây dựng của mình.

Đối với những người vẫn chưa biết về Rust, họ nên nhớ kỹ vì ngôn ngữ lập trình này, được Mozilla phát triển đặc biệt để viết trình duyệt, đã bắt đầu thâm nhập và được chấp nhận trong nhiều dự án quan trọng, một trong số đó là Hạt nhân rỉ sét.Linux.

Điều này sẽ cho phép chúng tôi đưa mã Rust vào mã nhị phân của Chrome trong năm tới. Mục tiêu là bắt đầu từ quy mô nhỏ và đặt ra những kỳ vọng rõ ràng về thư viện nào sẽ được xem xét khi chúng sẵn sàng.

Do đó, việc Chromium cuối cùng cũng bắt đầu phát triển công nghệ này là điều hợp lý. Đối với Google, việc tích hợp Rust vào Chromium sẽ đáp ứng mục tiêu cung cấp một cách dễ dàng và an toàn hơn để đạt được "quy tắc hai", bao gồm việc đẩy nhanh quá trình phát triển và cải thiện bảo mật của Chrome. Hơn nữa, nó còn cải thiện bảo mật bằng cách loại bỏ lỗi bộ nhớ và giảm mật độ lỗi trong mã nguồn.

Chúng tôi biết rằng C++ và Rust có thể phối hợp rất tốt với nhau nhờ các công cụ như cxx, autocxx bindgen, cbindgen, Diplomat và (thử nghiệm) crubit. Tuy nhiên, cũng có những hạn chế. Chúng ta có thể mong đợi hình dạng của những hạn chế này sẽ thay đổi theo thời gian với các công cụ mới hoặc cải tiến, nhưng các quyết định và mô tả ở đây dựa trên trạng thái công nghệ hiện tại.

Quyết định này được đưa ra như một phần của sáng kiến ​​nhằm ngăn chặn các lỗi bộ nhớ xuất hiện trong mã nguồn của Chrome. Theo số liệu thống kê được cung cấp hai năm trước, 70% các vấn đề bảo mật nghiêm trọng và nguy hiểm trong Chromium là do lỗi bộ nhớ.

Việc sử dụng ngôn ngữ Rust, tập trung vào quản lý bộ nhớ an toàn và cung cấp khả năng quản lý bộ nhớ tự động, sẽ giảm thiểu rủi ro về các lỗ hổng bảo mật do các vấn đề như truy cập vào vùng nhớ sau khi nó đã được giải phóng và tràn bộ đệm.

Mục tiêu của việc đưa Rust lên Chromium là cung cấp một cách dễ dàng hơn (không có IPC) và an toàn hơn (nói chung là C++ ít phức tạp hơn, không có lỗi an toàn bộ nhớ trong hộp cát) để đáp ứng quy tắc hai, nhằm tăng tốc độ phát triển (viết ít mã hơn , ít tài liệu thiết kế hơn, ít bản vá bảo mật hơn) và để cải thiện tính bảo mật (nhiều dòng mã hơn không có lỗi bảo mật trong bộ nhớ, mật độ lỗi mã thấp hơn) của Chrome. Ngoài ra, công ty tự tin rằng chúng tôi có thể sử dụng các thư viện Rust của bên thứ ba để đạt được mục tiêu này.

Đầu năm 2022, nhóm Chromium đã thử nghiệm với Rust và sau vài tháng, họ kết luận rằng ngôn ngữ này ban đầu không phù hợp để thay thế C++ cho các tác vụ phức tạp với mã bất đồng bộ cần hoạt động cùng với mã hiện có.

Do đó, việc sử dụng Rust trong Chromium theo kế hoạch ban đầu rõ ràng bị hạn chế . Một mặt, khả năng tương tác sẽ chỉ diễn ra theo một chiều: từ C++ sang Rust. Mặt khác, ban đầu chỉ cho phép sử dụng các thư viện của bên thứ ba. Các thư viện này hoạt động như các thành phần độc lập và không phụ thuộc vào các thành phần nội bộ của Chromium. Các thư viện phải có API đơn giản cho nhiệm vụ cụ thể của chúng. Sau đó, nhóm Chromium sẽ xem xét các thư viện này.

Cuối cùng, điều đáng nói là việc bổ sung hỗ trợ trong Chromium sẽ cho phép mã Rust được chuyển sang các tệp nhị phân Chrome bắt đầu từ năm sau. Quyết định này chủ yếu xuất phát từ các mối lo ngại về bảo mật: Rust cung cấp tính bảo mật cao hơn khi ghi vào bộ nhớ so với C++ và ngăn chặn các hành vi có khả năng gây hại như đọc các biến chưa được ghi, truy cập các giá trị vượt quá giới hạn do mảng đặt ra, tham chiếu con trỏ null hoặc không hợp lệ và sử dụng các trình lặp không hợp lệ.

Nếu bạn muốn tìm hiểu thêm, bạn có thể xem chi tiết tại liên kết sau.


Thêm vào danh sách nguồn ưu tiên trên Google.