Publikimi i gjuhës programuese Rust 1.55

Është publikuar publikimi i gjuhës programuese të sistemit Rust 1.55, i themeluar nga projekti Mozilla, por tashmë i zhvilluar nën kujdesin e organizatës së pavarur jofitimprurëse Rust Foundation. Gjuha fokusohet në sigurinë e kujtesës, siguron menaxhimin automatik të kujtesës dhe siguron mjetet për të arritur paralelizëm të lartë të detyrave pa përdorur një grumbullues mbeturinash ose kohëzgjatjeje (koha e funksionimit reduktohet në inicializimin bazë dhe mirëmbajtjen e bibliotekës standarde).

Menaxhimi automatik i kujtesës i Rust eliminon gabimet gjatë manipulimit të treguesve dhe mbron nga problemet që lindin nga manipulimi i nivelit të ulët të memories, të tilla si qasja në një rajon memorie pasi të jetë liruar, mosreferencat e treguesit null, tejkalimet e buferit, etj. Për të shpërndarë bibliotekat, për të siguruar montimin dhe për të menaxhuar varësitë, projekti po zhvillon menaxherin e paketave Cargo. Depoja e crates.io mbështetet për pritjen e bibliotekave.

Risitë kryesore:

  • Menaxheri i paketave Cargo ka aftësinë të bashkojë gabimet dhe paralajmërimet e dyfishta që ndodhin gjatë një ndërtimi. Kur ekzekutoni komanda të tilla si "testi i ngarkesave" dhe "kontrolli i ngarkesave -- të gjitha objektivat" që rezultojnë në ndërtime të shumta të një pakete me parametra të ndryshëm, përdoruesit i shfaqet tani një përmbledhje e shfaqjes së një problemi të përsëritur, në vend që të shfaqet. paralajmërime të shumta identike kur ndërtohet e njëjta gjë në mënyrë të përsëritur. $ cargo +1.55.0 kontroll — të gjitha objektivat Kontrollimi i foo v0.1.0 paralajmërim: funksioni nuk përdoret kurrë: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = shënim: '#[warn(dead_code)]' aktivizohet si parazgjedhje: 'foo' (lib) gjeneroi 1 paralajmërim: 'foo' (lib test) gjeneroi 1 paralajmërim (1 dublikatë) Objektivi i përfunduar i programit [i paoptimizuar + debuginfo] (s) në 0.84 sekonda
  • Kodi i analizës me pikë lundruese në bibliotekën standarde është zhvendosur për të përdorur algoritmin më të shpejtë dhe më të saktë Eisel-Lemire, i cili ka zgjidhur disa probleme të vërejtura më parë me rrumbullakimin dhe analizimin e numrave me një numër shumë të madh shifrash.
  • Aftësia për të specifikuar vargjet e pambyllura në shabllone është stabilizuar (“X..” interpretohet si një interval që fillon me vlerën X dhe përfundon me vlerën maksimale të llojit të numrit të plotë): përputh x si u32 { 0 => println! ("zero!"), 1.. => println! ("numër pozitiv!"), }
  • Variantet e zgjeruara të gabimit të mbuluara nga std::io::ErrorKind (klasifikon gabimet në kategori të tilla si NotFound dhe WouldBlock). Më parë, gabimet që nuk përshtateshin në kategoritë ekzistuese binin në kategorinë ErrorKind::Other, e cila përdorej gjithashtu për gabime në kodin e palëve të treta. Tani ekziston një e veçantë e brendshme ErrorKind::Kategoria e pakategorizuar për gabimet që nuk përshtaten në kategoritë ekzistuese dhe kategoria ErrorKind::Të tjera është e kufizuar në gabime që nuk ndodhin në bibliotekën standarde (funksionet standarde të bibliotekës që kthejnë io::Error mos përdorni më kategorinë ErrorKind:: Tjetër).
  • Një pjesë e re e API-së është zhvendosur në kategorinë e qëndrueshme, duke përfshirë metodat dhe implementimet e tipareve janë stabilizuar:
    • Lidhur::klonuar
    • Kullimi::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • NdoshtaUninit::assume_init_mut
    • NdoshtaUninit::assume_init_ref
    • NdoshtaUninit::shkruaj
    • grup:: hartë
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandkomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Atributi “const”, i cili përcakton mundësinë e përdorimit të tij në çdo kontekst në vend të konstanteve, përdoret në metodën str::from_utf8_unchecked.
  • Niveli i tretë i mbështetjes është zbatuar për platformën powerpc64le-unknown-freebsd. Niveli i tretë përfshin mbështetjen bazë, por pa testim të automatizuar, publikim të ndërtimeve zyrtare ose kontrollim nëse kodi mund të ndërtohet.

Burimi: opennet.ru

Shto një koment