Avalikustati üldotstarbelise programmeerimiskeele Rust 1.67 väljaanne, mille algselt arendas Mozilla, kuid nüüd arendab seda sõltumatu mittetulundusühing Rust Foundation. Keel fokusseerib mäluga turvalisele töötlemisele ja pakub vahendeid kõrge paralleelsuse saavutamiseks, samas vältides prügikoristaja (garbage collector) ja runtime'i kasutamist (runtime piirdub põhialuste alguse 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:
- Async-funktsioonidele, millel on Future::Output, on rakendatud võimalus määrata annotatsioone „#[must_use]“, mis kaasavad hoiatuse tagasiside ignoreerimise korral, mis aitab avastada vigu, mis on tingitud eeldusest, et funktsioon muudab väärtusi, mitte ei tagasta uut väärtust. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } warning: kasutamata tulemus tulevikust, mis tagastatakse `bar`, peab olema kasutatud —> src/lib.rs:5:5 | 5 | bar().await; | ^^^^^^^^^^^ | = märk: `#[warn(unused_must_use)]` on vaikimisi sisse lülitatud
- Uuendatud FIFO-reeglite std::sync::mpsc (multi-producer single-consumer) teostus, mis on üle viidud crossbeam-channel mooduli kasutamisele, säilitades vana API. Uue teostuse eelised on probleemide lahendamine, kõrgem jõudlus ja koodi hooldamise lihtsustamine.
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tüüpide rakendused:
- {integer}::checked_ilog
- {integer}::checked_ilog2
- {integer}::checked_ilog10
- {integer}::ilog
- {integer}::ilog2
- {integer}::ilog10
- NonZeroU*::ilog2
- NonZeroU*::ilog10
- NonZero*::BITS
- Konstantse märgendiga `const`, mis määrab võimaluse kasutada konstandina igas kontekstis, on rakendatud funktsioonides:
- char::from_u32
- char::from_digit
- char::to_digit
- core::char::from_u32
- core::char::from_digit
- Kolmas taseme tugi Rusti kasutamiseks Linuxi tuumas (linuxkernel) ning Sony PlayStation 1 (mipsel-sony-psx), PowerPC AIX (powerpc64-ibm-aix), QNX Neutrino RTOS (aarch64-unknown-nto-qnx710, x86_64-pc-nto-qnx710) platvormidel. Kolmas tase eeldab baas toetust, kuid ilma automatiseeritud testimise, ametlike versioonide väljaandmise ja koodi kogumise kontrollimiseta.
Täiendavalt võib märkida, et ARM on välja andnud patšid, mis võimaldavad kasutada Rusti keelt Linuxi juhtide ja tuumamoodulite arendamiseks, mis on suunatud AArch64 arhitektuuri alusel.
Allikas: opennet.ru
