Rust 1.68 programmeerimiskeele väljalase

Avaldatud on Mozilla projektiga rajatud, kuid nüüdseks sõltumatu mittetulundusühingu Rust Foundation egiidi all välja töötatud üldotstarbelise programmeerimiskeele Rust 1.68 väljalase. Keel keskendub mälu ohutusele ja pakub vahendeid töö kõrge paralleelsuse saavutamiseks, vältides samal ajal prügikoguja ja käitusaja kasutamist (käitusaeg lüheneb standardse teegi põhikäivitamise ja hoolduseni).

Rusti mälukäsitlusmeetodid säästavad arendajat osutitega manipuleerimisel esinevate vigade eest ja kaitsevad madala tasemega mälukäsitluse tõttu tekkivate probleemide eest, nagu mälualale juurdepääs pärast selle vabastamist, nullviidate viitamise tühistamine, puhvri ülekoormus jne. Teekide levitamiseks, järkude pakkumiseks ja sõltuvuste haldamiseks arendab projekt Cargo paketihaldurit. Hoidlat crates.io toetatakse teekide majutamiseks.

Mälu turvalisus on Rustis kompileerimise ajal tagatud viidete kontrollimise, objekti omandiõiguse jälgimise, objektide eluea (ulatuse) jälgimise ja mälule juurdepääsu õigsuse hindamise kaudu koodi täitmise ajal. Rooste pakub ka kaitset täisarvude ületäitumise eest, nõuab muutujate väärtuste kohustuslikku lähtestamist enne kasutamist, käsitleb standardteegi vigu paremini, rakendab vaikimisi muutumatute viidete ja muutujate kontseptsiooni, pakub tugevat staatilist tippimist loogiliste vigade minimeerimiseks.

Peamised uuendused:

  • Cargo paketihaldur ja crates.io hoidla on stabiliseerinud Sparse protokolli toe, mis määratleb uue tööviisi indeksiga, mis kajastab kõigi hoidlas olemasolevate pakettide saadaolevaid versioone. Uus protokoll võimaldab oluliselt suurendada crates.io-ga töötamise kiirust ja lahendada skaleerimisprobleeme koos hoidlas olevate pakettide arvu edasise kasvuga.

    Täisindeksi allalaadimisest põhjustatud viivituste vähendamiseks hõlmab Sparse Giti abil indeksile juurdepääsu asemel ainult vajalike indeksiandmete otsest allalaadimist HTTPS-i kaudu, mis hõlmab konkreetse projekti sõltuvusi. Indeksiandmete edastamiseks kasutatakse uut teenust index.crates.io. Vaikimisi on uut protokolli plaanis kasutada Rust 1.70 harus ja enne seda saab selle lubamiseks määrata keskkonnamuutuja "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" või lisada "[registritesse" parameetri 'protocol ='. crates-io]" faili .cargo/config.toml jaotis "hõre".

  • Lisatud makro “pin!”, mis võimaldab luua avaldisest “T” struktuuri Pin<&mut T> koos selle oleku lokaalse kinnitamisega (erinevalt Box::pin-st ei eralda see kuhjale mälu, vaid seob virna tasemel).
  • Välja on pakutud vaikemälu eraldamise veakäsitleja, mida kasutatakse standardse jaotuspaketi kasutamisel. Rakendused, mis lubavad ainult alloci (ilma std-ta), kutsuvad nüüd mälu eraldamise nurjumisel paanikakäsitlejat, mida saab valikuliselt peatada, kasutades käsku #[panic_handler]. Programmid, mis kasutavad std teeki, jätkavad veateabe printimist stderri ja jooksevad kokku.
  • API uus osa on viidud stabiilsete kategooriasse, sealhulgas on stabiliseeritud meetodid ja tunnuste rakendused:
    • {core,std}::pin::pin!
    • impl Alates {f32,f64} jaoks
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut PathBufi jaoks
  • Funktsioonis VecDeque::new kasutatakse atribuuti “const”, mis määrab võimaluse kasutada seda konstantide asemel mis tahes kontekstis.
  • Androidi platvormil töötamiseks on nüüd nõutav vähemalt NDK r25 (API 19), s.t. Minimaalne toetatud Androidi versioon on tõstetud 4.4-ni (KitKat).
  • Kolmas tugitase on rakendatud Sony PlayStation Vita platvormile (armv7-sony-vita-newlibeabihf). Kolmas tase hõlmab põhituge, kuid ilma automaatse testimiseta, ametlike järelversioonide avaldamise või koodi loomiseta.

Allikas: opennet.ru

Lisa kommentaar