
Ինչպես արագացավ rustc-ը սեպտեմբերին. կոմպիլյացիայի միջին ժամանակը նվազել է 4,57%-ով
2026 թ. հուլիսի 29-ից մինչև սեպտեմբերի 28-ը rustc-ի կոմպիլյացիայի միջին ժամանակը նվազել է 4,57%-ով. 629 բենչմարկային չափումներից 555-ը բարելավվել է, միայն 74-ը՝ վատացել։ Ակնարկը հրապարակել է Nicholas Nethercote-ը։
Nicholas Nethercote-ը սեպտեմբերի 30-ին հրապարակել է Rust կոմպիլյատորի արտադրողականության հերթական ակնարկը։ Նախորդ զեկույցից անցել է երկու ամիս, և այս ընթացքում rustc-ը նկատելիորեն արագացել է։
Ընդհանուր արդյունք
2026 թ. հուլիսի 29-ից մինչև սեպտեմբերի 28-ը ժամանակահատվածի չափումներով կոմպիլյացիայի միջին ժամանակը նվազել է 4,57%-ով։ 629 բենչմարկային չափումներից 555-ը բարելավվել է, միայն 74-ը՝ վատացել, իսկ մի քանի բենչմարկ ցույց է տվել երկնիշ տոկոսային անկում։ Հեղինակն այս արդյունքն անվանում է «կանաչ ծով»։
rustdoc, Clippy և LLVM 23
rustdoc-ի մեծ արագացումը կատարել է Noah Lev-ը և առանձին գրառմամբ բացատրել, թե ինչպես է հասել դրան։ Clippy-ի համար PGO-ն միացրել է Jakub Beránek-ը (#159642). wall-time-ը բարելավվել է Clippy-ի բենչմարկների մեծ մասում, լավագույն դեպքում՝ 18%-ով։
Nikita Popov-ը կոմպիլյատորում օգտագործվող LLVM տարբերակը թարմացրել է LLVM 23-ի (#158734)։ LLVM-ի թարմացումը սովորաբար արագացում է տալիս. բոլոր բենչմարկներում միջին wall-time-ը նվազել է 1,2%-ով, ինչը մեկ փոփոխության համար էական է։
Նոր borrow checker և trait solver
Nightly ալիքում միացվել է նոր borrow checker՝ Polonius Alpha-ն։ Այն ավելի ճշգրիտ է և ընդունում է որոշ վավեր ծրագրեր, որոնք հին մոտեցումը մերժում էր, սակայն ավելի շատ աշխատանք է կատարում և առանձին դեպքերում նաև մեծացնում է կոմպիլյացիայի ժամանակը։ Սա ազդել է նաև հայտնի serde գրադարանի վրա։ Jack Huey-ը (#161938) liveness-ի հաշվարկները դարձրել է պահանջով կատարվող. serde-ի համար հրահանգների քանակը նվազել է 3-5%-ով։ #163027-ում նա փոխել է տվյալների կառուցվածքը և ինլայնինգը, ինչը մեծ մասի բենչմարկներում տալիս է 1%-ից պակաս նվազում։
Nightly-ում միացվել է նաև նոր trait solver, որը դեպքերի փոքր մասում դանդաղ է աշխատում։ Նրա արտադրողականության մասին մանրամասն գրառում է գրել Jana Dönszelmann-ը։ Nethercote-ի փոփոխությունները (#160479, #160605, #160801, #160892, #161077, #161211) որոշ բացառիկ crate-երում կտրուկ նվազեցրել են կոմպիլյացիայի ժամանակը. մեկ տեղում՝ 50%-ով, մեկ այլ տեղ՝ 25%-ով, ևս մեկում՝ 15%-ով, իսկ մեկ սթրես-թեստում՝ ավելի շատ։
xmakro և dataflow վերլուծություն
Նոր ներդրող xmakro-ն ներկայացրել է մի քանի օպտիմիզացիա։ #157281-ում նա բարելավել է impl-երի մշակումը սպեցիալիզացիայի գրաֆը կառուցելիս. ցիկլերի քանակը բոլոր բենչմարկներում միջինը նվազել է 1,58%-ով։ #158059-ում արագացվել է ինկրեմենտալ կոմպիլյացիայի տվյալների բեռնումը (լավագույն դեպքում՝ 6%), #160473-ում նվազեցրել է ալոկացիաները տաք obligations-ի ուղում (2%), իսկ #160268-ում դինամիկ դիսպետչերիզացիան փոխարինել է ստատիկով։
Nethercote-ը փոխել է dataflow վերլուծությունների համար CFG-ի անցման ալգորիթմը (#160193)։ cranelift-codegen crate-ում մի ֆունկցիա ունի ավելի քան 18 000 հիմնական բլոկ. հին ալգորիթմով EverInitializedPlaces-ի վերլուծությունը fixpoint-ին հասնելու համար պահանջում էր 1,5 միլիոն կանչ, նորով՝ 90 000։ Այս crate-ի check-հավաքման համար wall-time-ը նվազել է մոտ 30%-ով։ #160033-ում EverInitializedPlaces-ը ևս բարելավվել է, ինչը match-stress բենչմարկում հրահանգների քանակը նվազեցրել է 17%-ով։
Մնացած փոփոխությունների թվում է #160535-ը, որտեղ Chris Denton-ը մեծացրել է stack-ի լռելյայն չափը (լավագույն դեպքում՝ գրեթե 3%)։ Nethercote-ը վաղը սկսում է աշխատել Hexcat-ում rustc-ի արտադրողականության օպտիմիզացիայի նախագծի վրա։
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։