Rust 1.66 Programméiersprooch Fräisetzung

D'Verëffentlechung vun der Rust 1.66 allgemeng Zweck Programméierungssprooch, gegrënnt vum Mozilla-Projet, awer elo entwéckelt ënner der Regie vun der onofhängeger Asbl Rust Foundation, gouf publizéiert. D'Sprooch konzentréiert sech op d'Erënnerungssécherheet a stellt d'Moyene fir en héije Jobparallelismus z'erreechen, während d'Benotzung vun engem Gerempels a Runtime vermeit (Runtime gëtt op Basisinitialiséierung an Ënnerhalt vun der Standardbibliothéik reduzéiert).

Rust d'Erënnerungsveraarbechtungsmethoden retten den Entwéckler vu Feeler beim Manipulatioun vu Pointer a schützt géint Probleemer déi entstinn wéinst nidderegen Niveau Memory Handhabung, sou wéi Zougang zu engem Erënnerungsberäich nodeems se befreit gouf, Nullpointer ofgeleent, Pufferiwwerschlag, etc. Fir Bibliothéiken ze verdeelen, Builds ze bidden an Ofhängegkeeten ze managen, entwéckelt de Projet de Cargo Package Manager. De crates.io Repository gëtt ënnerstëtzt fir Bibliothéiken ze hosten.

Gedächtnissécherheet gëtt a Rust zur Zesummesetzungszäit zur Verfügung gestallt duerch Referenzprüfung, Verfollegung vum Objektbesëtzer, Verfollegung vun Objektliewenszäiten (Scope), an d'Korrektheet vum Gedächtniszougang wärend der Code Ausféierung bewäerten. Rust bitt och Schutz géint ganz Zuelen Iwwerschwemmungen, erfuerdert obligatoresch Initialiséierung vu variabelen Wäerter virum Gebrauch, handhabt Feeler besser an der Standardbibliothéik, applizéiert d'Konzept vun onverännerleche Referenzen a Variablen als Standard, bitt staark statesch Tippen fir logesch Feeler ze minimiséieren.

Haaptinnovatiounen:

  • Bei Enumeratiounen mat ganzer Representatioune (den Attribut "#[repr(Int)]" ass explizit Indikatioun vum Diskriminant (Variantnummer an der Opzielung) erlaabt, och wann d'Opzielung Felder enthält. #[repr(u8)] enum Foo { A(u8), # discriminant 0 B(i8), # discriminant 1 C(bool) = 42, # discriminant 42 }
  • Dobäi Funktioun Kär :: Hiweis :: black_box déi einfach de kritt Wäert zréck. Zënter dem Compiler denkt datt dës Funktioun eppes mécht, kann d'Black_box Funktioun benotzt ginn fir Compileroptimiséierunge fir Loops auszeschalten wann Dir Code Performance Tester ausféiert oder wann Dir generéiert Maschinncode iwwerpréift (sou datt de Compiler de Code net als onbenotzt betruecht an ewechzehuelen). Zum Beispill, am Beispill hei drënner, verhënnert black_box (v.as_ptr ()) de Compiler ze denken datt de Vektor net benotzt gëtt. benotzen std :: Hiweis :: black_box; fn push_cap (v: & mut Vec) {fir ech an 0..4 {v.push (ech); black_box(v.as_ptr()); } }
  • De "Cargo" Package Manager bitt de Kommando "Remove", wat Iech erlaabt Ofhängegkeete vum Cargo.toml Manifest vun der Kommandozeil ze läschen.
  • En neien Deel vun der API gouf an d'Kategorie vum Stall geplënnert, dorënner d'Methoden an d'Implementatioune vun de Charaktere goufen stabiliséiert:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • ech*::{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}
    • Füügt AsFd-Implementatiounen fir stdio-Sperrtypen wann Dir WASI benotzt.
    • impl TryFrom > fir Box<[T; N]> dir
    • core::hint::black_box
    • Dauer::try_from_secs_{f32,f64}
    • Optioun :: unzip
    • std::os::fd
  • D'Beräicher "..X" an "..=X" sinn an Templates erlaabt.
  • Wann Dir de Frontend vum Rustc Compiler an dem LLVM Backend baut, ginn LTO (Link Time Optimization) a BOLT (Binary Optimization and Layout Tool) Optimisatiounsmodi benotzt fir d'Performance vum resultéierende Code ze erhéijen an de Gedächtnisverbrauch ze reduzéieren.
  • Ëmgesat Niveau 5 Ënnerstëtzung fir armv5te-none-eabi an thumbvXNUMXte-none-eabi Plattformen. Den drëtten Niveau implizéiert Basis Ënnerstëtzung, awer ouni automatiséiert Testen, offiziell Builds publizéieren an d'Fäegkeet iwwerpréift fir de Code ze bauen.
  • Ënnerstëtzung bäigefüügt fir ze verbannen op macOS Generic Libraries.

Zousätzlech kënne mir d'Inklusioun an der GCC Codebase vum Front-End Compiler vun der Rust Sprooch (gccrs) notéieren. De Frontend ass an der GCC 13 Filial abegraff, déi am Mee 2023 verëffentlecht gëtt. Vun GCC 13 un, kann de Standard GCC Toolkit benotzt ginn fir Rust Programmer ze kompiléieren ouni de Besoin fir de Rustc Compiler z'installéieren deen mat LLVM Entwécklungen gebaut gëtt. D'Rust Implementatioun am GCC 13 wäert am Beta Status sinn, net als Standard aktivéiert.

Source: opennet.ru

Setzt e Commentaire