Rust 1.43 programmeerimiskeele väljalase

avaldatud süsteemi programmeerimiskeele väljalase Rooste 1.43, 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 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:

  • Makrod võimaldavad kasutada elementide fragmente, et muuta need tunnuste (tunnus), rakenduste (impl) või väliste plokkide koodiks. Näiteks:

    makro_reeglid! mac_trait {
    ($i:item) => {
    tunnus T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Viib põlvkonnani:

    tunnus T {
    fn foo() {}
    }

  • Täiustatud primitiivide, viidete ja kahendoperatsioonide tüübituvastus.
    Näiteks saab nüüd kompileerida järgmist koodi, mis varem tõrke põhjustas (Rust määrab nüüd õigesti, et 0.0 ja &0.0 peavad olema tüübiga f32):

    olgu n: f32 = 0.0 + &0.0;

  • Cargosse on lisatud uus keskkonnamuutuja CARGO_BIN_EXE_{name}, mis määratakse integratsioonitestide koostamisel ja võimaldab määrata paketi jaotises “[[bin]]” määratletud käivitatava faili täieliku tee.
  • Kui lausetes on lubatud kasutada atribuute nagu "#[cfg()]".
  • Teek annab võimaluse kasutada seotud konstante otse täisarvude ja murdosa tüüpide jaoks, ilma moodulit importimata. Näiteks võite kohe kirjutada u32::MAX või f32::NAN, määramata eelnevalt "use std::u32" ja "use std::f32".
  • Lisatud uus moodul primitiivne, mis ekspordib uuesti Rusti primitiivsed tüübid, näiteks kui on vaja kirjutada makro ja veenduda, et tüüpe ei peideta.
  • Uus osa API-sid on üle viidud stabiilsesse kategooriasse, sealhulgas stabiliseeritud

    Üks kord::on_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 ja
    iter::once_with.

Allikas: opennet.ru

Lisa kommentaar