Publikimi i gjuhës programuese Rust 1.46

botuar lëshimi 1.46 i gjuhës programuese të sistemit Ndryshk, e themeluar nga projekti Mozilla. Gjuha fokusohet në sigurinë e kujtesës, siguron menaxhimin automatik të kujtesës dhe ofron mjete për arritjen e paralelizmit të lartë të detyrave pa përdorur një grumbullues mbeturinash dhe Runtime.

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. Një menaxher paketash po zhvillohet për të shpërndarë bibliotekat, për të siguruar montimin dhe për të menaxhuar varësitë nga projekti. ngarkesë, duke ju lejuar të merrni bibliotekat e nevojshme për programin me një klik. Një depo mbështetet për të pritur bibliotekat arka.io.

Kryesore risitë:

  • Janë zgjeruar aftësitë e funksioneve të përcaktuara duke përdorur shprehjen "const fn", të cilat mund të quhen jo vetëm si funksione të rregullta, por edhe të përdoren në çdo kontekst në vend të konstanteve. Këto funksione llogariten në kohën e kompilimit, jo në kohën e ekzekutimit, kështu që ato u nënshtrohen disa kufizimeve, siç është aftësia për të lexuar vetëm nga konstantet.

    Publikimi i ri heq ndalimin e përdorimit të operatorëve Boolean ("&&" dhe "||") në funksione të tilla dhe lejon përdorimin e konstruksioneve "nëse", "nëse let", "përputhje",
    "while", "while let" dhe "loop", dhe gjithashtu ofron mundësinë e konvertimit në feta (slice, vargje dinamike) duke përdorur shprehjen "&[T]". Përdorimi i këtyre veçorive në funksionet "const fn" ju lejon të zhvendosni disa operacione me burime intensive në fazën e përpilimit. Për shembull, zbatimi i "const-sha1" bën të mundur llogaritjen e hasheve SHA-1 në kohën e përpilimit, gjë që çon në përshpejtimin e lidhjeve WinRT për Rust me pothuajse 40 herë.

  • Për t'i bërë mesazhet e gabimit më informues, është stabilizuar mbështetja për atributin "#[track_caller]", i cili është i dobishëm për funksione si unwrap, i cili mund të shkaktojë panik nëse llojet përdoren gabimisht. Atributi i specifikuar do të përdoret nga mbajtësi i panikut për të printuar vendndodhjen e telefonuesit në një mesazh gabimi.
  • 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 std::mem::forget.
  • Një pjesë e re e API-së është zhvendosur në kategorinë e qëndrueshme, duke përfshirë opsionin e stabilizuar::zip dhe vec::Drain::as_slice.
  • Në menaxherin e paketës Cargo shtuar mbështetje për variablat e reja të mjedisit të vendosura gjatë përpilimit të një pakete: CARGO_BIN_NAME (emri i skedarit të ekzekutueshëm që rezulton), CARGO_CRATE_NAME (emri i paketës), CARGO_PKG_LICENSE (licenca e specifikuar në manifest), CARGO_PKG_LICENSE_FILE (rruga drejt skedarit të licencës).

Burimi: opennet.ru

Shto një koment