Avaldatud on ĂŒldotstarbelise programmeerimiskeele Rust 1.68 vĂ€ljaanne, mille on algatanud Mozilla, kuid nĂŒĂŒd arendab seda sĂ”ltumatu mittetulundusĂŒhing Rust Foundation. Keel keskendub mĂ€lu ohutule töötlusele ja pakub vahendeid kĂ”rge tööde samaaegse tĂ€itmise saavutamiseks, samas vĂ€ltides prĂŒgikoristusprotsessi ja runtime'i (runtime piirdub baasi algseadmise ja standardraamatukogu toetamisega).
Rustis olevad mĂ€luhaldusmeetodid vabastavad arendajad probleemidest, mis on seotud osutitega, ning kaitsevad madala taseme mĂ€lutöötlusest tulenevate probleemide, nagu vabanenud mĂ€lu alale juurdepÀÀs, nullosutite de-referentseerimine, mĂ€lupiiride ĂŒletamine jne. Raamatukogude levitamiseks, projekti koostamise ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude paigutamiseks toetatakse repo crates.io.
Rust tagab turvalise mĂ€lutöötluse kompilatsiooni ajal, kontrollides viiteid, jĂ€lgides objektide omandit, arvestades objektide elutsĂŒklit (nĂ€htavust) ja hinnates mĂ€lule juurdepÀÀsu Ă”igsust koodi kĂ€itamise ajal. Rust pakub ka meetmeid enamike tĂ€isarvude ĂŒletamiste vĂ€ltimiseks, nĂ”uab muutujate vÀÀrtuste algvÀÀrtustamist enne kasutamist, kĂ€sitleb vigasid paremini oma standardraamatukogus, rakendab immutamatuse (immutable) kontseptsiooni viidetes ja muutujates vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade minimeerimiseks.
PÔhilised uuendused:
- Pakihalduri Cargo ja crates.io hoidlas on stabiliseeritud Sparse protokolli tugi, mis mÀÀratleb uue viisi indeksi kÀsitlemiseks, milles peegelduvad kÔik olemasolevate pakettide versioonid. Uus protokoll vÔimaldab oluliselt suurendada crates.io töö kiirus ja lahendada mastaapsuse probleemid pakettide arvu edasise kasvu korral hoidlas.
Latentsuse vĂ€hendamiseks, mis tuleneb tĂ€isharu indeksi laadimisest, on Sparse'i korral indeksile juurdepÀÀsuks Git'i asemel kasutusel otse HTTPS kaudu ainult vajalike indeksandmete allalaadimine, mis katab konkreetse projekti sĂ”ltuvused. Indeksandmete edastamiseks kasutatakse uut teenust index.crates.io. Uut protokolli plaanitakse vaikimisi kasutada Rust 1.70 harus, enne seda saab selle aktiveerimiseks seada keskkonnamuutuja âCARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparseâ vĂ”i lisada .cargo/config.toml faili jaotisse â[registries.crates-io]â parameeter âprotocol = âsparseââ.
- Lisatud makros âpin!â, mis vĂ”imaldab luua struktuuri Pin<&mut T> vĂ€ljendist âTâ selle oleku kohapealse fikseerimisega (erinevalt Box::pin, mis ei eralda mĂ€lu kuhjas, vaid teostab fikseerimise steigi tasemel).
- Paketi alloc kasutamisel rakendatav vaike mĂ€luhĂ€irete kĂ€itleja, mis aktiveeritakse ainult alloc-i (ilma std) korral, kui mĂ€lude mÀÀramine ebaĂ”nnestub, kutsub nĂŒĂŒd esile 'panic!' kĂ€itleja, mida on soovitatav pĂŒĂŒda '#[panic_handler]' abil. Std-iga tegelevad programmid, nagu ennegi, vĂ€ljastavad vigade teavet stderr-is ja lĂ”petavad töö.
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide rakendused:
- {core,std}::pin::pin!
- impl From for {f32,f64}
- std::path::MAIN_SEPARATOR_STR
- impl DerefMut for PathBuf
- MÀrgend 'const', mis mÀÀrab kasutamise vÔimaluse igas kontekstis konstantide asemel, on rakendatud funktsioonis VecDeque::new.
- Androidi platvormil töötamiseks on nĂŒĂŒd vajalik vĂ€hemalt NDK r25 (API 19), st minimaalne toetatud Androidi versioon on tĂ”stetud 4.4 (KitKat) tasemele.
- Sony PlayStation Vita (armv7-sony-vita-newlibeabihf) platvormi jaoks on rakendatud kolmanda astme tugi. Kolmas tase tÀhendab pÔhitoetust, kuid ilma automatiseeritud testimise, ametlike versioonide avaldamise ja koodi kompileerimise kontrollimiseta.
Allikas: opennet.ru
