Rust 1.44 Programazio Lengoaia kaleratzea

argitaratua sistemaren programazio lengoaia kaleratzea Herdoila 1.44, Mozilla proiektuak sortua. Lengoaiak memoriaren segurtasunean oinarritzen da, memoria automatikoki kudeatzen du eta zereginen paralelismo handia lortzeko tresnak eskaintzen ditu zabor-biltzailerik erabili gabe eta runtime.

Rust-en memoria-kudeaketa automatikoak akatsak ezabatzen ditu erakusleak manipulatzean eta maila baxuko memoriaren manipulaziotik sortzen diren arazoetatik babesten du, hala nola, memoria-eskualde batera atzitzea askatu ondoren, erakusle nuluen deserreferentziak, buffer gainditzeak, etab. Liburutegiak banatzeko, muntaia ziurtatzeko eta proiektuaren mendekotasunak kudeatzeko pakete-kudeatzailea garatzen ari da. Zama, programarako beharrezkoak diren liburutegiak klik bakarrean eskuratu ahal izateko. Biltegi bat onartzen da liburutegiak ostatatzeko kaxak.io.

Argitalpen berriaren iragarpenaren testuan, Rust-eko garatzaileek politikan inplikatu ziren eta Rust 1.44-ko aldaketen berrikuspen osoa argitaratzeari uko egin zioten poliziaren indarkeriaren aurkako manifestariekiko elkartasun seinale gisa, gai hau garrantzitsuagoa dela adieraziz. ezagutza teknikoen trukea baino. Oinarrizkoa berrikuntzak:

  • Cargo paketeen kudeatzaileak "karga zuhaitza" komandoa integratzen du, zuhaitz-itxurako mendekotasun grafikoa bistaratzen duena. Gainera, “—bikoiztuak” aukera gehitu da (“karga-zuhaitza -d”), pakete beraren bertsio ezberdinetako mendekotasunak ebaluatzeko aukera ematen duena.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amoniako 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
    │ │ │ [eraiki-menpekotasunak] │ │ │ └── version_check v0.1.5
    ...

  • Std batera lotzen ez diren aplikazioetarako ("#![no_std]"), programazio asinkrono-tekniketarako euskarria ezartzen da "async" funtzioan, mugimendu asinkronoan { ... } blokean eta ".wait" eragilean oinarrituta. blokeatzen ez diren kudeatzaileen idazketa erraztu komando-fluxu nagusia.
  • Modulu hedagarrien hierarkia definizio-eskema baten laguntza gehitu da analizatzaileari. Adibidez, hurrengo eraikuntzak ez du errorerik sortuko, "foo/bar/baz.rs" modulua ez dagoen arren (eraikuntza oraindik semantikoki baliogabea da eta errore bat sor dezake, baina aldaketak hemen ikusi eta analizatu daitezke). makro eta baldintzapeko konpilazio maila):

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

  • Rustc konpilatzaileak "-C codegen-units" bandera modu inkrementalean erabiltzeko gaitasuna gehitu du. Catch_unwind-en inplementazioa berraztertu da, errendimenduan eraginik izan ez dezan, desegiteko prozesua desgaituta badago eta salbuespenik jartzen ez bada.
  • 64. mailako laguntza eman da aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos eta x64_XNUMX-apple-tvos plataformetarako. Hirugarren mailak oinarrizko euskarria dakar, baina proba automatizaturik eta eraikuntza ofizialen argitalpenik gabe.
  • APIen zati berri bat egonkor kategoriara eraman da, egonkortuta barne
    PathBuf::with_capacity,
    PathBuf::ahalmena,
    PathBuf::garbitu,
    PathBuf::erreserba,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Diseinua::align_to,
    Diseinua::pad_to_align,
    Layout::array eta
    Diseinua::hedatu.

  • Liburutegi estandarraren funtzio hedatuak:
    • Vec::new()-en zuzenean islatzen den "vec![]" aldaera berezi bat gehitu da, "vec![]" testuinguruan konstanteen ordez erabiltzeko aukera emanez.
    • Ezaugarriaren inplementazio bat (impl) gehitu da bihurtzeko::Infallible hash.
    • OsString-ek erakusle adimendunak ezartzen ditu DerefMut и IndexMut, "&mut OsStr" itzuliz.
    • Unicode 13rako euskarria gehitu da.
    • String-en ezarrita Nortik<&mut str>.
    • IoSlicek ezaugarria inplementatzen du Kopiatu.
    • Bek inplementatu From<[T; N]>.
    • proc_macro::LexError fmt::Bistaratzea eta Error inplementatzen ditu.
  • Konstanteetan ordez edozein testuingurutan erabil daitekeen ala ez zehazten duen “const” atributua from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes eta to_ne_bytes metodoetan erabiltzen da osoko mota guztietarako.
  • Windows-eko GNU plataformetarako ".a" formatuan ".lib"-en ordez liburutegi estatikoak sortzeko laguntza gehitu da.
  • LLVMrako gutxieneko eskakizunak LLVM 8. bertsiora igo dira.

Iturria: opennet.ru

Gehitu iruzkin berria