Programavimo kalbos Rust 2021 (1.56) leidimas

Paskelbtas „Mozilla“ projekto įkurtos, bet dabar nepriklausomos ne pelno organizacijos „Rust Foundation“ globojamos sistemos programavimo kalbos „Rust 1.56“ leidimas. Be įprasto versijos numerio, leidimas taip pat vadinamas Rust 2021 ir žymi per pastaruosius trejus metus pasiūlytų pakeitimų stabilizavimą. „Rust 2021“ taip pat bus pagrindas funkcionalumui didinti per ateinančius trejus metus, panašiai kaip „Rust 2018“ išleidimas tapo kalbos plėtros pagrindu per pastaruosius trejus metus.

Siekdami išlaikyti suderinamumą, kūrėjai savo programose gali naudoti etiketes „2015“, „2018“ ir „2021“, leidžiančias programas susieti su kalbos būsenos skilčiais, atitinkančiais pasirinktus „Rust“ leidimus. Leidimai buvo pristatyti siekiant atskirti nesuderinamus pakeitimus ir yra sukonfigūruoti krovinių paketų metaduomenyse per lauką „leidimas“ skiltyje „[paketas]“. Pavyzdžiui, „2018“ leidimas apima funkcionalumą, stabilizuotą nuo 2018 m. pabaigos, taip pat visus kitus pakeitimus, kurie nepažeidžia suderinamumo. Į 2021 m. leidimą papildomai įtrauktos sąveikumą pažeidžiančios funkcijos, pasiūlytos dabartinėje 1.56 versijos versijoje ir patvirtintos naudoti ateityje. Be pačios kalbos, redaktoriai taip pat atsižvelgia į įrankių ir dokumentacijos būklę.

Pagrindiniai Rust 2021 užregistruoti nesuderinamumai:

  • Atskiras fiksavimas uždarytuose objektuose – dabar uždarymai gali užfiksuoti atskirų laukų pavadinimus, o ne visą identifikatorių. Pavyzdžiui, "|| ax + 1“ užfiksuos tik „ax“, o ne „a“.
  • Masyvų IntoIterator bruožas: array.into_iter() leidžia kartoti masyvo elementus pagal reikšmes, o ne pagal nuorodas.
  • „|“ išraiškų apdorojimas buvo pakeistas makro_taisyklėse (Bulio ARBA) šablonuose – „:pat“ specifikacija atitiktyse dabar atsižvelgia į „A | B".
  • Krovinių paketo tvarkytuvė pagal numatytuosius nustatymus apima antrąją funkcijų sprendiklio versiją, kurios palaikymas pasirodė Rust 1.51.
  • TryFrom, TryInto ir FromIterator bruožai buvo įtraukti į preliudijos standartinį bibliotekos modulį.
  • Panic!(..) ir assert!(expr, ..) makrokomandos dabar visada naudoja format_args!(..) eilutėms formatuoti, panašiai kaip println!().
  • Išraiškos ident#, ident»..." ir ident'...' yra rezervuotos kalbos sintaksėje.
  • Bare_trait_objects ir ellipsis_inclusive_range_patterns įspėjimai perkelti į klaidas.

Nauja Rust 1.56:

  • Cargo.toml skiltyje „[paketas]“ buvo pridėtas rūdžių versijos laukas, per kurį galite nustatyti mažiausiai palaikomą dėžės paketo „Rust“ versiją. Jei esama versija neatitinka nurodyto parametro, „Cargo“ nustos veikti su klaidos pranešimu.
  • Suderinant šabloną naudojant „binding @ pattern“ išraiškas, teikiamas papildomų susiejimo nurodymų palaikymas (pvz., „let matrix @ Matrix { row_len, .. } = get_matrix();“).
  • Nauja API dalis buvo perkelta į stabiliųjų kategoriją, įskaitant stabilizuotus bruožų metodus ir įgyvendinimą:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Sen.::susitraukti_į
    • String::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Funkcijose naudojamas atributas „const“, kuris nustato galimybę naudoti bet kuriame kontekste vietoj konstantų
    • std::mem::transmute
    • [T]::pirma
    • [T]::padalytas_pirmas
    • [T]::paskutinė
    • [T]::padalytas_paskutinis
  • Kompiliatorius buvo perjungtas į LLVM 13 versiją.
  • Antrasis palaikymo lygis įdiegtas platformoms aarch64-apple-ios-sim, o trečiasis - powerpc-unknown-freebsd ir riscv32imc-esp-espidf platformoms. Trečiasis lygis apima pagrindinį palaikymą, bet be automatinio testavimo, oficialių versijų paskelbimo ir kodo kūrimo tinkamumo tikrinimo.

Prisiminkite, kad „Rust“ yra orientuota į atminties saugą, užtikrina automatinį atminties valdymą ir suteikia galimybę pasiekti didelį užduočių vykdymo 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.

Šaltinis: opennet.ru

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