Rust 1.68 Programazio Lengoaia kaleratzea

Rust 1.68 erabilera orokorreko programazio-lengoaia argitaratu da, Mozilla proiektuak sortua, baina orain Rust Foundation irabazi asmorik gabeko erakunde independentearen babespean garatua. Lengoaiak memoriaren segurtasunean oinarritzen da eta lanaren paralelismo handia lortzeko bitartekoak eskaintzen ditu zabor-biltzailea eta exekuzio-denbora erabiltzea saihestuz (exekuzio-denbora liburutegi estandarraren hasierako oinarrizko hasierara eta mantentzera murrizten da).

Rust-en memoria maneiatzeko metodoek garatzaileari erakusleak manipulatzerakoan akatsetatik salbatzen dute eta maila baxuko memoria-kudeaketaren ondorioz sortzen diren arazoetatik babesten dute, hala nola, memoria-eremu batera atzitzea askatu ondoren, erakusle nuluak deserreferentziak egitea, buffer gainditzeak, etab. Liburutegiak banatzeko, eraikuntzak emateko eta mendekotasunak kudeatzeko, proiektuak Cargo paketeen kudeatzailea garatzen du. crates.io biltegia liburutegiak ostatatzeko onartzen da.

Memoriaren segurtasuna Rust-en konpilazio garaian eskaintzen da erreferentziak egiaztatzeko, objektuen jabetzaren jarraipena eginez, objektuen iraupenen (esparruak) jarraipena eginez eta kodearen exekuzioan memoria sarbidearen zuzentasuna ebaluatuz. Rust-ek osoko gainezkatzeen aurkako babesa eskaintzen du, erabili aurretik aldagaien balioak derrigorrezko hasieratzea eskatzen du, liburutegi estandarrean akatsak hobeto kudeatzen ditu, erreferentzia eta aldagai aldaezinen kontzeptua lehenespenez aplikatzen du, idazketa estatiko sendoa eskaintzen du akats logikoak minimizatzeko.

Berrikuntza nagusiak:

  • Cargo paketeen kudeatzaileak eta crates.io biltegiak Sparse protokoloaren euskarria egonkortu dute, biltegian dauden pakete guztien bertsio eskuragarriak islatzen dituen indize batekin lan egiteko modu berri bat definitzen duena. Protokolo berriak crates.io-rekin lan egiteko abiadura nabarmen handitzeko eta eskalatzeko arazoak konpontzeko aukera ematen du biltegiko pakete kopurua areagotuz.

    Indize osoa deskargatzeak eragindako atzerapenak murrizteko, Sparse-k Git erabiliz indizea atzitu beharrean HTTPS bidez deskargatzea dakar beharrezkoak diren indize datuak soilik, proiektu jakin baten mendekotasunak estaliz. Indizearen datuak emateko zerbitzu berri bat erabiltzen da, index.crates.io. Lehenespenez, protokolo berria Rust 1.70 adarrean erabiltzea aurreikusten da, eta aurretik, hura gaitzeko, "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" ingurune-aldagaia ezar dezakezu edo 'protokoloa =' parametroa gehi dezakezu "[erregistroak. crates-io]" .cargo/config.toml fitxategiaren 'sparse' atala.

  • "Pin!" makroa gehitu da, eta horrek "T" esapidetik Pin<&mut T> egitura bat sortzeko aukera ematen du, bere egoeraren ainguraketa lokalarekin (Box::pin ez bezala, ez du memoria esleitzen pila batean, baina lotzen du). pila mailan).
  • Memoria esleipenaren errore-kudeatzaile lehenetsi bat proposatu da, alloc pakete estandarra erabiltzean erabiltzen dena. Alloc (std gabe) soilik gaitzen duten aplikazioek orain β€œpanic!” kudeatzaileari deituko diote memoria esleipenak huts egiten duenean, eta aukeran atzeman daiteke β€œ#[panic_handler]” erabiliz. std liburutegia erabiltzen duten programek erroreen informazioa inprimatzen jarraituko dute stderr-en eta huts egiten dute.
  • APIaren zati berri bat egonkorren kategoriara eraman da, eta ezaugarrien metodoak eta inplementazioak egonkortu dira:
    • {core,std}::pin::pin!
    • impl From {f32,f64}rentzat
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut PathBuf-erako
  • "const" atributua, konstanteen ordez edozein testuingurutan erabiltzeko aukera zehazten duena, VecDeque::new funtzioan erabiltzen da.
  • Android plataforman lan egiteko, gutxienez NDK r25 (API 19) behar da orain, hau da. Gutxieneko onartzen den Android bertsioa 4.4 (KitKat) izatera igo da.
  • Hirugarren laguntza-maila Sony PlayStation Vita plataformarako ezarri da (armv7-sony-vita-newlibeabihf). Hirugarren mailak oinarrizko euskarria dakar, baina proba automatizatu gabe, eraikuntza ofizialak argitaratu edo kodea eraiki daitekeen egiaztatu gabe.

Iturria: opennet.ru

Gehitu iruzkin berria