Rust 1.67 Programlingvo-Eldono

La eldono de la ĝeneraluzebla programlingvo Rust 1.67, 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 kaj disponigas la rimedojn por atingi altan laborparalelecon evitante la uzon de rubkolektilo kaj rultempo (rultempo estas reduktita al baza inicialigo kaj prizorgado de la norma biblioteko).

La memormanipulaj metodoj de Rust savas la ellaboranton de eraroj dum manipulado de montriloj kaj protektas kontraŭ problemoj kiuj ekestas pro malaltnivela memortraktado, kiel ekzemple alirado de memorareo post kiam ĝi estis liberigita, dereferencing nulmontriloj, bufrotranspaso, ktp. Por distribui bibliotekojn, provizi konstruaĵojn kaj administri dependecojn, la projekto disvolvas la Cargo-pakaĵmanaĝeron. La deponejo crates.io estas subtenata por gastigado de bibliotekoj.

Memorsekureco estas disponigita en Rust ĉe kompiltempo tra referenckontrolado, konservante trakon de objektoposedo, konservante trakon de objektovivdaŭroj (kampoj), kaj taksante la ĝustecon de memoraliro dum kodekzekuto. Rusto ankaŭ provizas protekton kontraŭ entjeraj superfluoj, postulas devigan inicialigon de variaj valoroj antaŭ uzo, pli bone pritraktas erarojn en la norma biblioteko, aplikas la koncepton de neŝanĝeblaj referencoj kaj variabloj defaŭlte, ofertas fortan senmovan tajpadon por minimumigi logikajn erarojn.

Ĉefaj novigoj:

  • Por nesinkronaj funkcioj kun Future::Output, nun eblas specifi "#[must_use]" komentadojn, kiuj inkluzivas averton, se la revena valoro estas ignorita, kio helpas identigi erarojn kaŭzitajn de la supozo, ke la funkcio ŝanĝos la valorojn. prefere ol redoni novan valoron. #[devas_uzi] async fn bar() -> u32 { 0 } async fn caller () { bar ().wait; } averto: neuzata eligo de estonteco resendita de `bar' kiu devas esti uzata —> src/lib.rs:5:5 | 5 | trinkejo().atendu; | ^^^^^^^^^^^^ | = noto: `#[warn(unused_must_use)]` defaŭlte
  • La efektivigo de FIFO-vostoj std::sync::mpsc (multproduktanto unu-konsumanto) estis ĝisdatigita, kiu estis ŝanĝita al uzado de la transtrab-kanala modulo konservante la antaŭan API. La nova efektivigo distingiĝas per solvado de kelkaj problemoj, pli alta rendimento kaj simpligita koda prizorgado.
  • Nova parto de la API estis movita al la kategorio de stalo, inkluzive de la metodoj kaj efektivigoj de trajtoj estis stabiligitaj:
    • {entjero}::checked_ilog
    • {entjero}::checked_ilog2
    • {entjero}::checked_ilog10
    • {entjero}::ilog
    • {entjero}::ilog2
    • {entjero}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • La atributo "const", kiu determinas la eblecon uzi ĝin en iu ajn kunteksto anstataŭ konstantoj, estas uzata en la funkcioj:
    • char::from_u32
    • char::de_cifero
    • char::al_cifero
    • core::char::from_u32
    • core::char::de_cifero
  • Tria nivelo de subteno estis efektivigita por uzado de Rust en la Linukso-kerno (linŭkernel), same kiel por la Sony PlayStation 1 (mipsel-sony-psx), PowerPC kun AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platformoj qnx710, x86_64-pc-nto-qnx710). La tria nivelo implikas bazan subtenon, sed sen aŭtomatigita testado, publikigado de oficialaj konstruaĵoj aŭ kontrolado ĉu la kodo povas esti konstruita.

Aldone, ni povas noti la publikigon de ARM de flikoj, kiuj permesas la uzon de la Rust-lingvo por evoluigi ŝoforojn kaj Linuksan kernmodulojn kunmetitajn por sistemoj bazitaj sur la arkitekturo AArch64.

fonto: opennet.ru

Aldoni komenton