Rust 1.38 Famoahana ny fiteny fandaharana

MIVOAKA famotsorana ny fiteny fandaharana amin'ny rafitra Harafesina 1.38, naorin'ny tetikasa Mozilla. Mifantoka amin'ny fiarovana ny fitadidiana ilay fiteny, manome fitantanana fitadidiana mandeha ho azy, ary manome fitaovana hanatrarana ny fitovizan'asa avo lenta nefa tsy mampiasa mpanangom-pako na fotoana fiasana.

Ny fitantanana fahatsiarovana mandeha ho azy an'i Rust dia manafaka ny mpamorona amin'ny fanodinkodinana pointer ary miaro amin'ny olana ateraky ny fanodinkodinana fahatsiarovana ambany, toy ny fidirana tsy misy fitadidiana aorian'ny fahatsiarovan-tena, ny tsy fahampian'ny pointer tsy misy dikany, ny fihoaran'ny buffer, sy ny toy izany. Misy mpitantana fonosana novolavolaina mba hizarana tranomboky, hiantohana ny fivoriambe ary hitantanana ny fiankinan-doha amin'ny tetikasa. entana, ahafahanao mahazo ny tranomboky ilaina amin'ny programa amin'ny tsindry iray. Misy tahiry iray tohanana mba hampiantranoana tranomboky crates.io.

tena fanavaozana:

  • Nampiana fomba fanangonam-bokatra (pipelined), izay manomboka ny fananganana fonosana crate miankina raha vao misy ny metadata miankina, tsy miandry ny fanangonana azy ho vita. Rehefa manangona fonosana dia tsy mila miangona tanteraka ny fiankinan-doha, fa mamaritra ny metadata fotsiny, izay ahitana lisitry ny karazana, miankina, ary singa aondrana. Ny metadata dia azo alaina eo am-piandohan'ny fizotran'ny fanangonana, noho izany dia azo angonina aloha kokoa ny fonosana mifandray. Rehefa manangana fonosana tokana dia tsy misy fiantraikany amin'ny fampisehoana ny fomba atolotra, fa raha mandrakotra fonosana misy fiankinan-doha amin'ny sampana ny fananganana, dia azo ahena 10-20% ny fotoana fananganana ankapobeny;
  • Miantoka ny fahitana ny fampiasana tsy ara-dalΓ na ny asa std::mem::tsy fantatra ΠΈ std::mem::zeroed. Ohatra, ny std::mem::uninitialized dia mety amin'ny famoronana array haingana, saingy mamitaka ny mpanangona izany satria toa natomboka izy io, fa raha ny marina dia mbola tsy voamarika ny sandany. Ny mem :: asa tsy natomboka dia efa voamarika ho lany andro ary asaina mampiasa karazana mpanelanelana fa tsy MaybeUnit. Raha ny mem::zeroed, ity fiasa ity dia mety hiteraka olana amin'ny karazana tsy manaiky ny sanda aotra.

    Mba hanampiana hamantatra ny fitondran-tena tsy voafaritra, ny famoahana vaovao dia manampy fanamarinana lint amin'ny mpanangona izay mahita olana sasany amin'ny mem:: uninitialized na mem:: zeroed. Ohatra, mahazo hadisoana ianao izao rehefa manandrana mampiasa mem::uninitialized na mem::zeroed miaraka amin'ny karazana &T sy Boxβ€ΉTβ€Ί, izay maneho zavatra fanondro izay tsy afaka manaiky ny sanda tsy misy;

  • Nitarina ny toetra β€œ#[tsy ampiasaina]” mba ahafahan'ny fonosana vata ho voamarika ho lany andro ary voalahatra ho fafana amin'ny ho avy. Amin'ny Rust 1.38, ity toetra ity dia azo ampiasaina amin'ny macros;
  • Nampiana ny fahafahana mampiasa ny toetra "#[global_allocator]" amin'ny submodules;
  • Nampiana endri-javatra std::any::type_name, izay ahafahanao mahita ny anaran'ilay karazana, izay mety ilaina amin'ny tanjona debugging. Ohatra, mandritra ny fanatanterahana ny programa dia azonao atao ny mamantatra hoe inona no karazana antsoina hoe asa:

    fn gen_valueβ€ΉT: Default>() -β€Ί T {
    println!("Nanomboka ohatra ny {}", std::any::type_name::β€ΉTβ€Ί());
    Default::default()
    }

    fn main() {
    avelao _: i32 = gen_value(); # "i32" dia hatao pirinty
    avelao _: String = gen_value(); # dia hanonta "aloc::string::String"
    }

  • Fampiasana miitatra amin'ny tranomboky mahazatra:
    • slice::{concat, connect, join} dia afaka maka ny sanda &[T] ankoatry ny &T;
    • Ny "*const T" sy ny "*mut T" dia mametraka marika :: Unpin;
    • "Arcβ€Ή[T]β€Ί" sy "Rcβ€Ή[T]β€Ί" dia mampihatra ny FromIteratorβ€ΉTβ€Ί;
    • iter::{StepBy, Peekable, Take} dia ampiharo izao ny DoubleEndedIterator.
    • ascii :: EscapeDefault dia mametraka Clone sy Display.
  • Ampahany vaovao amin'ny API no nafindra ho amin'ny sokajy stable, ao anatin'izany ny fomba niorina
    • β€Ή*const Tβ€Ί::cast, β€Ή*mut Tβ€Ί::cast,
    • Faharetana::as_secs_f{32|64},
    • Faharetana::div_duration_f{32|64},
    • Faharetana::div_f{32|64},
    • Faharetana::from_secs_f{32|64},
    • Faharetana::mul_f{32|64},
    • asa fizarana miaraka amin'ny ambiny
      div_euclid sy rem_euclid ho an'ny integer primitives rehetra;

  • Fanampiana fanampiny hamaritana ny safidy "--features" imbetsaka mba ahafahan'ny endri-javatra samihafa ao amin'ny mpitantana fonosana entana;
  • Ny compiler dia manome fahatelo ambaratonga fanohanana ho an'ny sehatra kendrena aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armlinux7 -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl ary riscv32i-unknown-none-elf. Ny ambaratonga fahatelo dia misy fanohanana fototra, saingy tsy misy fitsapana mandeha ho azy sy famoahana ny fananganana ofisialy.

Source: opennet.ru

Add a comment