gccrs là một triển khai thay thế hoàn chỉnh của ngôn ngữ Rust trên GCC
Mới đây, dự án "gccrs" , nhằm mục đích cung cấp giao diện cho ngôn ngữ Rust với GCC (GNU Compiler Collection), đã được công bố và đang trên đà tích hợp vào GCC 13. Tại hội nghị các nhà phát triển FOSDEM hồi đầu tháng này, kỹ sư Arthur Cohen đã trình bày về gccrs, nêu rõ tình trạng hiện tại của dự án.
Đối với những ai chưa quen thuộc với dự án gccrs, đây là một triển khai thay thế hoàn chỉnh của ngôn ngữ Rust trên nền tảng GCC, với mục tiêu tích hợp hoàn toàn vào bộ công cụ GNU.
Nguồn gốc của dự án này là nỗ lực của cộng đồng vài năm trước, khi Rust vẫn còn ở phiên bản 0.9; ngôn ngữ do Mozilla tạo ra có quá nhiều thay đổi khiến nỗ lực của cộng đồng trở nên khó bắt kịp.
Bây giờ ngôn ngữ đã ổn định, đã đến lúc tạo các trình biên dịch thay thế:
“Bắt đầu vào năm 2014 (và khởi chạy lại vào năm 2019), nỗ lực này đã được tiếp tục kể từ năm 2020 và chúng tôi đã nỗ lực rất nhiều cũng như đạt được nhiều tiến bộ. Chúng tôi đã tải lên phiên bản đầu tiên của gccrs bên trong GCC. Vì vậy, lần tới khi bạn cài đặt GCC 13, nó sẽ có gccrs bên trong.
Bạn có thể sử dụng nó và bạn có thể bắt đầu hack nó, bạn có thể báo cáo các sự cố khi nó chắc chắn bị treo và chết một cách khủng khiếp. Arthur Cohen cho biết trong bài thuyết trình của mình tại hội nghị FOSDEM đầu tháng này rằng một điều quan trọng mà chúng tôi đang làm là làm cho bộ thử nghiệm Rustc hoạt động.
Việc có thể chạy thành công bộ kiểm thử trình biên dịch rustc vẫn là một mục tiêu cần đạt được. Theo Cohen, giao diện GCC của Rust cũng nhắm đến phiên bản libcore cũ hơn của Rust là 1.49.
Phần Hỏi đáp của dự án gccrs lưu ý rằng tất cả các công nghệ xây dựng LLVM mà Rust sử dụng đều "thiếu một số phần phụ trợ tương thích với GCC, vì vậy việc triển khai bằng gccrs có thể lấp đầy những khoảng trống này để sử dụng trong quá trình phát triển tích hợp ."
Tuy nhiên, xin lưu ý rằng trình biên dịch Rust-GCC (gccrs) vẫn còn ở giai đoạn rất sớm và chưa thể được sử dụng để biên dịch các chương trình Rust thực tế.
Nhóm GCC đã bỏ phiếu vào tháng 7 năm ngoái để phê duyệt việc tích hợp gccrs như một bộ công cụ biên dịch. Tầm quan trọng của dự án này nằm ở ý nghĩa của nó đối với nhân Linux. Trên thực tế, nhân Linux thường được biên dịch bằng GCC, nhưng kế hoạch cho phép sử dụng ngôn ngữ Rust song song với C cho mã nhân, vì lý do an toàn bộ nhớ, đang được tiến hành đều đặn.
Dự án "Rust cho Linux" đã chính thức hợp nhất vào cây Git chính của Linux 6.1 vào tháng 31 năm ngoái, biến Rust trở thành ngôn ngữ thứ hai dành riêng cho phát triển Linux, sau XNUMX năm phát triển độc quyền dựa trên C.
“Chúng tôi muốn gccrs trở thành một trình biên dịch Rust thực sự chứ không phải một dự án đồ chơi hay thứ gì đó biên dịch một ngôn ngữ trông giống Rust nhưng không phải Rust; chúng tôi đang thực sự cố gắng làm cho bộ thử nghiệm này hoạt động,” anh ấy nói thêm. Trong buổi thuyết trình, Cohen cũng nói rằng mặc dù giao diện Rust của GCC 13 có một khởi đầu tốt, nhưng vẫn còn rất nhiều việc phải làm. Hiện tại, mã xác minh mượn rõ ràng là không có, hỗ trợ cho các mô-đun nội tại và tích hợp sẵn vẫn đang tiếp tục và cột mốc quan trọng của việc biên dịch mã Rust cho Linux vẫn chưa đạt được.
Xin nhắc lại, dự án Rust for Linux nhằm mục đích giới thiệu một ngôn ngữ lập trình hệ thống mới vào nhân Linux. Theo các chuyên gia, Rust có một đặc tính quan trọng khiến nó rất đáng để xem xét như một ngôn ngữ thứ hai cho nhân Linux: nó đảm bảo rằng không có hành vi không xác định nào xảy ra (miễn là mã không an toàn đó hợp lệ).
Điều này bao gồm việc không có lỗi như sử dụng miễn phí sau, miễn phí gấp đôi, cuộc đua dữ liệu, v.v. Các cuộc tranh luận liên quan xoay quanh khả năng bỏ C để ủng hộ ngôn ngữ Rust. Nhưng Linus Torvalds, người tạo ra Linux, nói rằng đó không phải là mục tiêu đã nêu của dự án Rust cho Linux.
Cuối cùng, cần phải đề cập rằng mặc dù giao diện gccrs đã được hợp nhất cho bản phát hành GCC 13 sắp tới, nhưng nó vẫn chưa ở trạng thái mà hầu hết các nhà phát triển Rust có thể thực sự sử dụng nó như một lựa chọn thay thế cho trình biên dịch LLVM chính thức của Rust.
Không nên đợi đến năm sau, ít nhất là với GCC 14.
Nguồn: https://fosdem.org/