Enabling the next-generation trait solver on nightly
Bài tóm tắt Rust 2026 4. Điều chỉnh Độ khó: Nâng cao
Rust · 2026 · 4. Điều chỉnh · Độ khó: Nâng cao — bài gốc
Thông báo của dự án Rust; wiki giữ phần cách thay một thành phần lõi của compiler.
Bối cảnh
- Sau gần 4 năm, trait solver thế hệ mới sắp ổn định. Theo đội Rust, đây là thay đổi đơn lẻ lớn nhất của compiler kể từ bản đầu: thay toàn bộ cách chứng minh where-clause, chuẩn hoá associated type... Lợi ích chính nằm ở tương lai: bỏ bản cũ mới mở khoá được tính năng (TAIT, RTN, trait ngầm mới) và sửa các lỗ hổng còn lại của hệ kiểu. Hiện đã biết hơn 200 issue được sửa nhờ nó.
Thay đổi chính
- Bật mặc định trên nightly để lộ vấn đề còn lại, rồi mới ổn định sau vài tháng. Có cờ tắt (
-Znext-solver=coherence) quaRUSTFLAGShoặc.cargo/config.toml. Phá vỡ đã biết (đa số là bỏ suy luận kiểu sai) được theo dõi trong một issue ghim; ví dụ ảnh hưởng tới bevy, minijinja. - Hiệu năng compile: bản mới từng chậm hơn bậc hai, thậm chí luỹ thừa, ở nhiều trường hợp. Đội so hai bản trên 20.000 crate được tải nhiều nhất và tập trung vào các ngoại lệ tệ nhất; gần như mọi crate có hiệu năng tương đương, vài crate từng chậm gấp đôi nay chỉ chậm hơn chút, vài crate nhanh hơn. Crate nặng trait hưởng lợi lớn (datafusion compile nhanh hơn 8 lần).
Vì sao
- Một thành phần lõi viết lại không thể kiểm hết bằng test; kênh nightly bật mặc định cho người dùng thật chạy trên code thật trước khi ổn định.
Bài học cho SWE
- Thay lõi lớn: chạy song song bản cũ làm mốc, đo trên một tập lớn đầu vào thật (ở đây 20.000 crate), tập trung vào các ngoại lệ thay vì trung bình.
- Bật mặc định ở kênh thử nghiệm kèm cờ tắt và một nơi tập trung theo dõi phá vỡ, rồi mới ổn định.
Liên quan
#rustc#next-generation trait solver#rewrite#nightly default#opt-out flag#breakage tracking#top 20k crates#compile-time performance#outliers
Được nhắc tới trong
Công ty (1)