Ajánló: A Rust 1.86 új és izgalmas funkciókkal bővült, mint például a trait upcasting (trait felöntés) támogatás, a szeletek és térképek biztonságosabb módosítható indexelése, valamint a biztonságos függvények stabil célfunkció támogatása. Ezek a fejlesztések tovább erősítik a Rust nyelv biztonságosságát és hatékonyságát, megkönnyítve a munkádat.
A Rust 1.86 főbb újdonságai
A Rust Release Team hivatalosan is bemutatta a népszerű Rust programozási nyelv 1.86-os verzióját, amely számos élvonalbeli funkciót és fejlesztést hoz, amelyek célja, hogy biztonságos és hatékony szoftvereket készíthess.
Trait upcasting támogatás
Az egyik leginkább várt újdonság a trait objektumok felöntésének (trait upcasting) képessége. A gyakorlatban ez azt jelenti, hogy ha egy trait egy szupertrait-től függ, akkor a "gyermek" trait-re mutató hivatkozások mostantól a "szülő" trait-re mutató hivatkozásokká konvertálhatók. A korábbi verziókban manuálisan megvalósított módszerre kellett hagyatkoznod, hogy hasonló viselkedést érj el.
Biztonságos módosítható indexelés szeletekhez és HashMap-ekhez
Egy másik figyelemre méltó fejlesztés az új get_disjoint_mut metódus, amely elérhetővé vált a szeletek és a HashMap számára. Ez a metódus egyszerre biztonságosan lekéri több módosítható hivatkozást, ami korábban nem volt megbízhatóan elvégezhető a get_mut ismételt hívásával. A get_disjoint_mut segítségével mostantól lehetőség van különálló elemek egyidejű módosítására, miközben a Rust szigorú borrow checker (kölcsönzés ellenőrző) szabályainak is megfelelsz. Ez a kiegészítés közvetlenebb és kifejezőbb módot kínál a gyűjtemények részleges frissítésével kapcsolatos forgatókönyvek kezelésére.
Stabil célfunkció támogatás biztonságos függvényekhez
A Rust 1.86 stabilizálja a #[target_feature] használatát a biztonságos függvényekhez (korábban csak a nem biztonságos függvényekre korlátozódott). Ez az attribútum hasznos a kódútvonalak optimalizálására bizonyos CPU-funkciókhoz, például az AVX2 utasításokhoz.
Futásidejű ellenőrzések a hibakeresési módban
Ezen túlmenően, hibakeresési módban a Rust mostantól futásidejű állítást ad ki annak megerősítésére, hogy a mutatók nem nullák, mielőtt bármilyen nem nulla méretű olvasás vagy írás történne. Ezek az ellenőrzések akkor is érvényesek, ha a hivatkozásokat újra kölcsönzik. Fontos, hogy ezek az extra ellenőrzések a hibakeresési állítások részét képezik, így nem helyettesítik vagy csökkentik a meglévő fordítási idejű garanciákat.
A missing_abi lint figyelmeztetésként való kezelése
Az új verzió a missing_abi lint-et "alapértelmezett figyelmeztetés" állapotra frissíti. Más szóval, ha az extern blokkokban nem adsz meg explicit módon a "C" vagy más ABI-t, mostantól figyelmeztetést kapsz.
Az i586-pc-windows-msvc cél eltávolítása
Eközben az i586-pc-windows-msvc cél a Rust 1.87-ben eltávolításra kerül. Mivel az SSE2 utasítások kötelezőek a Windows 10-en (a mainstream Windows célok minimálisan támogatott operációs rendszere), arra ösztönöznek, hogy a hivatalos elavulás hatályba lépése előtt térj át az i686-pc-windows-msvc-re.
Könyvtári fejlesztések
Végül, a könyvtári oldalon a Rust 1.86 számos API-t stabilizál, beleértve a Float::next_down, Float::next_up és az újonnan bevezetett slice::get_disjoint_mut variánsokat. Ezenkívül számos függvény – mint például a hint::black_box és a különféle string-splitting (karakterlánc-felosztó) metódusok – mostantól elérhető const kontextusokban, bővítve azok használhatóságát fordítási idejű forgatókönyvekben.
További információkért és a Rust 1.86 összes újdonságának mélyreható áttekintéséért tekintsd meg a bejelentést.
