Vydanie programovacieho jazyka Rust 1.55

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

Pridať komentár