Megjelent a Mozilla projekt által alapított, de immár a Rust Foundation független non-profit szervezet égisze alatt kifejlesztett Rust 1.69 általános célú programozási nyelv. A nyelv a memória biztonságára összpontosít, és biztosítja az eszközöket a munka magas párhuzamosságának eléréséhez, miközben elkerüli a szemétgyűjtő és a futási időt (a futásidő a szabványos könyvtár alapvető inicializálására és karbantartására csökken).
A Rust memóriakezelési módszerei megóvják a fejlesztőt a mutatók manipulálása során előforduló hibáktól, és megóvják az alacsony szintű memóriakezelésből adódó problémáktól, mint például a memóriaterület elérése annak felszabadítása után, a nulla mutatók hivatkozásának megszüntetése, a puffertúllépések stb. A programkönyvtárak terjesztéséhez, a buildek biztosításához és a függőségek kezeléséhez a projekt fejleszti a Cargo csomagkezelőt. A crates.io tároló támogatja a könyvtárak tárolását.
A memóriabiztonságot a Rust a fordítási időben biztosítja a referenciaellenőrzés, az objektumok tulajdonjogának nyomon követése, az objektumok élettartamának (hatóköreinek) nyomon követésével és a memória-hozzáférés helyességének értékelésével a kód végrehajtása során. A Rust védelmet nyújt az egész számok túlcsordulása ellen is, megköveteli a változó értékek kötelező inicializálását használat előtt, jobban kezeli a hibákat a szabványos könyvtárban, alapértelmezés szerint alkalmazza a megváltoztathatatlan hivatkozások és változók koncepcióját, erős statikus gépelést kínál a logikai hibák minimalizálása érdekében.
Főbb újítások:
- A Cargo csomagkezelő mostantól azonosítja az automatikusan megoldható figyelmeztetéseket, és ennek megfelelően a "cargo fix" vagy a "cargo clippy --fix" futtatását javasolja. warning: unused import: 'std::hash::Hash' --> src/main.rs:1:5 | 1 | use std::hash::Hash; | ^^^^^^^^^^^^^^^^^^ | = note: '#[warn(unused_imports)]' on by default warning: 'foo' (bin "foo") 1 figyelmeztetést generált (futtassa a 'cargo fix --bin "foo"' parancsot 1 javaslat alkalmazásához)
- A Cargo mostantól javaslatot jelenít meg a „cargo add” parancs használatára, amikor a „cargo install” paranccsal próbálunk telepíteni egy könyvtárat.
- A fordítási idő csökkentése érdekében a hibakeresési információk a build szkriptekben alapértelmezés szerint le vannak tiltva. Ez a változás nem okoz látható különbségeket a build szkriptek sikeres futtatásakor, de hibák esetén a visszakövetési memória kevesebb információt fog tartalmazni. Az előző viselkedéshez való visszatéréshez add hozzá a következőt a Cargo.toml fájlhoz: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
- Az API új része átkerült a stabil kategóriába, beleértve a tulajdonságok módszereit és megvalósításait is:
- CStr::from_bytes_until_null
- core::ffi::FromBytesUntilNulError
- A "const" attribútum, amely meghatározza, hogy konstansok helyett bármilyen környezetben használható, a függvényekben használatos:
- SocketAddr::új
- SocketAddr::ip
- SocketAddr::port
- SocketAddr::is_ipv4
- SocketAddr::is_ipv6
- SocketAddrV4::new
- SocketAddrV4::ip
- SocketAddrV4::port
- SocketAddrV6::new
- SocketAddrV6::ip
- SocketAddrV6::port
- SocketAddrV6::flowinfo
- SocketAddrV6::scope_id
- Hozzáadva a igaz és hamis jelzők használatának lehetősége a fordító argumentumokban.
Forrás: opennet.ru
