A Rust csapat örömmel jelentette be a Rust új verzióját, az 1.81.0-t. Ez egy olyan programozási nyelv, amely mindenkinek lehetőséget ad megbízható és hatékony szoftverek készítésére.
Tartalomjegyzék
Legfontosabb újdonságok az 1.81.0 stabil verzióban
core::error::Error
Az 1.81 stabilizálja a core-ban lévő Error trait-et, lehetővé téve a trait használatát #![no_std] könyvtárakban. Ez elsősorban azt segíti elő, hogy a programnyelv ökoszisztémája egységes Error trait-et használjon, függetlenül attól, milyen környezetekre irányul a könyvtár.
Új rendezési algoritmusok
A standard könyvtár mind stabil, mind instabil rendezési implementációit új algoritmusokra frissítették, javítva a futási teljesítményt és a fordítási időt.
Ezen felül mindkét új rendezési algoritmus megpróbálja felismerni az Ord helytelen implementációit, amelyek megakadályoznák a rendezett eredmény létrehozását, és most már pánikot generálnak az ilyen esetekben, ahelyett, hogy véletlenszerűen elrendezett adatokat adnának vissza. Az ilyen pánikokat tapasztaló felhasználóknak érdemes átvizsgálniuk a rendezési implementációikat, hogy biztosítsák, megfelelnek a PartialOrd és Ord követelményeinek.
#[expect(lint)]
Az 1.81 stabilizál egy új lint szintet, az expect-et, amely lehetővé teszi egy adott lint megjegyzését, és figyelmeztet, ha nem történik meg. Ennek az a célja, hogy ideiglenesen elnémítsa a lint figyelmeztetéseket, például hibák miatt vagy refaktorálás során, miközben biztosítani szeretnék, hogy a lint már nem szükséges.
Például, ha egy kódbázist új Clippy lint korlátozásra, mint az „undocumented_unsafe_blocks”, szeretnél átállítani, használhatod a #[expect(clippy::undocumented_unsafe_blocks)] attribútumot a váltás során, és biztosíthatod, hogy minden unsafe blokk dokumentálása után átállhatsz a lint szigorítására.
A Clippy két új lintet is bevezetett ennek a funkciónak a használatára és a meglévő attribútumok áttelepítésére:
- clippy::allow_attributes, amely az allow attribútumok helyett #[expect]-et követel, vagy az #[allow] attribútumokat #[expect]-re cseréli.
- clippy::allow_attributes_without_reason, amely azt követeli, hogy az #[allow] attribútumoknak indoka legyen.
Lint indokok
A lint szint megváltoztatása gyakran valamilyen konkrét okból történik. Például, ha a kód egy olyan környezetben fut, amely nem támogatja a lebegőpontos műveleteket, használhatod a Clippy-t ennek észlelésére a #![deny(clippy::float_arithmetic)] segítségével. Azonban, ha egy új fejlesztő látja ezt a lintet, lehet, hogy keresnie kell egy megjegyzést, amely magyarázza a tiltás okát. Az 1.81-ben ezt már közvetlenül a fordítóüzenetben is megteheted:
error: floating-point arithmetic detected
--> src/lib.rs:4:5
|
4 | a + b
| ^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_arithmetic
= note: no hardware float support
note: the lint level is defined here
--> src/lib.rs:1:9
|
1 | #![deny(clippy::float_arithmetic, reason = "no hardware float support")]
| ^^^^^^^^^^^^^^^^^^^^^^^^
Kompatibilitási megjegyzések
Pánik hook és pánik kezelő argumentumok szétválasztása
A std::panic::PanicInfo át lett nevezve std::panic::PanicHookInfo-ra. A régi név továbbra is működik majd aliasként, de az 1.82.0-tól kezdve figyelmeztetést ad a használata.
Rust frissítése az új verzióra
Ha már van telepítve korábbi Rust verziód, a rustup segítségével, az 1.81.0-t az alábbi parancs kiadásával szerezheted meg:
$ rustup update stable
Ha még nincs telepítve a rustup, telepítheted azt a projekt weboldalán található leírás alapján,ezen felül elolvashatod az 1.81.0 kiadási megjegyzéseit további részletekért.
A fejlesztők megjegyzik,ha szeretnél segíteni a jövőbeli kiadások tesztelésében, fontolóra veheted, hogy helyben frissíts a beta csatornára (rustup default beta) vagy a nightly csatornára (rustup default nightly). Kérésük az, hogy aki tesztel az feltétlenül jelentsen minden hibát, amellyel találkozik!