Programmeerimiskeele Rust 1.36 vÀljaanne

Avaldatud sĂŒsteemse programmeerimise keele vĂ€ljaanne Rust 1.36, mille on loonud Mozilla. Keel keskendub mĂ€lu ohutule kasutamisele, tagab automaatse mĂ€lu haldamise ja pakub vahendeid kĂ”rge paralleelsuse saavutamiseks ĂŒlesannete tĂ€itmisel, kasutamata samas prĂŒgikorjajat ja runtime'i.

Rustis tagab automaatne mĂ€lu haldamine arendajale mĂ€lukĂ€itlemise manipuleerimise vabastamise ja kaitseb madala taseme mĂ€lu töötlemisega seotud probleemide eest, nagu mĂ€lu kasutamine pĂ€rast selle vabastamist, nullviidete de-referentsimine, puhverduspiiride ĂŒletamine jne. Raamatukogude jagamiseks, koostamise tagamiseks ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit Cargo, mis vĂ”imaldab vajalikke raamatukogusid ĂŒhe klikiga hankida. Raamatukogude paigutamiseks toetatakse hoidlapaiku crates.io.

Peamised uuendused:

  • Stabiliseeritud tĂŒĂŒp (trait) Tulevik, mille vÀÀrtuse arvutamine vĂ”ib veel olla lĂ”petamata async / .await plokkide kasutamise protsessi kĂ€igus. Future abil mÀÀratletud asĂŒnkroonsed vÀÀrtused vĂ”imaldavad jĂ€tkata kasulikku tööd, samal ajal oodates kindla vÀÀrtuse arvutamise lĂ”petamist;
  • Stabiliseeritud raamatukogu alloc, mis pakub nutikaid osutajaid ja kogusid mĂ€luhalduseks. MĂ€lutaotlemiseks kasutatakse nĂŒĂŒd tĂŒĂŒp Vec, mida imporditakse allocist. Alloc'i eraldi kasutamine on mĂ”istlik programmides, mis ei ole seotud std («#![no_std]»), samuti raamatukogudes, mis on mĂ”eldud kasutamiseks sellistes programmides ilma std-ita;
  • AlgvÀÀrtuste korrektsuse kontrollide ĂŒmbersĂ”itmiseks pakutud vahepealne tĂŒĂŒp MaybeUninit, mida saab kasutada mem::uninitialized funktsiooni turvalisema alternatiivina. Funktsioon mem::uninitialized on kasulik kiirete massiivide loomiseks, kuid viib kompilatsiooni eksitusse, kuna loob mulje, et initsialiseerimine on toimunud, samas kui vÀÀrtus jÀÀb initsialiseerimata. MaybeUninit vĂ”imaldab kompilatorile selgelt nĂ€idata, et vÀÀrtus on initsialiseerimata, arvestama seotud vĂ”imalike mÀÀramatute kĂ€itumistega ning programmides korraldada kontrolli lĂ€bi „maybe_t:” ja etappide lĂ”ikes initsialiseerimise, mĂ€rkides selle lĂ”petamise „.assume_init()” kasutamisega. MaybeUnit'i tulekuga on funktsioon mem::uninitialized kuulutatud vananenuks ja ei ole soovitatav kasutada.
  • NLL (non-lexikalised elueaegade) tehnoloogia, mis laiendab laenatud muutujate eluea arvestuse sĂŒsteemi, on stabiliseeritud Rust 2015 keele jaoks (algse NLL toeti ainult Rust 2018). Ahnkuse eluea sidumise asemel lexikaalsel tasandil, teostab NLL arvestust tĂ€itmisevoo suhete, mis vĂ”imaldab parandada muutujate laenamise kvaliteedi kontrolli (borrow checker) ja lubab teatud tĂŒĂŒpi korrektsete koodide tĂ€itmise, mis varem pĂ”hjustas viga. Uus kĂ€itumine lihtsustab oluliselt ka silumist.
  • Uus assotsiatiivsete massiivide teostus on lisatud. HashMap, mis pĂ”hineb struktuuri Swiss Table (laaditakse automaatselt hashbrown::HashMap, kui ei ole selgelt mÀÀratud muud, nĂ€iteks std::HashMap, mis pĂ”hineb SipHash 1-3). Programmi liides on jÀÀnud samaks, mĂ€rgatavad erinevused arendajatele on seotud jĂ”udluse suurenemise ja mĂ€lu tarbimise vĂ€henemisega.
  • Pakihaldurisse cargo on lisatud „offline“ valik, mis vĂ”imaldab töötamist ilma vĂ”rguĂŒhenduseta, kus sĂ”ltuvuste installimisel kasutatakse ainult kohalikus sĂŒsteemis vahemĂ€lus olevaid pakette. Kui sĂ”ltuvust ei ole kohalikes vahemĂ€ludes, kuvatakse tĂ”rge. Enne offline-reĆŸiimi sisenemist saab sĂ”ltuvuste eelnevalt kohalikes vahemĂ€ludes laadimiseks kasutada kĂ€sku „cargo fetch“;
  • Makro „dbg!“ saab nĂŒĂŒd kutsuda, mÀÀrates mitu argumenti;
  • MĂ€rgis „const“, mis mÀÀrab kasutamise vĂ”imaluse igas kontekstis konstantide asemel, on rakendatud meetoditele
    Layout::from_size_align_unchecked,
    mem::needs_drop,
    NonNull::dangling ja
    NonNull::cast;
  • Uue API partii on tĂ”lgitud stabiilsetesse, sealhulgas on stabiliseeritud meetodid
    task::Waker, task::Poll,
    VecDeque::rotate_left, VecDeque::rotate_right,
    Read::read_vectored, Write::write_vectored,
    Iterator::copied,
    BorrowMut (stringide jaoks) ja str::as_mut_ptr.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster