Rust 1.64 programmeerimiskeele väljalaskmine

Üldotstarbeline programmeerimiskeel Rust 1.64 on avaldatud, mille on algselt loonud Mozilla, kuid mille arendust toetab nüüd sõltumatu mittetulunduslik organisatsioon Rust Foundation. Keel keskendub mäluga ohutule tööle ja pakub vahendeid kõrge tööde paralleelsuse saavutamiseks, ilma et oleks vaja prügikoristajat ja runtime'i (runtime piirdub põhialustamise ja standardraamatukogu hooldamisega).

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:

  • Linuxi keskkonna nõuded on tõhustatud kompilaatorites, paketihaldurites Cargo ja standardraamatukogus libstd — Glibc minimaalne versioonitugi on tõstetud versioonist 2.11 versioonini 2.17 ning Linuxi kernel versioonist 2.6.32 versioonini 3.2. Piirangud laienevad ka Rust-i rakenduste käitusfailidele, mis on koostatud libstd-ga. Uutele nõuetele vastavad distributsioonid RHEL 7, SLES 12-SP5, Debian 8 ja Ubuntu 14.04. RHEL 6, SLES 11-SP4, Debian 7 ja Ubuntu 12.04 tugi lõpetatakse. Kasutajatele, kes kasutavad Rusti koostamisriistadega koostatud käitusfaile vanema Linuxi tuumaga keskkondades, soovitatakse oma süsteeme uuendada, jääda vanade kompilaatoriversioonide juurde või iseseisvalt toetada oma libstd haru koos kooskõla säilitamiseks vajalikest kihtidest.

    Vanan vanade Linux-süsteemide toe katkestamise põhjustest mainitakse piiratud ressursse vanade keskkondade toimetuleku säilitamiseks. Vanade Glibc toeks on vajalik kasutada vana tööriistakasti pideva integreerimise süsteemis, kusjuures nõudmised LLVM ja ristkompileerimise tööriistade versioonide osas on kasvanud. Südamiku versiooninõuete suurenemine on seotud võimalusega kasutada libstd-s uusi süsteemikõnesid ilma vajaduseta säilitada kihte, et tagada ühilduvus vanade kernidega.

  • Stabiliseeritud on IntoFuture tüüp, mis meenutab IntoIterator'i, kuid erineb sellest, et kasutab «.await» asemel tsükleid «for ... in ...». Koos IntoFuture'iga saab märksõna «.await» oodata mitte ainult Future tüüpi, vaid ka muid tüüpe, mida saab konverteerida Future'iks.
  • Rust-analyzer utiliit on lisatud Rusti väljaannetes pakutavate utiliitide kogusse. Utiliit on samuti saadaval installimiseks rustupi kaudu (rustup component add rust-analyzer).
  • Cargo paketihalduris on rakendatud võimalus tööruumi pärandamiseks, et vältida väljade standardsete väärtuste, nagu Rusti versioonide ja registri URLide, vahelisi dubleerimisi. Samuti on lisatud tugi mitme sihtplatvormi samaaegseks kompileerimiseks (valikutele „—target” on nüüd võimalik määrata rohkem kui üks parameeter).
  • Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tüüpide rakendused:
    • future::IntoFuture
    • num::NonZero*::checked_mul
    • num::NonZero*::checked_pow
    • num::NonZero*::saturating_mul
    • num::NonZero*::saturating_pow
    • num::NonZeroI*::abs
    • num::NonZeroI*::checked_abs
    • num::NonZeroI*::overflowing_abs
    • num::NonZeroI*::saturating_abs
    • num::NonZeroI*::unsigned_abs
    • num::NonZeroI*::wrapping_abs
    • num::NonZeroU*::checked_add
    • num::NonZeroU*::checked_next_power_of_two
    • num::NonZeroU*::saturating_add
    • os::unix::process::CommandExt::process_group
    • os::windows::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • Peamoodulisse (core) ja teegi alloc on lisatud C-ühilduvad tüübid, mis olid varem stabiilseks muudetud moodulis std::ffi:
    • core::ffi::CStr
    • core::ffi::FromBytesWithNulError
    • alloc::ffi::CString
    • alloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • alloc::ffi::NulError
  • Moodulitesse core::ffi ja std::ffi on lisatud C-tüübid, mis olid varem stabiilseks muudetud moodulis std::os::raw (näiteks C-tüüpide uint ja ulong jaoks on ette nähtud tüübid c_uint ja c_ulong):
    • ffi::c_char
    • ffi::c_double
    • ffi::c_float
    • ffi::c_int
    • ffi::c_long
    • ffi::c_longlong
    • ffi::c_schar
    • ffi::c_short
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_ushort
  • Alused töötlejad on stabiliseeritud Poll mehhanismiga töötamiseks (tulevikus plaanitakse pakkuda lihtsustatud API-d, mis ei nõua madala taseme struktuuride kasutamist, näiteks Pull ja Pin):
    • future::poll_fn
    • task::ready!
  • Märgis «const», mis määratleb kasutamise võimaluse igas kontekstis, on rakendatud funktsioonis slice::from_raw_parts.
  • Andmete kompaktsema salvestamise eesmärgil on muudetud Ipv4Addr, Ipv6Addr, SocketAddrV4 ja SocketAddrV6 struktuuride mäluseadet. Võib tekkida ühilduvuse rikkumine üksikute crate-pakettidega, mis kasutavad std::mem::transmute madala taseme struktuuride manipuleerimiseks.
  • Windowsi platvormi rusti koostamisprotsessis on rakendatud PGO-optimeerimisi (profile-guided optimization), mis on võimaldanud tõsta koodi kompileerimise jõudlust 10-20% võrra.
  • Kompilaatorisse on lisatud uus hoiatus teatavate struktuuride kasutamata väljade kohta.

Lisaks on oluline märkida, et Rusti keele kompilaatori alternatiivse rakenduse arendusaruande on koostanud gccrs (GCC Rust) projekt ning see on heaks kiidetud GCC-sse lisamiseks. Pärast liidese integreerimist saab GCC standardne tööriistakomplekt Rusti keeles programme kompileerida ilma rustc kompilaatori installeerimiseta, mis põhineb LLVM-i töödel. Arendus edeneb plaani kohaselt ja kui ettenägematuid probleeme ei teki, integreeritakse Rusti keel GCC 13 väljaandes, mis on planeeritud järgmise aasta maikuuks. Rusti teostus GCC 13-s on beeta versioon, mis ei ole vaikimisi kaasatud.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster