Në frontendin e kompilatorit Rust, i cili kryen detyra si analizë sintaksore, verifikim të tipeve dhe analizë të huazimeve, është zbatuar mbështetje për ekzekutimin paralel, e cila lejon të reduktojë ndjeshëm kohën e kompilimitt. Parallelizimi është i disponueshëm tashmë në ndërtimet nat night dhe aktivizohet nëpërmjet opsionit "-Z threads=8". Në degën stabile, mundësia e shqyrtuar planifikohet të integrohet në vitin 2024.
Puna për zvogëlimin e kohës së kompilimit në Rust ka vazhduar për disa vite. Në 10 muajt e parë të vitit 2023, koha e kompilimit është zvogëluar mesatarisht me 13%, konsumimi maksimal i memories është ulur me 15%, dhe madhësia e skedarëve të gjeneruar është reduktuar me 7%. Në këtë fazë, shpejtësia është arritur përmes optimizimeve të vetë kompilatorit. Pas kësaj, zhvilluesit kaluan në punën për të përshpejtuar duke përdorur paralelizimin e operacioneve gjatë kompilimit.
Der tani, paralelizimi nĂ« Rust Ă«shtĂ« realizuar kryesisht nĂ« nivelin e proceseve; pĂ«r shembull, menaxheri i paketave Cargo mund tĂ« nisĂ« disa procese rustc pĂ«r kompilim simultan tĂ« disa paketave. MbĂ«shtetje pĂ«r paralelizimin gjithashtu ekziston nĂ« anĂ«n e backend-it, i cili kryen operacione qĂ« lidhen me gjenerimin e kodit â backend-i i Rust mund tĂ« gjenerojĂ« kod nĂ« pjesĂ« qĂ« mĂ« pas LLVM mund t'i pĂ«rpunojĂ« paralelisht. NdĂ«rsa frontend-i deri tani ka qenĂ« nĂ« gjendje tĂ« pĂ«rpunojĂ« kodin burimor vetĂ«m nĂ« modalitetin njĂ«rrjedhĂ«s.
Për të mbështetur paralelizimin, frontend-i është kaluar në përdorimin e bibliotekës Rayon dhe është ristrukturuar ndjeshëm; për shembull, shumë pjesë të tij tani sinkronizohen përmes mutex-ve dhe bllokimeve të leximit/shkruarjes, dhe në kod përdoren lloje atomike. Në testimin e performancës, implementimi i ri i paralelizuar mund të kryente kompilim deri në 2% më ngadalë kur punonte në modalitetin njërrjedhës (-Z threads=1), por kur numri i thread-eve ishte më shumë se një, shpejtësia rritej ndjeshëm. Për shembull, kur vendoseshin 8 thread-e (-Z threads=8), në disa situata koha e kompilimit arrinte të zvogëlohej me 50%.
Në të njëjtën kohë, rezultati varet fort nga cilësimet e mjedisit dhe kodi i kompiluar - për programet shumë të vogla, të cilat tashmë kompilohen shpejt, kompilimi në modalitetin shumëfishek mund të kryhet më ngadalë. Për më tepër, konsumimi i memorjes në modalitetin shumëfishek mund të rritet ndjeshëm, për shembull, në teste është vërejtur një rritje e konsumit të memorjes deri në 35%.
Burimi: opennet.ru
