Vyšlo vydanie systémového programovacieho jazyka Rust 1.55, založeného projektom Mozilla, no teraz vyvinutého pod záštitou nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečnosť pamäte, poskytuje automatickú správu pamäte a poskytuje prostriedky na dosiahnutie vysokého paralelizmu úloh bez použitia garbage collectora alebo runtime (runtime je zredukované na základnú inicializáciu a údržbu štandardnej knižnice).
Automatická správa pamäte Rust eliminuje chyby pri manipulácii s ukazovateľmi a chráni pred problémami vznikajúcimi pri manipulácii s pamäťou na nízkej úrovni, ako je prístup k oblasti pamäte po jej uvoľnení, dereferencie nulového ukazovateľa, pretečenie vyrovnávacej pamäte atď. Na distribúciu knižníc, zabezpečenie montáže 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.
Hlavné inovácie:
- Správca balíkov Cargo má schopnosť zlúčiť duplicitné chyby a upozornenia, ktoré sa vyskytnú počas zostavovania. Pri vykonávaní príkazov, ako sú „test nákladu“ a „kontrola nákladu --všetky ciele“, ktorých výsledkom je viacero zostavení balíka s rôznymi parametrami, sa používateľovi teraz namiesto zobrazenia zobrazí súhrn výskytu opakujúceho sa problému. viac identických upozornení pri opakovanom budovaní toho istého súboru. $ cargo +1.55.0 check —all-targets Kontrola foo v0.1.0 varovanie: funkcia sa nikdy nepoužije: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = note: '#[warn(dead_code)]' predvolene zapnuté varovanie: 'foo' (lib) vygenerovalo 1 varovanie: 'foo' (test lib) vygenerovalo 1 varovanie (1 duplikát) Dokončené vývoj [neoptimalizované + debuginfo] cieľ (s) za 0.84 s
- Kód analýzy s pohyblivou rádovou čiarkou v štandardnej knižnici bol presunutý tak, aby používal rýchlejší a presnejší algoritmus Eisel-Lemire, ktorý vyriešil niektoré predtým pozorované problémy so zaokrúhľovaním a analýzou čísel s veľmi veľkým počtom číslic.
- Možnosť špecifikovať neuzavreté rozsahy v šablónach bola stabilizovaná („X..“ sa interpretuje ako rozsah, ktorý začína hodnotou X a končí maximálnou hodnotou typu celé číslo): match x ako u32 { 0 => println! (“nula!”), 1.. => println!("kladné číslo!"), }
- Rozšírené varianty chýb, na ktoré sa vzťahuje std::io::ErrorKind (klasifikuje chyby do kategórií ako NotFound a WantBlock). Predtým chyby, ktoré sa nezmestili do existujúcich kategórií, spadali do kategórie ErrorKind::Other, ktorá sa používala aj na chyby v kóde tretích strán. Teraz existuje samostatná interná kategória ErrorKind::Uncategorized pre chyby, ktoré sa nezmestia do existujúcich kategórií, a kategória ErrorKind::Other je obmedzená na chyby, ktoré sa nevyskytujú v štandardnej knižnici (funkcie štandardnej knižnice, ktoré vracajú io::Error už nepoužívajte kategóriu ErrorKind:: Iné).
- Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
- Viazané::klonované
- Odtok::as_str
- IntoInnerError::into_error
- IntoInnerError::into_parts
- MaybeUninit::assume_init_mut
- MaybeUninit::assume_init_ref
- MaybeUninit::napíš
- pole::map
- ops::ControlFlow
- x86::_bittest
- x86::_bittestandcomplement
- x86::_bittestandreset
- x86::_bittestandset
- x86_64::_bittest64
- x86_64::_bittestandcomplement64
- x86_64::_bittestandreset64
- x86_64::_bittestandset64
- Atribút „const“, ktorý určuje možnosť jeho použitia v akomkoľvek kontexte namiesto konštánt, sa používa v metóde str::from_utf8_unchecked.
- Tretia úroveň podpory bola implementovaná pre platformu powerpc64le-unknown-freebsd. Tretia úroveň zahŕňa základnú podporu, ale bez automatického testovania, zverejňovania oficiálnych verzií a overovania zostaviteľnosti kódu.
Zdroj: opennet.ru