Megjelent a Rust 1.98 új lebegőpontos optimalizációs funkciókkal

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A Rust csapat bejelentette a Rust 1.98-at, a népszerű rendszerszintű programozási nyelv legújabb stabil verzióját. Az új kiadás algebrai lebegőpontos metódusokat, gyorsabb pufferelt egészszám-formázást és számos újonnan stabilizált standard könyvtári API-t hoz.

Az egyik legfontosabb újdonság az f32 és f64 lebegőpontos típusokhoz érkező új „algebrai” metóduscsalád. Ezek az összeadásra, kivonásra, szorzásra, osztásra és maradékképzésre terjednek ki, és lehetővé teszik, hogy a fordító a valós számok algebrai tulajdonságai alapján optimalizáljon akkor is, ha ezek a tulajdonságok a lebegőpontos ábrázolásra szigorúan véve nem igazak.

Így a fordító szabadabban rendezheti át a lebegőpontos műveleteket, ami szélesebb körű ciklus-vektorizációt és más teljesítmény-optimalizálásokat tehet lehetővé. A Rust csapat ezeket az optimalizálásokat más nyelvek -ffast-math jellegű opcióihoz hasonlítja, bár a pontos készletet szándékosan nem határozzák meg.

Például egy szokásos kifejezés, mint az a + b + c + d, meg kell őrizze balról jobbra történő kiértékelési sorrendjét, mert a lebegőpontos összeadás nem asszociatív. Ha ugyanezt a számítást az új algebraic_add metódusokkal írjuk le, a fordító szabadon átrendezheti, és részösszegeket is kiértékelhet párhuzamosan.

A Rust 1.98 minden primitív egész típushoz bevezet egy új format_into metódust is. Ez a most stabilizált NumBuffer típussal működik együtt, amely elegendő tárhelyet biztosít az adott egész típus bármely értékének decimális ábrázolásához. A formázott eredmény egy, a pufferre hivatkozó string slice-ként érkezik vissza.

További változás a ManuallyDrop és a Box kapcsolatát érinti. A Rust 1.96 előtt egy ManuallyDrop<Box<_>> mozgatása azután, hogy a benne lévő Boxot expliciten eldobták, a fordító hibája miatt undefined behavior lehetett. Ezt a problémát a Rust 1.96-ban javították, a Rust 1.98 pedig frissíti a ManuallyDrop dokumentációját, és mostantól garantálja, hogy az ilyen kódot nem tekintik undefined behaviornek.

A sztringkezelés is több újdonsággal bővül, például a String::from_utf16le, String::from_utf16be és ezek „lossy” változataival, amelyek kifejezetten little-endian és big-endian UTF-16 adatok konvertálására szolgálnak. Stabil lett az új strip_circumfix metódus is, sztringekre és szeletekre egyaránt.

További részletekért olvasd el a bejelentést. A meglévő Rust felhasználók szokás szerint a rustup segítségével végezhetnek verziófrissítést a rustup update stable parancs futtatásával.