Rust 1.44 programmeerimiskeele väljalase

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

Uue väljalaske teate tekstis lõid Rusti arendajad poliitikasse ja keeldusid selgelt avaldamast täielikku ülevaadet Rust 1.44 muudatustest, mis on märk solidaarsusest politseivägivalla vastu protestijatega, viidates sellele, et see teema on olulisem. kui tehniliste teadmiste vahetamine. Põhiline uuendused:

  • Cargo paketihaldur integreerib käsu "lastipuu", mis kuvab puutaolise sõltuvusgraafiku. Lisatud on ka valik “—dublikaadid” (“lastipuu -d”), mis võimaldab hinnata sõltuvusi sama paketi erinevates versioonides.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── ammoniaak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── logi v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── logi v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── ühetäheline versioon 1.4.2
    │ │ │ [järgu sõltuvused] │ │ │ └── versiooni_kontroll v0.1.5
    ...

  • Rakenduste puhul, mis ei ole seotud std-ga ("#![no_std]"), rakendatakse asünkroonsete programmeerimistehnikate tugi funktsiooni "async", asünkroonse liikumise { ... } ploki ja operaatori ".await" alusel, mis lihtsustada mitteblokeerivate töötlejate peamise käsuvoo kirjutamist.
  • Parserisse on lisatud laiendatava mooduli hierarhia määratlusskeemi tugi. Näiteks järgnev konstruktsioon ei tekita viga vaatamata mooduli "foo/bar/baz.rs" tegelikule puudumisele (konstrukt on endiselt semantiliselt vigane ja võib põhjustada tõrke, kuid muudatusi saab näha ja sõeluda aadressil makro- ja tingimusliku kompileerimise tase):

    #[cfg(FALSE)] mod foo {
    mod bar {
    mod baz;
    }
    }

  • Rustc-kompilaator on lisanud võimaluse kasutada inkrementaalses režiimis lippu "-C codegen-units". Funktsiooni catch_unwind rakendamine on ümber töötatud nii, et see ei mõjuta jõudlust, kui lahtikerimisprotsess on keelatud ja erandeid ei tehta.
  • 64. taseme tugi on pakutud platvormidele aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos ja x64_XNUMX-apple-tvos. Kolmas tase hõlmab põhituge, kuid ilma automaatse testimise ja ametlike ehituste avaldamiseta.
  • Uus osa API-sid on üle viidud stabiilsesse kategooriasse, sealhulgas stabiliseeritud
    PathBuf::with_capacity,
    PathBuf::maht,
    PathBuf::selge,
    PathBuf::reserv,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Paigutus::joondumine,
    Paigutus::pad_to_align,
    Paigutus::massiivi ja
    Paigutus::laienda.

  • Standardteegi laiendatud funktsioonid:
    • Lisatud spetsiaalne variant "vec![]", mis kajastub otseselt Vec::new()-s, võimaldades konstantide asemel kontekstis kasutada "vec![]".
    • ::Infallible teisendamiseks on lisatud tunnuse rakendus (impl). Hash.
    • OsString rakendab nutikaid viiteid DerefMut и IndexMut, tagastab "&mut OsStr".
    • Lisatud tugi Unicode 13-le.
    • Rakendatud stringis Alates<&mut str>.
    • IoSlice rakendab omadust Kopeeri.
    • Vec rakendatud Alates<[T; N]>.
    • proc_macro::LexError rakendab fmt::Display ja Error.
  • Atribuut "const", mis määrab, kas seda saab konstantide asemel kasutada mis tahes kontekstis, kasutatakse kõigi täisarvu tüüpide meetodites from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes ja to_ne_bytes.
  • Lisatud tugi staatiliste teekide genereerimiseks ".a"-vormingus ".lib" asemel GNU platvormidel Windowsis.
  • LLVM-i miinimumnõuded on tõstetud LLVM-i versioonile 8.

Allikas: opennet.ru

Lisa kommentaar