Rust 1.89 vÀljaanne. Ligikaudu 8% src-pakettidest Debian Sid'is sÔltuvad Rust'ist.

KĂ€ideti vĂ€lja Rust 1.89 programmeerimiskeel, mille algatas Mozilla projekt, kuid mida praegu juhib sĂ”ltumatu mittetulundusĂŒhing Rust Foundation. Keel on keskendunud mĂ€lukaitsele ja pakub vahendeid ĂŒlesannete suure paralleelsuse saavutamiseks, samas vĂ€ltides prĂŒgikoristaja ja runtime'i kasutamist (runtime piirdub baasi initsialiseerimise ja standardraamatukogu kaasamisega).

MÀluga töötamise meetodid Rust'is vabastavad arendajad pointerite manipulatsiooni vigadest ja kaitsevad neid probleemide eest, mis tulenevad madala taseme mÀlu haldamisest, nagu mÀlualale pÀrast selle vabastamist juurdepÀÀs, null-pointerite dereferentseerimine, puhverserveri piiridest vÀljumine jne. Raamatukogude levitamiseks, kokkupaneku tagamiseks ja sÔltuvuste haldamiseks arendatakse paketihaldurit Cargo. Raamatukogude majutamiseks toetatakse repoturite crates.io.

MĂ€luhĂŒgieen Rust'is tagatakse kompileerimise ajal viidete kontrollimise, objektide omandi jĂ€lgimise, objektide eluaja (vaateala) arvestamise ja mĂ€lule juurdepÀÀsu korrektuse hindamise kaudu koodi tĂ€itmise ajal. Rust pakub ka vahendeid tĂ€isarvude ĂŒlevoolude vĂ€ltimiseks, nĂ”uab muutujate vÀÀrtuste kohustuslikku initsialiseerimist enne kasutamist, kĂ€sitleb vigu paremini standardraamatukogus, rakendab muutumatuse (immutable) mĂ”istet viidete ja muutujate jaoks vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade vĂ€hendamiseks.

Peamised uuendused:

  • Pakutakse vĂ”imalust kasutada sĂŒmbolit „_” ĂŒldiste parameetrite argumendina koos „const” tĂ€hisega nende parameetrite vÀÀrtuste tuletamiseks ĂŒmbritsevast kontekstist. pub fn all_false() -> [bool; LEN] { [false; _] }
  • Lisatud uus lint-hoiatust "mismatched_lifetime_syntaxes", et lahendada mitteĂŒhtlane eluea mÀÀratlemine funktsioonide signerimisel, kasutades „lifetime elision“ mehhanismi (automaatne eluea mÀÀratlemine viidates, vĂ”imaldades vĂ€ltida kĂ€sitsi mÀÀratlemist). Hoiatus kontrollib, et funktsiooni sisend- ja vĂ€ljundparameetrid kuuluvad samasse tĂŒĂŒbigruppi. Gruppide moodustamine pĂ”hineb selgesĂ”nalise eluea mÀÀratlemise toest ja eluea automaatse jĂ€reldamise vĂ”imalustel kompilaatori poolt (nĂ€iteks tĂŒĂŒpides "&’a T" ja "ContainsLifetime<‘a>" vĂ”ib eluea selgesĂ”naline mÀÀratlemine olla, kuid kompilaator ei suuda automaatselt eluea mÀÀrata, samas kui tĂŒĂŒpides "&T", "&’_ T" ja "ContainsLifetime<‘_>" on lubatud nii selgesĂ”naline mÀÀratlemine kui ka automaatne mÀÀratlemine).
  • Atribuudis "target_feature" x86 sĂŒsteemidele on realiseeritud vĂ”imalus kontrollida suurenenud kĂ€su komplektide toetust sha512, sm3, sm4, kl ja widekl, samuti eraldi funktsioone avx512. #[target_feature(enable = "avx512bw")] pub fn cool_simd_code(/* .. */) -> /* 
 */ { /* 
 */ }
  • Tagatud on doctesti (dokumentatsioonis sisseehitatud testid) kĂ€ivitamine mitte ainult praegusele sihtplatvormile, vaid ka teistele platvormidele, mis on mÀÀratud „cargo“ pakihalduri kĂ€ivitamisel („cargo test —doc —target other_target“).
  • ‘extern "C"‘ funktsioonide puhul, kui sihtplatvormiks on „wasm32-unknown-unknown“, on WebAssembly jaoks realiseeritud standardne C ABI.
  • MĂ”ned tĂ€helepanekud tĂŒĂŒpide ĂŒhilduvuse osas, on lubatud kasutada i128 ja u128 tĂŒĂŒpe vĂ€liste C funktsioonide (extern „C") puhul, mille kohta on varem ilmunud lint-hoiatus „improper_ctypes_definitions“.
  • Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒbispetsiifikatsioonide rakendused:
    • Paljud kompilaatorisse sisseehitatud funktsioonid (Intrinsics) x86 protsessorite jaoks, sealhulgas AVX512, SHA512, SM3 ja SM4 funktsioonid.
    • NonZero<char>
    • File::lock
    • File::lock_shared
    • File::try_lock
    • File::try_lock_shared
    • File::unlock
    • NonNull::from_ref
    • NonNull::from_mut
    • NonNull::without_provenance
    • NonNull::with_exposed_provenance
    • NonNull::expose_provenance
    • OsString::leak
    • PathBuf::leak
    • Result::flatten
    • std::os::linux::net::TcpStreamExt::quickack
    • std::os::linux::net::TcpStreamExt::set_quickack

    MĂ€rgis „const“ on rakendatud funktsioonides:

    • <[T; N]>::as_mut_slice
    • <[u8]>::eq_ignore_ascii_case
    • str::eq_ignore_ascii_case
  • Algus on toiming, et sihtplatvorm "x86_64-apple-darwin" viida esimeselt toe tasemelt teisele (Apple kavatseb lĂ”petada x86_64 arhitektuuri toe). Esimene toe tase tĂ€hendab binaarsĂ”lmede loomist, pĂ”hjalikku testimist ja kĂ”rgeima toe garantii pakkumist — iga kompilaatoris tehtud muudatus kontrollitakse tĂ€ie testikomplekti lĂ€biviimisega. Teine toe tase tĂ€hendab kokkuleppe garantii olemasolu, kuid testikomplekti lĂ€bimise garantii puudumist.
  • Reaaliseeritud on kolmas toe tase platvormidele "loongarch32-unknown-none" ja "loongarch32-unknown-none-softfloat". Kolmas tase tĂ€hendab pĂ”hitoe olemasolu, kuid puuduvad automatiseeritud testimised, ametlike versioonide avaldamine ja koodi kokkuleppe kontrollimine.

Lisaks vĂ”ib mĂ€rkida Rusti seonduvaid sĂŒndmusi ja projekte:

  • Avaldatud on raport Rusti pakettide olukorrast Debianis. MĂ€rgitakse, et Debian Unstable (Sid) haru sisaldab umbes 8% src-pakettidest peamise repositooriumi kogus, mis on seotud vĂ€hemalt ĂŒhe "librust-*" paketi sĂ”ltuvustega. Debiani 12-s oli selliseid pakette 4.5%. Samuti mĂ€rgiti, et rohkem kui 3000 paketti sisaldavad Rusti koodi, mis on vĂ€lja toodud pakettides librust-..-dev, ja 150 src-paketti tarnivad kompileeritud kĂ€ivitatavad failid vĂ”i Rusti raamatukogud.

    Debianile huvipakkuvatest pakettidest on mainitud sudo-rs, ntpd-rs, uutils, Sequoia, rpgp, hickory (DNS), Rustls, rav1d ja fish. Rusti valikuline tugi on rakendatud APT-s, QEMU-s (virtiofsd), Linuxi kernelis ja Mesas, samuti oodatakse LibreOffices. Crate-pakettide muutmiseks Debiani src-pakettideks on arendatud tööriistade komplekt debcargo.

  • Esitatud on projekt tmux-rs, mis arendab terminali multiplexer tmuxi klooni (konsooli aknahaldur), mis on kirjutatud C-st Rusti keeles.
  • Driveri Tyr arendaja ettevĂ”ttest Collabora avaldas artikli GPU-de ja kĂ”rgema taseme drivaatorite arengust Rusti keeles.
  • Demonstratsiooniks on esitatud universaalne rakendus Rusti keeles, mis suudab töötada nii CPU-l kui ka erinevatel GPU platvormidel: CUDA NVIDIA-le, SPIR-V GPU-dele, mis toetavad Vulkanit, Metal Apple'i jaoks, DirectX 12 Windowsile ja WebGPU brauseritele.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster