Rust 1.52 programavimo kalbos leidimas

Paskelbtas „Mozilla“ projekto įkurtos, bet dabar nepriklausomos ne pelno organizacijos „Rust Foundation“ globojamos sistemos programavimo kalbos „Rust 1.52“ leidimas. Kalba orientuota į atminties saugą, suteikia automatinį atminties valdymą ir suteikia priemones pasiekti aukštą užduočių lygiagretumą nenaudojant šiukšlių rinktuvo ar vykdymo laiko (vykdymo laikas sumažinamas iki pagrindinės standartinės bibliotekos inicijavimo ir priežiūros).

„Rust“ automatinis atminties valdymas pašalina klaidas manipuliuojant rodyklėmis ir apsaugo nuo problemų, kylančių dėl žemo lygio atminties manipuliavimo, pvz., prieigos prie atminties srities, kai ji buvo išlaisvinta, nulinių rodyklės nuorodų, buferio viršijimo ir kt. Bibliotekoms platinti, surinkimui užtikrinti ir priklausomybėms valdyti projekte kuriama Krovinių paketų tvarkyklė. Crates.io saugykla palaikoma bibliotekų prieglobai.

Pagrindinės naujovės:

  • Panaikintas komandų „krovinio patikrinimas“ ir „krovinio klipavimas“ vykdymo tvarkos įpareigojimai. Anksčiau iškvietus „cargo clippy“ po „krovinio patikrinimo“, „clippy“ programa (linter) nebuvo paleista dėl šių tikrinimo režimų talpyklos atskyrimo trūkumo. Dabar ši problema išspręsta ir tvarka, kuria vadinasi „krovinio klipas“ ir „krovinio patikrinimas“, nebeturi reikšmės.
  • Nauja API dalis buvo perkelta į stabilią kategoriją, įskaitant šiuos metodus, kurie buvo stabilizuoti:
    • Argumentai::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_skaitmens
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::padalytas_vieną kartą
  • Atributas „const“, kuris nustato galimybę jį naudoti bet kuriame kontekste, o ne konstantose, naudojamas metoduose:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_didžiosios raidės
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_didžiosios raidės
    • u8::to_ascii_mažosios raidės
    • u8::eq_ignore_ascii_case
  • Pridėtas pūkelių patikrinimas unsafe_op_in_unsafe_fn, siekiant nustatyti, ar nesaugus kodas, naudojamas nesaugiose funkcijose, yra įrėmintas nesaugiais blokais.
  • Leidžiama į masyvus nukreipti kintamus rodmenis į rodyklių į masyvo elemento tipą formą. let mut x: [naudoti; 2] = [0, 0]; tegul p = &mut x kaip *mut use; tegul p = &mut x kaip *const use;
  • 9 nauji čekiai buvo pridėti prie clippy (linter).
  • Krovinių paketų tvarkyklė dabar palaiko paketų JSON lauką „manifest_path“. Pridėtas palaikymas nurodant licencijos informaciją SPDX 3.11 formatu į crates.io saugyklą.
  • Vykdant testus leidžiama nurodyti kelis filtrus, pavyzdžiui, paleidus "krovinio testas - foo baras" bus vykdomi visi testai, atitinkantys kaukes "foo" ir "bar".
  • Numatytasis LLVM įrankių rinkinys buvo atnaujintas į LLVM 12.
  • Trečiasis paramos lygis įdiegtas platformoms s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl ir powerpc-unknown-openbsd. Trečiasis lygis apima pagrindinį palaikymą, bet be automatinio testavimo, oficialių versijų paskelbimo ar patikrinimo, ar kodą galima sukurti.

Šaltinis: opennet.ru

Добавить комментарий