Bol vydaný univerzálny programovací jazyk Rust 1.62, založený projektom Mozilla, ale teraz vyvinutý pod záštitou nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečnosť pamäte a poskytuje prostriedky na dosiahnutie vysokej paralelnosti úloh, pričom sa vyhýba používaniu zberača odpadu a runtime (beh je zredukovaný na základnú inicializáciu a údržbu štandardnej knižnice).
Metódy spracovania pamäte Rustu chránia vývojára pred chybami pri manipulácii s ukazovateľmi a chránia pred problémami, ktoré vznikajú v dôsledku nízkoúrovňového spracovania pamäte, ako je prístup k oblasti pamäte po jej uvoľnení, dereferencovanie nulových ukazovateľov, pretečenie vyrovnávacej pamäte atď. Na distribúciu knižníc, poskytovanie zostáv a správu závislostí projekt vyvíja správcu balíkov Cargo. Úložisko crates.io je podporované pre hosťovanie knižníc.
Bezpečnosť pamäte je v Rust zabezpečená v čase kompilácie prostredníctvom kontroly referencií, sledovania vlastníctva objektu, sledovania životnosti objektov (rozsahov) a hodnotenia správnosti prístupu do pamäte počas vykonávania kódu. Rust tiež poskytuje ochranu proti pretečeniu celých čísel, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie zvláda chyby v štandardnej knižnici, štandardne aplikuje koncept nemenných referencií a premenných, ponúka silné statické typovanie na minimalizáciu logických chýb.
Hlavné inovácie:
- Správca balíkov „cargo“ ponúka príkaz „add“, ktorý vám umožňuje pridávať nové závislosti do manifestu Cargo.toml alebo meniť existujúce závislosti z príkazového riadku. Príkaz vám tiež umožňuje špecifikovať jednotlivé vlastnosti a verzie, napríklad: cargo add serde —vlastnosti odvodzujú cargo add nom@5
- Pridaná možnosť používať „#[derive(Default)]“ s enumami, v ktorých je predvolená možnosť definovaná pomocou atribútu „#[default]“. #[derive(Default)] enum Možno { #[predvolené] Nič, niečo(T), }
- Na platforme Linux sa používa kompaktnejšia a rýchlejšia implementácia synchronizačného mechanizmu Mutex, založená na použití futexov poskytovaných jadrom Linuxu. Na rozdiel od predtým používanej implementácie založenej na knižnici pthreads používa nová verzia na uloženie stavu Mutex iba 5 bajtov namiesto 40. Podobne sa do futexu preniesli uzamykacie mechanizmy Condvar a RwLock.
- Bola implementovaná druhá úroveň podpory pre cieľovú platformu x86_64-unknown-none, navrhnutá na generovanie spustiteľných súborov, ktoré môžu fungovať bez operačného systému. Zadanú cieľovú platformu možno napríklad použiť pri písaní komponentov jadra. Druhá úroveň podpory zahŕňa záruku montáže.
- Tretia úroveň podpory bola implementovaná pre platformy aarch64-pc-windows-gnullvm a x86_64-pc-windows-gnullvm. Tretia úroveň zahŕňa základnú podporu, ale bez automatického testovania, zverejňovania oficiálnych verzií alebo kontroly, či je možné kód zostaviť.
- Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
- bool::tak_nejake
- f32::total_cmp
- f64::total_cmp
- Stdin::lines
- windows::CommandExt::raw_arg
- impl predvolená hodnota pre AssertUnwindSafe
- Od > pre Rc
- Od > pre oblúk<[u8]>
- FusedIterator pre EncodeWide
Zdroj: opennet.ru