Megjelent a Rust 1.90 programozási nyelv, amelyet a Mozilla indított, de jelenleg a független, nonprofit Rust Foundation égisze alatt fejlődik. A nyelv a memória biztonságos kezelésére fókuszál, és eszközöket kínál a feladatok magas párhuzamos végrehajtásának elérésére anélkül, hogy szemétgyűjtőt és futási időt (runtime) kellene használni, hiszen a futási idő csupán az alapvető inicializálásra és a standard könyvtár kísérésére korlátozódik.
A Rust memória kezelésének módszerei megszüntetik a fejlesztők hibáit a mutatókkal való manipulálás során, és védelmet nyújtanak az alacsony szintű memória kezelésből adódó problémákkal szemben, mint például a már felszabadított memória területére való hivatkozás, null-pointer dereferálás, pufferméret túllépés stb. A könyvtárak terjesztésére, a build biztosítására és a függőségek kezelésére a Cargo csomagkezelő fejlesztés alatt áll. A könyvtárak elhelyezésére a crates.io tároló támogatott.
A memória biztonságos kezelése a Rustban a fordítási időben történik, a hivatkozások ellenőrzésén, az objektumok tulajdonjogának nyomon követésén, az objektumok élettartamának (láthatóságának) figyelembevételén és a memória hozzáférésének helyességének értékelésén keresztül a kód futtatásakor. A Rust emellett eszközöket biztosít az egész számok túllépésének elleni védelemhez, kötelezővé teszi a változók értékeinek inicializálását használat előtt, jobban kezeli a hibákat a standard könyvtárban, alkalmazza a változatlan (immutable) hivatkozások és változók fogalmát alapértelmezés szerint, és erős statikus típussal minimalizálja a logikai hibákat.
Főbb újítások:
- Linuxon, x86_64 architektúrával rendelkező számítógépeken a crate-csomagok dinamikus linken történő összekapcsolásához alapértelmezés szerint az LLVM projekt LLD linkerét használják. Az LLD használata a BFD linkerhez képest jobb teljesítményt eredményezett nagy végrehajtható állományok és jelentős méretű hibakeresési információkat tartalmazó projektek összekapcsolásakor, valamint felgyorsította az inkrementális újraépítést. A legtöbb esetben az LLD hátrafelé kompatibilis a BFD-vel. Ha problémák merülnének fel, visszatérhet a BFD-hez, ha a környezeti változó RUSTFLAGS-ban megadja a „-C linker-features=-lld” zászlót, vagy ha hozzáadja a .cargo/config.toml fájlhoz: [target.x86_64-unknown-linux-gnu] rustflags = ["-Clinker-features=-lld"]
- A cargo csomagkezelő publish parancsában elérhető a "--workspace" opció, amely lehetővé teszi az összes csomag automatikus közzétételét a kiválasztott munkaterületről (csomagok halmaza, amely egy Cargo.lock fájlt és közös fordítási eredmény könyvtárat használ), megtartva a csomagok sorrendjét és figyelembe véve köztük a függőségeket.
- Új API-k kerültak a stabil kiadások közé, beleértve a metódusok és típusimplementációk stabilizálását:
- u{n}::checked_sub_signed
- u{n}::overflowing_sub_signed
- u{n}::saturating_sub_signed
- u{n}::wrapping_sub_signed
- impl Copy for IntErrorKind
- impl Hash for IntErrorKind
- impl PartialEq for CStr
- impl PartialEq for CStr
- impl PartialEq<Cow> for CStr
- impl PartialEq for CString
- impl PartialEq for CString
- impl PartialEq<Cow> for CString
- impl PartialEq for Cow
- impl PartialEq for Cow
- impl PartialEq for Cow
- A «const» jelző alkalmazása a funkciókban:
- ::reverse
- f32::floor
- f32::ceil
- f32::trunc
- f32::fract
- f32::round
- f32::round_ties_even
- f64::floor
- f64::ceil
- f64::trunc
- f64::fract
- f64::round
- f64::round_ties_even
- A Musl könyvtárra épülő célnak megfelelő platformok, amelyek a támogatás harmadik szintjén állnak, alapértelmezés szerint dinamikus linkelést használnak: mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv32gc-unknown-linux-musl, s390x-unknown-linux-musl és thumbv7neon-unknown-linux-musleabihf.
- A célplatform «x86_64-apple-darwin» átkerült az első támogatási szintből a második szintre (Apple tervezi az x86_64 architektúra támogatásának megszüntetését). Az első támogatási szint magában foglalja a bináris build-ek készítését, alapos tesztelést és a platform legmagasabb szintű támogatását — minden változtatást a fordítóban a teljes teszthalmaz futtatásával ellenőriznek. A második támogatási szint biztosítja a build garantálását, de a teszthalmazon való áthaladásra nincs garancia.
Továbbá érdemes megemlíteni, hogy a Microsoft fejleszti a Windows-illesztőprogramokhoz szükséges eszközöket Rust nyelven. A GitHub-on már elérhető egy crate-csomag készlet WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) és UMDF (User-Mode Driver Framework) alapú illesztőprogramok készítéséhez, valamint Win32 szolgáltatások, amelyek alkalmasak a Windows 11 használatára. A projekt célja, hogy Rust nyelvi fejlesztők számára könyvtárakat és funkciókat biztosítson, amelyek hasonlóak a C nyelven készült WDK fejlesztői eszközkészlethez. A Rust-hoz készült illesztőprogram-fejlesztői eszköz jelenleg sok unsafe hívást használ a Windows alrendszerekkel való interakció során, de a jövőben biztonságos absztrakciókat terveznek készíteni a kernel struktúrák és DDI (Device Driver Interface) számára. A projekt eredményeit MIT és Apache 2.0 licenc alatt terjesztik.
Forrás: opennet.ru
