Rust 1.44 Ukukhishwa Kolimi Lokuhlela

eshicilelwe ukukhululwa kolimi lokuhlela uhlelo Ukugqwala 1.44, eyasungulwa iphrojekthi ye-Mozilla. Ulimi lugxile ekuphepheni kwenkumbulo, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi luhlinzeka ngamathuluzi okuthola ukufana kwemisebenzi ephezulu ngaphandle kokusebenzisa umqoqi kadoti kanye isikhathi sokuqalisa.

Ukuphathwa kwenkumbulo okuzenzakalelayo ka-Rust kuqeda amaphutha lapho kushintshwa izikhombi futhi kuvikela ezinkingeni ezivela ekukhohlisweni kwenkumbulo yezinga eliphansi, njengokufinyelela endaweni yenkumbulo ngemva kokuba ikhululiwe, i-null pointer dereferences, i-buffer overruns, njll. Umphathi wephakheji uyathuthukiswa ukuze asabalalise imitapo yolwazi, aqinisekise ukuhlanganisa nokuphatha ukuncika ngephrojekthi. cargo, okukuvumela ukuthi uthole amalabhulali adingekayo ohlelweni ngokuchofoza okukodwa. Indawo yokugcina isekelwa ukuze isingathe amalabhulali amakhreyithi.io.

Embhalweni wesimemezelo sokukhululwa okusha, abathuthukisi be-Rust bahileleka kwezombangazwe futhi benqaba ngokuqondile ukushicilela ukubuyekezwa okugcwele kwezinguquko ku-Rust 1.44 njengesibonakaliso sobumbano nababhikishi ngokumelene nobudlova bamaphoyisa, okubonisa ukuthi le ndaba ibaluleke kakhulu. kunokushintshana kolwazi lobuchwepheshe. Okuyisisekelo emisha:

  • Umphathi wephakheji le-Cargo uhlanganisa umyalo "wesihlahla sempahla", obonisa igrafu yokuncika efana nesihlahla. Okunye okungeziwe inketho ethi “—duplicates” (“cargo tree -d”), ekuvumela ukuthi uhlole ukuncika kuzinguqulo ezihlukene zephakheji efanayo.

    mdbook v0.3.2 (/Abasebenzisi/src/rust/mdbook)
    ├── ammonia v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── log v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [ukuncika kwesakhiwo] │ │ │ └── version_check v0.1.5
    ...

  • Kuzinhlelo zokusebenza ezingaboshelwe ku-std ("#![no_std]"), ukusekela kwamasu okuhlela asynchronous kuqalwa ngokususelwe kumsebenzi othi "async", umnyakazo we-async { ... } block kanye no-opharetha othi ".await", okuyinto yenza lula ukubhala izibambi ezingavimbeli ukugeleza komyalo oyinhloko.
  • Usekelo lwesikimu sencazelo yemojuli enwetshiwe yengezwe kumhlahleli. Isibonelo, ukwakhiwa okulandelayo ngeke kuveze iphutha, naphezu kokungabikho kwangempela kwemojula ethi "foo/bar/baz.rs" (isakhiwo asivumelekile ngokwesemantiki futhi singadala iphutha, kodwa izinguquko zingabonakala futhi zihlukaniswe kokuthi Ileveli yokuhlanganisa enkulu nemibandela):

    #[cfg(FALSE)] i-mod foo {
    ibha yemodi {
    i-mod baz;
    }
    }

  • I-rustc compiler yengeze amandla okusebenzisa ifulegi elithi “-C codegen-units” kumodi yokwengeza. Ukuqaliswa kwe-catch_unwind kusetshenzwe kabusha ukuze kungabi nomthelela wokusebenza uma inqubo yokuhlehlisa ivaliwe futhi akukho okuhlukile okwenziwayo.
  • Usekelo lweleveli 64 lunikelwe i-aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos kanye ne-x64_XNUMX-apple-tvos platform. Izinga lesithathu libandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo nokushicilelwa kwezakhiwo ezisemthethweni.
  • Ingxenye entsha yama-API idluliselwe esigabeni esizinzile, okuhlanganisa nokuzinza
    PathBuf::with_capacity,
    I-PathBuf ::umthamo,
    I-PathBuf ::cacile,
    I-PathBuf ::gcina,
    I-PathBuf::gcina_impela,
    I-PathBuf::shrink_to_fit,
    {f32|f64}::ku_kungahloliwe,
    Isakhiwo::qondanisa_ku,
    Isakhiwo::phedi_ukuze_uqondanise,
    Isakhiwo::uhlu kanye
    Isakhiwo::nweba.

  • Imisebenzi enwetshiwe yelabhulali ejwayelekile:
    • Kwengezwe okuhlukile okukhethekile kokuthi "vec![]" okubonakala ngokuqondile kokuthi Vec::new(), okuvumela okuthi "vec![]" ukuthi kusetshenziswe umongo esikhundleni sokuhlanganisa.
    • Ukuqaliswa (i-impl) kwesici kungeziwe ukuze kuguqulwe::Akunaphutha Hash.
    • I-OSString isebenzisa izikhombi ezihlakaniphile I-DerefMut и I-IndexMut, ebuyisela "&mut OsStr".
    • Kwengezwe ukusekelwa kwe-Unicode 13.
    • Kusetshenziswe ku-String Kusuka ku-<&mut str>.
    • I-IoSlice isebenzisa isici Kopisha.
    • I-Vec yenziwe Kusukela ku-<[T; N]>.
    • I-proc_macro::I-LexError isebenzisa i-fmt::I-Display kanye nephutha.
  • Isibaluli esithi “const”, esinquma ukuthi kungenzeka sisetshenziswe kunoma imuphi umongo esikhundleni sama-constants, sisetshenziswa kokuthi from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes kanye to_ne_bytes izindlela zazo zonke izinhlobo.
  • Ukwesekwa okwengeziwe kokukhiqiza amalabhulali amile ngefomethi ethi ".a" esikhundleni sokuthi ".lib" yezinkundla ze-GNU ku-Windows.
  • Izidingo ezincane ze-LLVM ziphakanyiselwe kunguqulo 8 ye-LLVM.

Source: opennet.ru

Engeza amazwana