Rust 1.66 forritunarmálsútgáfa

Útgáfa Rust 1.66 almennt forritunarmálsins, stofnað af Mozilla verkefninu, en nú þróað undir merkjum óháðu sjálfseignarstofnunarinnar Rust Foundation, hefur verið gefin út. Tungumálið leggur áherslu á minnisöryggi og veitir leiðina til að ná mikilli samhliða vinnu á sama tíma og forðast notkun á sorphirðu og keyrslutíma (keyrslutími minnkar í grunnuppsetningu og viðhald á venjulegu bókasafni).

Minni meðhöndlunaraðferðir Rust bjarga þróunaraðilanum frá villum við meðhöndlun ábendinga og vernda gegn vandamálum sem koma upp vegna minnis meðhöndlunar á lágu stigi, eins og aðgangur að minnissvæði eftir að það hefur verið losað, frávísun núllbenda, offramkeyrsla á biðminni o.s.frv. Til að dreifa bókasöfnum, útvega smíði og stjórna ósjálfstæði, þróar verkefnið farmpakkastjórann. Crates.io geymslan er studd til að hýsa bókasöfn.

Minni öryggi er veitt í Rust á þýðingu tíma með tilvísun athugun, halda utan um eignarhald hlut, halda utan um líftíma hlut (umfang) og meta réttmæti minni aðgangs meðan kóða er keyrt. Ryð veitir einnig vernd gegn heiltöluflæði, krefst skyldubundinnar frumstillingar breytugilda fyrir notkun, meðhöndlar villur betur í stöðluðu bókasafni, beitir hugmyndinni um óbreytanlegar tilvísanir og breytur sjálfgefið, býður upp á sterka truflanir innsláttar til að lágmarka rökfræðilegar villur.

Helstu nýjungar:

  • Í upptalningum með heiltöluframsetningum (eigindið "#[repr(Int)]" er skýr vísbending um aðgreiningarefnið (afbrigðisnúmer í upptalningunni) leyfilegt, jafnvel þótt upptalningin innihaldi reiti. #[repr(u8)] enum Foo { A(u8), # discriminant 0 B(i8), # discriminant 1 C(bool) = 42, # discriminant 42 }
  • Bætt við aðgerðarkjarna::hint::black_box sem einfaldlega skilar mótteknu gildi. Þar sem þýðandinn heldur að þessi aðgerð sé að gera eitthvað, er hægt að nota black_box aðgerðina til að slökkva á hagræðingu þýðanda fyrir lykkjur þegar frammistöðuprófun kóða er framkvæmd eða þegar myndaður vélkóði er skoðaður (svo að þýðandinn telji kóðann ekki ónotaðan og fjarlægi hann). Til dæmis, í dæminu hér að neðan, kemur black_box(v.as_ptr()) í veg fyrir að þýðandinn haldi að vektorinn v sé ekki notaður. notaðu std::hint::black_box; fn push_cap(v: &mut Vec) { fyrir i í 0..4 { v.push(i); black_box(v.as_ptr()); } }
  • „cargo“ pakkastjórinn býður upp á „remove“ skipunina, sem gerir þér kleift að fjarlægja ósjálfstæði úr Cargo.toml upplýsingaskránni af skipanalínunni.
  • Nýr hluti af API hefur verið færður í flokkinn stöðugt, þar með talið aðferðir og útfærslur á eiginleikum hafa verið stöðugar:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{first, last, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • Bættu við AsFd útfærslum fyrir stdio læsa gerðir þegar WASI er notað.
    • impl TryFrom > fyrir Box<[T; N]>
    • kjarni::vísbending::svartur_kassi
    • Lengd::try_from_secs_{f32,f64}
    • Valkostur :: unzip
    • std::os::fd
  • Sviðin "..X" og "..=X" eru leyfð í sniðmátum.
  • Þegar framhlið rustc þýðandans og LLVM bakendans eru byggðir eru LTO (Link Time Optimization) og BOLT (Binary Optimization and Layout Tool) hagræðingarhamir notaðir til að auka afköst kóðans sem myndast og draga úr minnisnotkun.
  • Innleiddur stuðningur á stigi 5 fyrir armv5te-none-eabi og thumbvXNUMXte-none-eabi palla. Þriðja stigið felur í sér grunnstuðning, en án sjálfvirkrar prófunar, birtingu opinberra smíða og athuga getu til að byggja kóðann.
  • Bætti við stuðningi við að tengja við macOS almenn bókasöfn.

Að auki getum við tekið eftir því að framhlið þýðanda Rust tungumálsins (gccrs) er innifalið í GCC kóðagrunninum. Framhliðin er innifalin í GCC 13 útibúinu, sem kemur út í maí 2023. Frá og með GCC 13 verður hægt að nota staðlaða GCC verkfærakistuna til að setja saman Rust forrit án þess að þurfa að setja upp Rustc þýðanda sem byggður er með LLVM þróun. Rust útfærslan í GCC 13 verður í beta stöðu, ekki virkjuð sjálfgefið.

Heimild: opennet.ru

Bæta við athugasemd