ipata 1.36 Siseto ede Tu

atejade itusilẹ ede siseto eto Ipata 1.36, 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:

  • Iwa duro Future, eyi ti o duro fun iye kan ti igbelewọn le ma ti pari lakoko lilo awọn bulọọki async / .wait. Awọn iye Asynchronous ti asọye nipa lilo Ọjọ iwaju jẹ ki o ṣee ṣe lati tẹsiwaju ṣiṣe iṣẹ ti o wulo ninu okun, lakoko ti o nduro ni akoko kanna fun ipari awọn iṣiro ti iye kan;
  • Ile-ikawe duro alloc, eyiti o pese awọn itọka ọlọgbọn ati awọn ikojọpọ fun iṣakoso awọn iye ti a pin iranti. Ipin iranti ni std bayi nlo iru Vek, eyi ti o ti wa ni tun-okeere lati alloc. Lọtọ lilo ti alloc mu ki ori ni awọn ohun elo ko so si std ("#! [no_std]"), bi daradara bi ni ikawe apẹrẹ fun lilo ninu iru eto lai STD;
  • Lati fori awọn sọwedowo fun ibẹrẹ ibẹrẹ ti awọn iye daba agbedemeji iru Boya Unit, eyi ti o le ṣee lo dipo mem :: iṣẹ aiṣedeede bi yiyan ailewu. Mem :: iṣẹ aiṣedeede jẹ irọrun fun ṣiṣẹda awọn ọna ṣiṣe ni kiakia, ṣugbọn o ṣi olupilẹṣẹ lọna nitori o jẹ ki o han pe ibẹrẹ ti waye, ṣugbọn ni otitọ iye naa wa lainidi. BoyaUninit gba ọ laaye lati tọka ni gbangba si olupilẹṣẹ pe iye naa jẹ aimọ, lati ṣe akiyesi ihuwasi aisọye ti o ṣeeṣe ti o ni nkan ṣe pẹlu eyi, ati tun lati ṣeto awọn sọwedowo ni awọn eto nipasẹ “ maybe_t:” ati ipilẹṣẹ-nipasẹ-igbesẹ, ti samisi ipari rẹ. lilo ipe ".assume_init ()". Pẹlu dide ti MaybeUninit, mem :: iṣẹ aiṣedeede ti parẹ ati pe ko ṣe iṣeduro fun lilo;
  • Ilana NLL (Non-Lexical Lifetimes), eyiti o gbooro eto fun gbigbasilẹ igbesi aye ti awọn oniyipada ti a ya, ti ni iduroṣinṣin fun ede Rust 2015 (ni ibẹrẹ, NLL ni atilẹyin nipasẹ Rust 2018 nikan). Dipo ṣiṣe awọn igbesi aye ni ipele lexical, NLL ṣe bẹ ni ipele ti ṣeto ti awọn itọka ninu iwọn sisan ipaniyan. Ọna yii ngbanilaaye lati mu didara ti ṣayẹwo yiya ti awọn oniyipada (oluyẹwo oluyawo) ati gba ipaniyan diẹ ninu awọn iru koodu to tọ, lilo eyiti o yorisi aṣiṣe tẹlẹ. Iwa tuntun tun jẹ ki n ṣatunṣe aṣiṣe rọrun pupọ;
  • Titun imuse ti associative orun to wa HashMap, da lori awọn ohun elo ti awọn be Swiss Table (ti kojọpọ laifọwọyi hashbrown :: HashMap, ayafi ti a sọ ni gbangba bibẹẹkọ, gẹgẹbi std :: HashMap, eyiti o da lori SipHash 1-3). Ni wiwo software si maa wa kanna, ati awọn iyato ti ṣe akiyesi si awọn Olùgbéejáde sise si isalẹ lati pọ iṣẹ ati dinku agbara iranti;
  • Ninu ẹru oluṣakoso package kun aṣayan “-aisinipo”, eyiti o jẹ ki iṣẹ ṣiṣe laisi iraye si nẹtiwọọki, ninu eyiti awọn idii ti a fipamọ sinu eto agbegbe ni a lo nigbati o ba nfi awọn igbẹkẹle sii. Ti igbẹkẹle ko ba si ni kaṣe agbegbe, aṣiṣe yoo ju silẹ. Lati ṣaju awọn igbẹkẹle sinu kaṣe agbegbe ṣaaju lilọ si aisinipo, o le lo aṣẹ “bu eru”;
  • Ti ṣe imuse agbara lati pe Makiro “dbg!” afihan orisirisi awọn ariyanjiyan;
  • Ẹya “const”, eyiti o pinnu iṣeeṣe ti lilo ni eyikeyi ipo dipo awọn iduro, ni a lo fun awọn ọna
    Ìfilélẹ :: lati_size_align_aṣayẹwo,
    mem :: aini_idasonu,
    NonNull :: purpili ati
    NonNull :: Simẹnti;

  • Apa tuntun ti API ni a ti gbe lọ si ẹka iduro, pẹlu awọn ọna ti o ti ni imuduro
    iṣẹ-ṣiṣe :: Waker, iṣẹ-ṣiṣe :: Idibo,
    VecDeque :: yiyi_osi, VecDeque :: yiyi_ọtun,
    Ka :: ka_vectored, Kọ :: kọ_vectored,
    Atunse :: daakọ,
    BorrowMut (fun awọn gbolohun ọrọ) ati str :: as_mut_ptr.

orisun: opennet.ru

Fi ọrọìwòye kun