Rust 1.34 programmeerimiskeele väljalase

võttis aset süsteemi programmeerimiskeele väljalase Rooste 1.34mille on välja töötanud Mozilla projekt. Keel keskendub turvalisele mäluhaldusele, pakub automaatset mäluhaldust ja pakub vahendeid töö kõrge paralleelsuse saavutamiseks, vältides samal ajal prügikoguja ja käitusaja kasutamist.

Rusti automaatne mäluhaldus säästab arendajat osutitega manipuleerimisest ja kaitseb madala tasemega mäluga manipuleerimisest tulenevate probleemide eest, nagu mälualale juurdepääs pärast selle vabastamist, nullviidate viitamise tühistamine, puhvri ülekoormus jne. Teekide levitamiseks, komplekteerimise tagamiseks ja sõltuvuste haldamiseks töötab projekt välja paketihalduri last, mis võimaldab hankida programmi jaoks vajalikud teegid ühe klõpsuga. Hoidlat toetatakse teekide hostimiseks crates.io.

Kõik uuendused:

  • Cargo paketihaldurisse on lisatud tööriistad alternatiivsete pakiregistritega töötamiseks, mis võivad koos eksisteerida avaliku registriga crates.io. Näiteks saavad erarakenduste arendajad nüüd kasutada oma privaatset registrit, mida saab kasutada Cargo.tomlis sõltuvuste loetlemisel, ja kasutada oma toodete jaoks crates.io-ga sarnast versioonimudelit, samuti viidata nii crates.io-le kui ka crates.io-le sõltuvustes. oma registrisse.

    Väliste registrite lisamiseks failile .cargo/config (asub $HOME või paketikataloogis)
    ette nähtud Jaotises „[registrid]” ja välise registri kasutamiseks ilmus Cargo.toml iga sõltuvuse kirjelduses suvand „register”. Täiendava registriga ühenduse loomiseks asetage autentimisluba faili ~/.cargo/credentials ja käivitage käsk
    "cargo login --registry=my-register" ja paketi avaldamiseks -
    "lasti avaldamine --register=minu-register";

  • Lisatud täielik tugi "?" testides doktorid, mis võimaldab kasutada dokumentatsioonis toodud näidete koodi testidena. Varem operaator
    "?" saab kasutada vigade käsitlemiseks testi täitmise ajal ainult siis, kui oli olemas funktsioon "fn main()" või funktsioonides "#[test]";

  • Protseduurimakrodega määratletud kohandatud atribuutides kindlustatud võimalus kasutada suvalisi märkide komplekte ("#[attr($tokens)]", "#[attr[$tokens]] ja #[attr{$tokens}]"). Varem sai elemente määrata ainult puu-/rekursiivsel kujul, kasutades stringiliteraale, näiteks "#[foo(bar, baz(quux, foo = "bar"))]", kuid nüüd on võimalik kasutada enumeid ('# [vahemik(0. .10)]') ja konstruktsioonid nagu "#[bound(T: MyTrait)]";
  • Stabiliseeritud tunnused (omadus) ProoviFrom и proovima, mis võimaldavad teha tüübikonversioone koos veakäsitlusega. Näiteks täisarvu tüüpidega meetodid nagu from_be_bytes kasutavad sisendina massiive, kuid andmed on sageli tüüpi Slice ning massiivide ja lõikude vahel teisendamine on problemaatiline käsitsi. Uute tunnustega saab seda toimingut sooritada käigu pealt, kutsudes välja .try_into(), näiteks "let num = u32::from_be_bytes(slice.try_into()?)". Alati õnnestunud konversioonide jaoks on lisatud veatüüp (nt tüübist u8 kuni u32) Eksimatu, mis võimaldab teil läbipaistvalt kasutada
    TryFrom kõigi olemasolevate "From" rakenduste jaoks;

  • Funktsioon on aegunud CommandExt::before_exec, mis võimaldas käitleja käivitada enne exec käivitamist, mis jooksis alamprotsessi kontekstis forked pärast fork() kutset. Sellistel tingimustel võivad mõned vanemprotsessi ressursid, nagu failikirjeldused ja kaardistatud mälupiirkonnad, dubleerida, mis võib põhjustada määratlemata käitumist ja teekide ebaõiget tööd.
    Enne_exec asemel on soovitatav kasutada unsafe funktsiooni CommandExt::pre_exec.

  • Märgiga ja märgita aatomtäisarvud vahemikus 8 kuni 64 bitti on stabiliseeritud (näiteks AtomicU8), samuti allkirjastatud tüübid NonZeroI[8|16|32|64|128].
  • API uus osa on viidud kategooriasse stabiilne, sealhulgas meetodid Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add |sub] ja SystemTime on stabiliseeritud ::checked_[add|sub]. Funktsioonid iter::from_fn ja iter::järglased on stabiliseeritud;
  • Kõikide täisarvutüüpide puhul on rakendatud meetodid checked_pow, saturating_pow, wrapping_pow ja overflowing_pow;
  • Lisati võimalus optimeerimise lubamiseks linkimisetapis, määrates ehitusvaliku "-C linker-plugin-lto".

Allikas: opennet.ru

Lisa kommentaar