Publikimi i gjuhës programuese Rust 1.68

Gjuha e programimit për qëllime të përgjithshme Rust 1.68, e themeluar nga projekti Mozilla, por tani e zhvilluar nën kujdesin e organizatës së pavarur jofitimprurëse Rust Foundation, është publikuar. Gjuha fokusohet në sigurinë e kujtesës dhe siguron mjetet për të arritur paralelizëm të lartë të punës duke shmangur përdorimin e një grumbulluesi të mbeturinave dhe kohën e funksionimit (koha e funksionimit reduktohet në inicializimin bazë dhe mirëmbajtjen e bibliotekës standarde).

Metodat e trajtimit të memories Rust e ruajnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin për shkak të trajtimit të nivelit të ulët të kujtesës, të tilla si qasja në një zonë memorie pasi të jetë liruar, mosreferencimi i treguesve null, tejkalimet e buferit, etj. Për të shpërndarë bibliotekat, për të ofruar ndërtime dhe për të menaxhuar varësitë, projekti zhvillon menaxherin e paketave Cargo. Depoja e crates.io mbështetet për pritjen e bibliotekave.

Siguria e memories sigurohet në Rust në kohën e përpilimit përmes kontrollit të referencës, mbajtjes së gjurmës së pronësisë së objektit, mbajtjes së gjurmëve të jetëgjatësisë së objektit (scopes) dhe vlerësimit të saktësisë së aksesit në kujtesë gjatë ekzekutimit të kodit. Rust siguron gjithashtu mbrojtje kundër tejmbushjeve të numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave përpara përdorimit, trajton më mirë gabimet në bibliotekën standarde, zbaton konceptin e referencave dhe variablave të pandryshueshme si parazgjedhje, ofron shtypje të fortë statike për të minimizuar gabimet logjike.

Risitë kryesore:

  • Menaxheri i paketave Cargo dhe depoja e crates.io kanë stabilizuar mbështetjen për protokollin Sparse, i cili përcakton një mënyrë të re pune me një indeks që pasqyron versionet e disponueshme të të gjitha paketave ekzistuese në depo. Protokolli i ri ju lejon të rritni ndjeshëm shpejtësinë e punës me crates.io dhe të zgjidhni problemet e shkallëzimit me rritjen e mëtejshme të numrit të paketave në depo.

    Për të reduktuar vonesat e shkaktuara nga shkarkimi i një indeksi të plotë, Sparse në vend që të aksesojë indeksin duke përdorur Git përfshin shkarkimin e drejtpërdrejtë përmes HTTPS vetëm të të dhënave të nevojshme të indeksit, duke mbuluar varësitë e një projekti të caktuar. Një shërbim i ri, index.crates.io, përdoret për të ofruar të dhëna të indeksit. Si parazgjedhje, protokolli i ri është planifikuar të përdoret në degën Rust 1.70 dhe para kësaj, për ta aktivizuar atë, mund të vendosni variablin e mjedisit "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=i rrallë" ose të shtoni parametrin 'protocol =' në "[regjistrat. crates-io]" seksioni i skedarit .cargo/config.toml 'sparse'.

  • U shtua makroja "pin!", e cila ju lejon të krijoni një strukturë Pin<&mut T> nga shprehja "T" me fiksim lokal të gjendjes së saj (ndryshe nga Box::pin, ajo nuk shpërndan memorie në grumbull, por lidhet në nivelin e pirgut).
  • Është propozuar një trajtues i gabimeve të shpërndarjes së memories së paracaktuar, i përdorur kur përdoret paketa standarde e ndarjes. Aplikacionet që aktivizojnë vetëm alokimin (pa std) tani do të thërrasin mbajtësin "panik!" kur shpërndarja e memories dështon, e cila mund të ndërpritet opsionalisht duke përdorur "#[panic_handler]". Programet që përdorin bibliotekën std do të vazhdojnë të printojnë informacionin e gabimit në stderr dhe do të prishen.
  • Një pjesë e re e API-së është zhvendosur në kategorinë e qëndrueshme, duke përfshirë metodat dhe implementimet e tipareve janë stabilizuar:
    • {core,std}::pin::pin!
    • impl Nga për {f32,f64}
    • std::rruga::MAIN_SEPARATOR_STR
    • impl DerefMut për PathBuf
  • Atributi “const”, i cili përcakton mundësinë e përdorimit të tij në çdo kontekst në vend të konstanteve, përdoret në funksionin VecDeque::new.
  • Për të punuar në platformën Android, tani kërkohet të paktën NDK r25 (API 19), d.m.th. Versioni minimal i mbështetur i Android është rritur në 4.4 (KitKat).
  • Niveli i tretë i mbështetjes është zbatuar për platformën Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). 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