Rust 1.46 programmeerimiskeele väljalase

avaldatud süsteemi programmeerimiskeele versioon 1.46 Rust, mille asutas Mozilla projekt. Keel keskendub mälu ohutusele, pakub automaatset mäluhaldust ja pakub tööriistu ülesannete suure paralleelsuse saavutamiseks ilma prügikogujat ja runtime.

Rusti automaatne mäluhaldus välistab osutitega manipuleerimisel tekkivad vead ja kaitseb madala tasemega mäluga manipuleerimisest tulenevate probleemide eest, nagu mälupiirkonnale juurdepääs pärast selle vabastamist, null-osuti viited, puhvri ületamised jne. Arendatakse paketihaldurit teekide levitamiseks, komplekteerimise tagamiseks ja sõltuvuste haldamiseks projekti kaudu. last, mis võimaldab hankida programmi jaoks vajalikud teegid ühe klõpsuga. Hoidlat toetatakse teekide hostimiseks crates.io.

Kõik uuendused:

  • Laiendatud on avaldise “const fn” abil defineeritud funktsioonide võimalusi, mida ei saa nimetada mitte ainult tavalisteks funktsioonideks, vaid kasutada konstantide asemel igas kontekstis. Neid funktsioone arvutatakse kompileerimise ajal, mitte käitusajal, seega kehtivad neile teatud piirangud, näiteks võimalus lugeda ainult konstantidest.

    Uus versioon eemaldab keelu kasutada sellistes funktsioonides Boole'i ​​operaatoreid ("&&" ja "||") ning lubab kasutada konstruktsioone "if", "if let", "match",
    "while", "while let" ja "loop" ning annab ka võimaluse teisendada viiludeks (slice, dünaamilised massiivid), kasutades väljendit "&[T]". Nende funktsioonide kasutamine funktsioonides "const fn" võimaldab teil viia mõned ressursimahukad toimingud kompileerimisfaasi. Näiteks võimaldab "const-sha1" rakendamine arvutada kompileerimise ajal SHA-1 räsi, mis kiirendab Rusti WinRT sidumist peaaegu 40 korda.

  • Veateadete informatiivsemaks muutmiseks on stabiliseeritud atribuudi „#[track_caller]” tugi, mis on kasulik selliste funktsioonide puhul nagu lahtipakkimine, mis võib tüüpide vale kasutamise korral põhjustada paanikat. Määratud atribuuti kasutab paanikakäsitleja helistaja asukoha printimiseks veateates.
  • Atribuuti “const”, mis määrab võimaluse kasutada seda konstantide asemel mis tahes kontekstis, kasutatakse std::mem::forget meetodis.
  • API uus osa on viidud stabiilsesse kategooriasse, sealhulgas stabiliseeritud Option::zip ja vec::Drain::as_slice.
  • Pakendihalduris Cargo lisatud paketi koostamisel määratud uute keskkonnamuutujate tugi: CARGO_BIN_NAME (saadud käivitatava faili nimi), CARGO_CRATE_NAME (paketi nimi), CARGO_PKG_LICENSE (manifestis määratud litsents), CARGO_PKG_LICENSE_FILE (litsentsifaili tee).

Allikas: opennet.ru

Lisa kommentaar