Publikimi i gjuhës programuese Rust 1.62

Gjuha e programimit për qëllime të përgjithshme Rust 1.62, 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" ofron komandën "shto", e cila ju lejon të shtoni varësi të reja në manifestin Cargo.toml ose të ndryshoni varësitë ekzistuese nga linja e komandës. Komanda gjithashtu ju lejon të specifikoni veçori dhe versione individuale, për shembull: ngarkesa shtoni serde — veçoritë nxjerrin ngarkesën shtoni nom@5
  • U shtua aftësia për të përdorur "#[derive(Default)]" me numra në të cilët opsioni i paracaktuar përcaktohet duke përdorur atributin "#[default]". #[rrjedh (e parazgjedhur)] enum Ndoshta { #[e parazgjedhur] Asgjë, Diçka (T), }
  • Në platformën Linux përdoret një zbatim më kompakt dhe më i shpejtë i mekanizmit të sinkronizimit Mutex, bazuar në përdorimin e futekseve të ofruara nga kerneli Linux. Ndryshe nga implementimi i përdorur më parë i bazuar në bibliotekën pthreads, versioni i ri përdor vetëm 5 bajt në vend të 40 për të ruajtur gjendjen Mutex. Në mënyrë të ngjashme, mekanizmat e kyçjes Condvar dhe RwLock janë transferuar në futex.
  • Është zbatuar një nivel i dytë i mbështetjes për platformën e synuar x86_64-unknown-none, i krijuar për të gjeneruar skedarë të ekzekutueshëm që mund të funksionojnë pa një sistem operativ. Për shembull, platforma e specifikuar e synuar mund të përdoret kur shkruani komponentët e kernelit. Niveli i dytë i mbështetjes përfshin një garanci montimi.
  • Niveli i tretë i mbështetjes është zbatuar për platformat aarch64-pc-windows-gnullvm dhe x86_64-pc-windows-gnullvm. 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.
  • Një pjesë e re e API-së është zhvendosur në kategorinë e qëndrueshme, duke përfshirë metodat dhe implementimet e tipareve janë stabilizuar:
    • bool::pastaj_disa
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::linja
    • windows::CommandExt::raw_arg
    • implikoj vlera e paracaktuar për AssertUnwindSafe
    • Nga > për Rc
    • Nga > për Arc<[u8]>
    • FusedIterator për EncodeWide

    Burimi: opennet.ru

Shto një koment