ipata 1.38 Siseto ede Tu

atejade itusilẹ ede siseto eto Ipata 1.38, ti a da nipasẹ iṣẹ akanṣe Mozilla. Ede naa dojukọ aabo iranti, pese iṣakoso iranti aifọwọyi, ati pese ọna lati ṣaṣeyọri isọdọmọ iṣẹ-giga laisi lilo agbasọ idoti tabi akoko asiko.

Iṣakoso iranti aifọwọyi ti Rust n ṣe ominira oluṣe idagbasoke lati ifọwọyi ijuboluwole ati aabo lodi si awọn iṣoro ti o dide lati ifọwọyi iranti ipele-kekere, gẹgẹbi awọn iraye si iranti ọfẹ lẹhin, awọn ifisilẹ ijuboluwole asan, awọn agbekọja buffer, ati bii bẹẹ. Oluṣakoso package ti wa ni idagbasoke lati kaakiri awọn ile-ikawe, rii daju apejọ ati ṣakoso awọn igbẹkẹle nipasẹ iṣẹ akanṣe naa. laisanwo, gbigba ọ laaye lati gba awọn ile-ikawe ti o nilo fun eto naa ni titẹ kan. Ibi ipamọ jẹ atilẹyin lati gbalejo awọn ile-ikawe crates.io.

akọkọ awọn imotuntun:

  • Fi kun ipo iṣakojọpọ pipeline kan (pipelined), ninu eyiti kikọ ti package crate ti o gbẹkẹle bẹrẹ ni kete ti metadata igbẹkẹle ba wa, laisi iduro fun akopọ rẹ lati pari. Nigbati o ba n ṣajọ akojọpọ kan, awọn igbẹkẹle ko nilo lati pejọ ni kikun, o kan asọye metadata, eyiti o pẹlu awọn atokọ ti awọn oriṣi, awọn igbẹkẹle, ati awọn eroja okeere. Metadata ti jẹ ki o wa ni kutukutu ilana iṣakojọpọ, nitorinaa awọn idii ti o sopọ mọ le ṣe akopọ ni iṣaaju. Nigbati o ba n kọ awọn idii ẹyọkan, ipo ti a dabaa ko ni ipa iṣẹ ṣiṣe, ṣugbọn ti ikole ba bo awọn idii pẹlu awọn igbẹkẹle ẹka, akoko kikọ lapapọ le dinku nipasẹ 10-20%;
  • Ṣe idaniloju wiwa ti ko tọ lilo awọn iṣẹ std :: mem :: uninitialized и std :: mem :: odo. Fun apẹẹrẹ, std :: mem :: unitialized jẹ rọrun fun ṣiṣẹda awọn ọna ṣiṣe ni kiakia, ṣugbọn o ṣi olupilẹṣẹ lọna nitori pe o han pe o wa ni ipilẹṣẹ, ṣugbọn ni otitọ iye naa wa ni aimọ. Iṣẹ mem:: ti a ko kọkọ ti samisi tẹlẹ bi airotẹlẹ ati pe o gba ọ niyanju lati lo iru agbedemeji dipo. Boya Unit. Bi fun mem :: zeroed, iṣẹ yii le fa awọn iṣoro pẹlu awọn iru ti ko le gba awọn iye odo.

    Lati ṣe iranlọwọ idanimọ ihuwasi aisọye, itusilẹ tuntun ṣafikun ayẹwo lint kan si alakojọ ti o ṣe awari diẹ ninu awọn iṣoro pẹlu mem :: aimọkan tabi mem :: zeroed. Fun apẹẹrẹ, o ti ni aṣiṣe bayi nigbati o n gbiyanju lati lo mem :: uninitialized tabi mem :: zeroed pẹlu awọn oriṣi & T ati Box‹T›, eyiti o jẹ aṣoju awọn ohun itọka ti ko le gba awọn iye asan;

  • Iwa “#[ti a ti parẹ]” naa ti gbooro sii lati jẹ ki awọn akojọpọ apoti le jẹ samisi ti atijo ati ṣeto fun piparẹ ọjọ iwaju. Bi ti Rust 1.38, ẹya yii tun le ṣee lo fun awọn macros;
  • Ṣe afikun agbara lati lo “#[global_allocator]” abuda ni awọn submodules;
  • Ẹya ti a ṣafikun std :: eyikeyi :: type_name, eyi ti o fun laaye laaye lati wa orukọ iru, eyi ti o le wulo fun awọn idi ti n ṣatunṣe aṣiṣe. Fun apẹẹrẹ, lakoko ipaniyan eto o le wa iru iru iṣẹ ti a pe:

    fn gen_value‹T: Aiyipada>() -› T {
    println! ("Ipilẹṣẹ apẹẹrẹ ti {}", std :: eyikeyi :: Iru_name :: ‹T› ());
    Aiyipada:: aiyipada()
    }

    fn akọkọ() {
    jẹ ki _: i32 = gen_value (); # "i32" yoo jẹ titẹ
    jẹ ki _: Okun = gen_value (); # yoo tẹjade "alloc :: okun :: Okun"
    }

  • Awọn iṣẹ ti o gbooro sii ti ile-ikawe boṣewa:
    • bibẹ :: {concat, so, join} le bayi gba iye & [T] ni afikun si &T;
    • "* const T" ati "* mut T" ni bayi imuse asami :: Unpin;
    • "Arc‹[T]›" ati "Rc‹[T]›" ni bayi ṣe LatiIterator‹T›;
    • iter:: {StepBy, Peekable, Take} ni bayi ṣe DoubleEndedIterator.
    • ascii :: EscapeDefault ṣe imuse Clone ati Ifihan.
  • Apa tuntun ti API ni a ti gbe lọ si ẹka iduro, pẹlu awọn ọna ti o ti ni imuduro
    • ‹* const T› :: Simẹnti, ‹*mut T› :: Simẹnti,
    • Iye akoko :: as_secs_f{32|64},
    • Iye akoko::div_duration_f{32|64},
    • Iye akoko::div_f{32|64},
    • Iye akoko::lati_secs_f{32|64},
    • Iye akoko::mul_f{32|64},
    • awọn iṣẹ pipin pẹlu iyokù
      div_euclid ati rem_euclid fun gbogbo odidi primitives;

  • Atilẹyin ti a ṣafikun fun asọye “- awọn ẹya” aṣayan ni ọpọlọpọ igba lati mu awọn ẹya oriṣiriṣi ṣiṣẹ ninu oluṣakoso package ẹru;
  • Awọn alakojo pese a kẹta ipele atilẹyin fun awọn iru ẹrọ ibi-afẹde aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc afojusun, armv7-unknown-lin -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl ati riscv32i-unknown-ko si-elf. Ipele kẹta jẹ atilẹyin ipilẹ, ṣugbọn laisi idanwo adaṣe ati atẹjade ti awọn ile-iṣẹ osise.

orisun: opennet.ru

Fi ọrọìwòye kun