Rust 1.62 Programazio Lengoaia kaleratzea

Rust 1.62 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" pakete-kudeatzaileak "gehitu" komandoa eskaintzen du, Cargo.toml manifestuan mendekotasun berriak gehitzeko edo lehendik dauden mendekotasunak komando-lerrotik aldatzeko aukera ematen duena. Komandoak ezaugarri eta bertsio indibidualak zehazteko aukera ematen du, adibidez: cargo add serde β€”eginbideak derive cargo add nom@5
  • "#[default(Lehenetsia)]" erabiltzeko gaitasuna gehitu da, zeinetan aukera lehenetsia "#[lehenetsia]" atributua erabiliz definitzen den. #[eratorri(Lehenetsia)] enum Agian { #[lehenetsia] Ezer, Zerbait(T), }
  • Linux plataforman, Mutex sinkronizazio-mekanismoaren inplementazio trinkoagoa eta azkarragoa erabiltzen da, Linux kernelak emandako futexeen erabileran oinarrituta. Lehen erabilitako pthreads liburutegian oinarritutako inplementazioa ez bezala, bertsio berriak 5 byte baino ez ditu erabiltzen Mutex egoera gordetzeko 40. Era berean, Condvar eta RwLock blokeo mekanismoak futexera transferitu dira.
  • X86_64-unknown-none xede-plataformarako bigarren laguntza-maila bat ezarri da, sistema eragilerik gabe funtziona dezaketen fitxategi exekutagarriak sortzeko diseinatuta. Adibidez, zehaztutako xede-plataforma erabil daiteke nukleoaren osagaiak idaztean. Bigarren laguntza-mailak muntaketa-bermea dakar.
  • Hirugarren laguntza-maila aarch64-pc-windows-gnullvm eta x86_64-pc-windows-gnullvm plataformetarako inplementatu da. Hirugarren mailak oinarrizko euskarria dakar, baina proba automatizatu gabe, eraikuntza ofizialak argitaratu edo kodea eraiki daitekeen egiaztatu gabe.
  • APIaren zati berri bat egonkorren kategoriara eraman da, eta ezaugarrien metodoak eta inplementazioak egonkortu dira:
    • bool::gero_batzuk
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lerroak
    • windows::CommandExt::raw_arg
    • inplik AssertUnwindSafe-ren balio lehenetsia
    • Bertatik > Rc-rako
    • Bertatik > Arkurako<[u8]>
    • EncodeWide-rako FusedIterator

    Iturria: opennet.ru

Gehitu iruzkin berria