Rust 1.54 Programlingvo-Eldono

La eldono de la sistema programlingvo Rust 1.54, fondita de la projekto Mozilla, sed nun disvolvita sub la aŭspicioj de la sendependa neprofitcela organizaĵo Rust Foundation, estis publikigita. La lingvo temigas memorsekurecon, disponigas aŭtomatan memoradministradon, kaj disponigas la rimedojn por atingi altan taskoparalelecon sen uzado de rubkolektilo aŭ rultempo (rultempo estas reduktita al baza inicialigo kaj prizorgado de la norma biblioteko).

La aŭtomata memoradministrado de Rust eliminas erarojn dum manipulado de montriloj kaj protektas kontraŭ problemoj ekestiĝantaj de malalt-nivela memormanipulado, kiel ekzemple alirado de memorregiono post kiam ĝi estis liberigita, nulaj montriloj dereferences, bufrotranspasoj, ktp. Por distribui bibliotekojn, certigi kunigon kaj administri dependecojn, la projekto disvolvas la Cargo-pakaĵmanaĝeron. La deponejo crates.io estas subtenata por gastigado de bibliotekoj.

Ĉefaj novigoj:

  • Aldonita la kapablo uzi funkcio-similajn makroojn ene de atributoj (procedaj makrooj kaj makrooj kreitaj per la makroo "macro_rules!"). Tiaj makrooj distingiĝas de funkcioj per la simbolo "!" post la nomo (makro!(...)) kaj anstataŭante la makrofontotekston anstataŭ generi funkciovokon. Voki makroojn ene de atributoj povas esti utila por inkluzivi enhavon de aliaj dosieroj en dokumentado de komentoj. Ekzemple, por enmeti la enhavon de la dosiero README kaj la rezulton de la ekzekuto de skripto, vi povas specifi: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR) "), "/generated.rs" )] mod generita;
  • La enkonstruitaj kompililfunkcioj (Intrinsecoj) por la wasm32-platformo estis stabiligitaj, permesante la uzon de SIMD-instrukciaĵo en WebAssembly. Plej multaj funkcioj, kiel v128_bitselect, estas haveblaj en "sekura" reĝimo, sed kelkaj funkcioj kiuj funkcias kun montriloj (ekzemple, v128_load) restas "nesekuraj".
  • La defaŭlta uzo de pliiga kompilo revenis, permesante al vi rekonstrui nur la ŝanĝitajn partojn de la kodo, kio povas signife redukti la tempon necesan por konstrui projekton dum rekompilo post fari etajn ŝanĝojn. Pliiga kompilo estis malŝaltita en eldono 1.52.1 pro kaŝaj cimoj kiuj aperis post aldonado de plia kontrolo por ŝarĝo de datumoj de la diskmemoro.
  • Nova parto de APIoj estis transdonita al la stabila kategorio, inkluzive de la jena stabiligita:
      BTreeMap::into_keys
    • BTreeMap::en_valorojn
    • HashMap::into_keys
    • HashMap::into_valoroj
    • arko::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • Opcioj estis aldonitaj al kargo-arbo: "—prune " por forigi pakaĵon el la dependeca grafeo, "—depth" por montri nur elementojn de antaŭfiksita nesta nivelo en la dependeca arbo, "—edges no-proc- makroo” por kaŝi dependecojn de proceduraj makrooj.

fonto: opennet.ru

Aldoni komenton