V nočních sestaveních Rust byly rozšířeny možnosti paralelního kompilování.

Ve front-end kompilátoru Rust, který provádí úkoly jako syntaktická analýza, kontrola typů a analýza půjček, byla implementována podpora paralelního provádění, což umožňuje výrazně zkrátit čas kompilace. Paralelizace je již dostupná v nočních sestaveních Rust a je aktivována pomocí možnosti „-Z threads=8“. Do stabilní větve se plánuje zahrnout tuto funkci v roce 2024.

Práce na zkracování doby kompilace v Rustu probíhá již několik let. Za prvních 10 měsíců roku 2023 se doba kompilace průměrně zkrátila o 13 %, špičková spotřeba paměti se snížila o 15 % a velikost generovaných souborů poklesla o 7 %. V této fázi bylo zrychlení dosaženo pomocí optimalizací samotného kompilátoru. Poté se vývojáři zaměřili na zrychlení pomocí paralelizace operací během kompilace.

Dosud byla paralelizace v Rustu zajišťována převážně na úrovni procesů, například správce balíků Cargo může spouštět několik procesů rustc pro současnou kompilaci několika balíčků. Podpora paralelizace je také přítomna na straně backendu, který provádí operace spojené s generováním kódu — backend Rust může generovat kód po částech, které LLVM poté může zpracovávat paralelně. Frontend však dosud dokázal zpracovávat zdrojový kód pouze v jednovláknovém režimu.

Pro podporu paralelizace byl frontend převeden na použití knihovny Rayon a výrazně přepracován, například mnohé jeho části nyní synchronizují pomocí mutexů a zámků pro čtení/zápis, a v kódu se používají atomové typy. Při testování výkonu nová paralelizovaná implementace mohla vykonávat kompilaci až o 2 % pomaleji při provozu v jednovláknovém režimu (-Z threads=1), ale když bylo více než jedno vlákno, rychlost se výrazně zvyšovala. Například při nastavení 8 vláken (-Z threads=8) se v některých situacích podařilo zkrátit čas kompilace o 50 %.

Výsledek silně závisí na nastavení prostředí a kompilovaného kódu – pro velmi malé programy, které se již rychle kompilují, může být kompilace v multithreadingovém režimu pomalejší. Navíc se může výrazně zvyšovat využití paměti v multithreadingovém režimu, například v testech bylo pozorováno zvýšení spotřeby paměti až o 35 %.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster