Rust programmeertaal vrystelling 2021 (1.56)

Die vrystelling van die stelselprogrammeertaal Rust 1.56, wat deur die Mozilla-projek gestig is, maar nou ontwikkel is onder die vaandel van die onafhanklike nie-winsgewende organisasie Rust Foundation, is gepubliseer. Benewens die gewone weergawenommer, word die vrystelling ook as Rust 2021 gemerk en dui dit op die stabilisering van die veranderinge wat die afgelope drie jaar voorgestel is. Rust 2021 sal ook dien as die basis vir kenmerkbou oor die volgende drie jaar, soortgelyk aan hoe die Rust 2018-vrystelling die basis was vir taalontwikkeling oor die afgelope drie jaar.

Om versoenbaarheid te handhaaf, kan ontwikkelaars die "2015", "2018" en "2021" merkers in hul programme gebruik om programme te koppel aan taalstaatskywe wat ooreenstem met geselekteerde Rust-uitgawes. Hersienings is ingestel om onversoenbare veranderinge te skei en word in die metadata van vragpakkette gekonfigureer via die "uitgawe"-veld in die "[pakket]"-afdeling. Die 2018-uitgawe sluit byvoorbeeld funksionaliteit in wat aan die einde van 2018 gestabiliseer is en dek ook alle toekomstige veranderinge wat nie versoenbaarheid skend nie. Die 2021-uitgawe bevat ook kenmerke wat versoenbaarheid verbreek, wat voorgestel word in die huidige 1.56-vrystelling en goedgekeur is vir implementering in die toekoms. Benewens die taal self, neem die redakteurs ook die stand van die gereedskap en dokumentasie in ag.

Die belangrikste onversoenbaarheid wat in Rust 2021 opgelos is, is:

  • Afsonderlike vang in sluitings - Sluitings kan nou individuele veldname vaslê in plaas van die hele ID. Byvoorbeeld, "|| byl + 1" sal slegs "byl" in plaas van "a" vang.
  • Die IntoIterator-eienskap vir skikkings: array.into_iter() laat jou toe om oor die elemente van 'n skikking te itereer volgens waarde eerder as deur verwysing.
  • Verwerking van "|" uitdrukkings is verander in makro_reëls (logiese OF-bewerking) in patrone - Die ":pat"-spesifiseerder in pasmaats respekteer nou die patrone "A | B".
  • Die vragpakketbestuurder bevat by verstek die tweede weergawe van die kenmerkoplosser, waarvoor ondersteuning in Rust 1.51 bekendgestel is.
  • Die eienskappe TryFrom, TryInto en FromIterator is by die prelude standaard biblioteekmodule gevoeg.
  • Die panic!(..) en assert!(expr, ..) makro's gebruik nou altyd format_args!(..) om stringe te formateer, soortgelyk aan println!().
  • Die uitdrukkings ident#, ident"..." en ident'...' is gereserveer in die sintaksis van die taal.
  • Die bare_trait_objects en ellipsis_inclusive_range_patterns waarskuwings is na die foutkategorie geskuif.

Nuut in Rust 1.56:

  • In Cargo.toml, in die "[pakket]"-afdeling, is die roes-weergawe-veld bygevoeg, waardeur jy die minimum ondersteunde weergawe van Rust vir die kratpakket kan bepaal. As die huidige weergawe nie ooreenstem met die gespesifiseerde parameter nie, sal Cargo met 'n fout afbreek.
  • Wanneer patroonpassing met "binding @ patroon" uitdrukkings gebruik word, word ondersteuning verskaf vir die spesifikasie van bykomende bindings (byvoorbeeld, "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • 'n Nuwe gedeelte van die API is na die kategorie stal geskuif, insluitend die metodes en implementering van eienskappe is gestabiliseer:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • kern::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::krimp_naar
    • String::krimp_tot
    • OsString::krimp_naar
    • PathBuf::krimp_naar
    • BinaryHeap::shrink_to
    • VecDeque::krimp_naar
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Die "const"-kenmerk, wat die moontlikheid bepaal om dit in enige konteks in plaas van konstantes te gebruik, word in funksies gebruik
    • std::mem::transmute
    • [T]::eerste
    • [T]::split_first
    • [T]::laaste
    • [T]::split_laaste
  • Die samesteller is oorgeskakel om LLVM weergawe 13 te gebruik.
  • Geïmplementeer vlak 64 ondersteuning vir die aarch32-apple-ios-sim platform en vlak XNUMX ondersteuning vir die powerpc-unknown-freebsd en riscvXNUMXimc-esp-espidf platforms. Die derde vlak impliseer basiese ondersteuning, maar sonder outomatiese toetsing, publisering van amptelike bouwerk en kontrolering van die vermoë om die kode te bou.

Onthou dat die Rust-taal op veilige geheuebestuur fokus, outomatiese geheuebestuur verskaf en 'n manier bied om hoë parallellisme van werkuitvoering te bereik, terwyl dit sonder die gebruik van 'n vullisverwyderaar en looptyd gedoen word (looptyd word verminder tot basiese inisialisering en instandhouding van die standaard biblioteek).

Rust se outomatiese geheuebestuur red die ontwikkelaar van foute wanneer wysers gemanipuleer word en beskerm teen probleme wat ontstaan ​​as gevolg van laevlakgeheuemanipulasie, soos toegang tot 'n geheuearea nadat dit vrygestel is, herkenning van nulwysers, bufferoorskryding, ens. Om biblioteke te versprei, bouwerk te verskaf en afhanklikhede te bestuur, ontwikkel die projek die Cargo-pakketbestuurder. Die crates.io-bewaarplek word ondersteun vir die aanbieding van biblioteke.

Bron: opennet.ru

Voeg 'n opmerking