کامپایلر Rust تو دو ماه ۴.۵ درصد سریعتر شد
خلاصهٔ کاملتر
Nicholas Nethercote تو گزارش جدیدش دربارهٔ سرعت کامپایلر Rust میگه بین 2026-07-29 تا 2026-09-28 میانگین wall-time کامپایل ۴.۵۷ درصد کم شده. از ۶۲۹ اندازهگیری بنچمارک، ۵۵۵ تا بهتر و فقط ۷۴ تا بدتر شدن و چند تاش حتی بیشتر از ۱۰ درصد بهبود داشتن. به قول نویسنده، «یه دریای سبز».
چند تا تغییر بزرگ: Jakub Beránek برای Clippy (ابزار lint رسمی Rust) قابلیت PGO رو فعال کرد؛ یعنی کامپایلر با اطلاعات اجرای واقعی برنامه بهینهش میکنه. نتیجهش تا ۱۸ درصد سریعتر شدن بود. Nikita Popov هم LLVM رو به نسخهٔ ۲۳ رسوند که به تنهایی میانگین ۱.۲ درصد بهبود آورد. یه کاربر تازهوارد به اسم xmakro هم چند تا PR داد؛ یکیش با بهینهسازی ساخت specialization graph میانگین cycle count رو ۱.۵۸ درصد کم کرد.
borrow checker جدید (یعنی بخشی که قوانین مالکیت و قرض گرفتن رفرنسها رو چک میکنه) با اسم Polonius Alpha و trait solver جدید روی Nightly فعال شدن. هر دو دقیقترن ولی تو بعضی موارد کندترن، از جمله برای crate معروف serde. Jack Huey با lazy کردن بعضی محاسبات، instruction count رو برای serde بین ۳ تا ۵ درصد کم کرد. نویسنده هم چند PR روی trait solver داده که برای بعضی crateهای خاص تا ۵۰ درصد زمان رو کم کرده.
یکی از جالبترین تغییرات کار خود نویسندهست: الگوریتم پیمایش CFG تو dataflow analysisها رو عوض کرد. crate cranelift-codegen یه تابع با بیش از ۱۸ هزار basic block داره. قبلاً تحلیل EverInitializedPlaces تو borrow checker برای رسیدن به نقطهٔ ثابت ۱.۵ میلیون بار apply_effects_in_block رو صدا میزد، حالا ۹۰ هزار بار. نتیجه: حدود ۳۰ درصد کاهش زمان برای check این crate.
چند نکتهٔ دیگه: Chris Denton اندازهٔ پیشفرض stack کامپایلر رو بزرگتر کرد و مکانیزم دستی ensure_sufficient_stack حذف شد، که تا ۳ درصد بهبود داد. تعداد PRهای بهبود سرعت تو صف merge اونقدر زیاد شد که برای اولین بار یه rollup با ۱۰ PR بهینهسازی ساختن. نویسنده میگه از LLMها برای تحلیل کمک گرفته ولی کد و متن رو خودش مینویسه، چون سیاست پروژه همینو میخواد. خود نویسنده هم از این به بعد تو شرکت Hexcat روی هدف بهینهسازی کامپایلر کار میکنه.
نکات کلیدی:
- میانگین wall-time کامپایل Rust تو دو ماه ۴.۵۷ درصد کم شد؛ ۵۵۵ از ۶۲۹ بنچمارک بهتر شدن
- آپدیت به LLVM 23 به تنهایی ۱.۲ درصد میانگین بهبود داد
- فعال شدن PGO برای Clippy تا ۱۸ درصد سرعت اضافه کرد
- الگوریتم جدید پیمایش CFG فراخوانیها رو از ۱.۵ میلیون به ۹۰ هزار رسوند و check روی cranelift-codegen حدود ۳۰ درصد سریعتر شد
- Polonius Alpha و trait solver جدید روی Nightly فعالن و تو بعضی موارد مثل serde هنوز کمی کندترن




