Rust 1.67 programmeerimiskeele väljalase

Avaldatud on Mozilla projektiga rajatud, kuid nüüdseks sõltumatu mittetulundusühingu Rust Foundation egiidi all välja töötatud üldotstarbelise programmeerimiskeele Rust 1.67 väljalase. Keel keskendub mälu ohutusele ja pakub vahendeid töö kõrge paralleelsuse saavutamiseks, vältides samal ajal prügikoguja ja käitusaja kasutamist (käitusaeg lüheneb standardse teegi põhikäivitamise ja hoolduseni).

Rusti mälukäsitlusmeetodid säästavad arendajat osutitega manipuleerimisel esinevate vigade eest ja kaitsevad madala tasemega mälukäsitluse tõttu tekkivate probleemide eest, nagu mälualale juurdepääs pärast selle vabastamist, nullviidate viitamise tühistamine, puhvri ülekoormus jne. Teekide levitamiseks, järkude pakkumiseks ja sõltuvuste haldamiseks arendab projekt Cargo paketihaldurit. Hoidlat crates.io toetatakse teekide majutamiseks.

Mälu turvalisus on Rustis kompileerimise ajal tagatud viidete kontrollimise, objekti omandiõiguse jälgimise, objektide eluea (ulatuse) jälgimise ja mälule juurdepääsu õigsuse hindamise kaudu koodi täitmise ajal. Rooste pakub ka kaitset täisarvude ületäitumise eest, nõuab muutujate väärtuste kohustuslikku lähtestamist enne kasutamist, käsitleb standardteegi vigu paremini, rakendab vaikimisi muutumatute viidete ja muutujate kontseptsiooni, pakub tugevat staatilist tippimist loogiliste vigade minimeerimiseks.

Peamised uuendused:

  • Funktsiooniga Future::Output asünkroonimisfunktsioonide jaoks on nüüd võimalik määrata "#[must_use]" märkused, mis sisaldavad hoiatust, kui tagastatavat väärtust ignoreeritakse, mis aitab tuvastada vigu, mis on põhjustatud eeldusest, et funktsioon väärtusi muudab selle asemel, et tagastada uus väärtus. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().oota; } hoiatus: "bar" tagastab tuleviku kasutamata väljundi, mida tuleb kasutada —> src/lib.rs:5:5 | 5 | bar().oota; | ^^^^^^^^^^^ | = märkus: `#[warn(unused_must_use)]` on vaikimisi sisse lülitatud
  • Uuendatud on FIFO järjekordade std::sync::mpsc (multi-producer single-consumer) juurutamist, mis on üle läinud ristkiire-kanali mooduli kasutamisele, säilitades samas varasema API. Uus rakendus eristub mitmete probleemide lahendamise, suurema jõudluse ja lihtsustatud koodihoolduse poolest.
  • API uus osa on viidud stabiilsete kategooriasse, sealhulgas on stabiliseeritud meetodid ja tunnuste rakendused:
    • {täisarv}::kontrollitud_ilog
    • {täisarv}::kontrollitud_ilog2
    • {täisarv}::kontrollitud_ilog10
    • {täisarv}::ilog
    • {täisarv}::ilog2
    • {täisarv}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Funktsioonides kasutatakse atribuuti “const”, mis määrab võimaluse kasutada seda konstantide asemel mis tahes kontekstis:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Kolmas tugitase on juurutatud Rusti kasutamiseks Linuxi tuumas (linuxkernel), samuti Sony PlayStation 1 (mipsel-sony-psx), PowerPC koos AIX-iga (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platvormid qnx710, x86_64-pc-nto-qnx710). Kolmas tase hõlmab põhituge, kuid ilma automaatse testimiseta, ametlike järelversioonide avaldamise või koodi loomiseta.

Lisaks võime märkida, et ARM avaldas paigad, mis võimaldavad kasutada Rust keelt AArch64 arhitektuuril põhinevate süsteemide jaoks kokkupandud draiverite ja Linuxi tuumamoodulite arendamiseks.

Allikas: opennet.ru

Lisa kommentaar