Rust 1.84 vÀljaanne. Tock ja Vekos tuumad, mis on kirjutatud Rustis. Mini-C dialekt.

Avaldatud on ĂŒldotstarbelise programmeerimiskeele Rust 1.84 versioon, mille on vĂ€lja töötanud Mozilla projekt, kuid mida arendab praegu iseseisev mittetulundusĂŒhing Rust Foundation. Keel keskendub mĂ€luturvalisusele ning pakub vahendeid kĂ”rge ĂŒlesannete tĂ€itmise paralleelsuse saavutamiseks, samas kui mĂ€luhaldus ei kasuta prĂŒgikogujat ja runtime (runtime piirdub pĂ”hi-initsialiseerimise ja standardraamatukogu haldamisega).

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:

  • Pakihalduris Cargo on stabiliseeritud sĂ”ltuvuste töötlemise mehhanism, mis valib sĂ”ltuvate komponentide versioonid, vĂ”ttes arvesse nende ĂŒhilduvust Rusti kompilaatori poolt mÀÀratud minimaalsete toetatavate versioonidega (MSRV, Minimum Supported Rust Version). Uus vĂ”imalus vabastab arendajad vajadusest kĂ€sitsi valida iga sĂ”ltuvuse vanad versioonid projektides, mis sĂ€ilitavad ĂŒhilduvuse vana Rusti tööriistakomplekti versioonidega. Uus sĂ”ltuvuste mÀÀramise reĆŸiim aktiveerub vaikimisi Rust 1.85 vĂ€ljaandes, samas kui praegu on see saadaval valikuna, mille kĂ€ivitamiseks tuleks faili „.cargo/config.toml“ jaotises „[resolver]“ mĂ€rkida ‘incompatible-rust-versions = „fallback“‘.
  • Alustatud on kompilaatori ĂŒleminekut uuele tĂŒĂŒbihaldurile (trait solver), mis on mĂ”eldud tĂŒĂŒbiprobleemide piiride kontrollimiseks, tĂŒĂŒpide normaliseerimiseks ja tĂŒĂŒpide ĂŒhilduvuse hindamiseks. Versioonis 1.84 on uus töötleja kaasatud tĂŒĂŒpide rakenduste kooskĂ”la kontrollimiseks, st ĂŒhegi tĂŒĂŒbiga seotud tĂŒĂŒbihalduse eksisteerimise hindamiseks, arvestades teisi crate-pakette. Mainitud kontroll on vĂ”imaldanud vabaneda tĂŒĂŒbihalduri vana versiooni probleemidest, mis vĂ”iksid tekitada konflikte erinevate tĂŒĂŒbiprobleemide ĂŒhisosa tĂ”ttu.
  • Pakutud on uus API «Strict Provenance», mida saab kasutada pointeri konverteerimiseks tĂ€isarvuks ja vastupidi, arvesse vĂ”ttes pointerile lisatud metaandmeid, mis sisaldavad teavet selle pĂ€ritolu ja kasutusala kohta (pointeri aadressile on lisatud vÀÀrtus «provenance», mis sisaldab teavet seoste kohta teiste pointeritega, mis vĂ”imaldab mÀÀrata, kus ja millal pointer vĂ”ib mĂ€lu kasutusele vĂ”tta). Pointeri konverteerimisel tĂ€isarvuks ja tagasi vĂ”ib tekkida mÀÀramatu kĂ€itumine, kuna on keeruline jĂ€lgida tulemuse pointeri pĂ€ritolu. Uus API vĂ”imaldab teostada madala taseme operatsioone pointeritega, nĂ€iteks salvestada lisainfot pointeri madalamatesse bittidesse, ilma pointerit tĂ€isarvuks konverteerimata.
  • Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒbispetsiifikatsioonide rakendused:
    • Ipv6Addr::is_unique_local
    • Ipv6Addr::is_unicast_link_local
    • core::ptr::with_exposed_provenance
    • core::ptr::with_exposed_provenance_mut
    • ::addr
    • ::expose_provenance
    • ::with_addr
    • ::map_addr
    • ::isqrt
    • ::checked_isqrt
    • ::isqrt
    • NonZero::isqrt
    • core::ptr::without_provenance
    • core::ptr::without_provenance_mut
    • core::ptr::dangling
    • core::ptr::dangling_mut
    • Pin::as_deref_mut
  • MĂ€rgis „const“ on rakendatud funktsioonides:
    • AtomicBool::from_ptr
    • AtomicPtr::from_ptr
    • AtomicU8::from_ptr
    • AtomicU16::from_ptr
    • AtomicU32::from_ptr
    • AtomicU64::from_ptr
    • AtomicUsize::from_ptr
    • AtomicI8::from_ptr
    • AtomicI16::from_ptr
    • AtomicI32::from_ptr
    • AtomicI64::from_ptr
    • AtomicIsize::from_ptr
    • ::is_null
    • ::as_ref
    • ::as_mut
    • Pin::new
    • Pin::new_unchecked
    • Pin::get_ref
    • Pin::into_ref
    • Pin::get_mut
    • Pin::get_unchecked_mut
    • Pin::static_ref
    • Pin::static_mut
  • Stabiliseeritud on assembler inline-integreerimise tugi arhitektuuridele s390x ja Arm64EC.
  • EesmĂ€rgiga platvormile WebAssembly on stabiliseeritud multivalue, reference-types ja tail-call funktsionaalsuse tugi.
  • On ellu viidud teine tase wasm32v1-none platvormi toeks. Teine toetasam soodustab ehituse garantiid.

Lisaks tasub mÀrkida mitmeid Projekte, mis on seotud Rustiga:

  • On avatud Tock 2.2 operatsioonisĂŒsteemi vĂ€ljaanne, mis on kirjutatud Rusti keeles ja suunatud mikrokontrollerite kasutamiseks. SĂŒsteem vĂ”imaldab samal ajal kĂ€itada mitmeid usaldusvÀÀrsust mitteomavaid rakendusi sisseehitatud seadmetes, millel on piiratud RAM-i maht, nagu andurid, TPM (Trusted Platform Module), autentimise vĂ”tmed ja kantavad seadmed. Toetatakse ARM Cortex-M ja RISC-V arhitektuuril pĂ”hinevaid mikrokontrollerite platvorme. Tock peamine omadus on rakenduste, tuuma ja draiverite tasemete isolatsioon ning iga rakenduse ja draiveri eraldi isolatsioon. Isolatsiooni saavutatakse nii Rusti keele vĂ”imaluste kui ka kaitse mĂ€lu tasemel jagamise kaudu.
  • VEKOS (Verified Experimental Kernel OS) projekt arendab Rusti keeles kirjutatud operatsioonisĂŒsteemi tuuma, mis vĂ”imaldab sooritada komponentide verifitseerimist. IgaĂŒhega, mis on seotud failisĂŒsteemi, protsessi loomise ja mĂ€lu eraldamise, luuakse krĂŒptograafiline tĂ”end, mis vĂ”imaldab operatsiooni verifitseerimist selle kĂ€igus (rakendus sarnaneb plokiahela kasutamisega operatsioonisĂŒsteemi tegevuste verifitseerimisel). VKFS failisĂŒsteemis on tagatud terviklikkus ja varasemate muudatuste moonutamise kaitse kasutades Merkle puu struktuuri, mille iga haru verifitseerib kĂ”ik alluvad harud ja sĂ”lmed, tĂ€nu puustruktuuri hashesimisele. MĂ€lu eraldamine toimub COW (Copy-On-Write) reĆŸiimis.
  • Microsofti ja Inria teadlaste grupp arendab C keele alamsuutlikku — Mini-C, mis on mĂ”eldud automaatseks C-keeles kirjutatud programmide tĂ”lkimiseks Rusti keele esitusse. Erinevalt c2rust kompilaatorist vĂ”imaldab uus projekt genereerida Rusti koodi ilma unsafe kasutamata, kuid on peamiselt suunatud C projektide legitiimsuse tĂ”endamise transformeerimisele. Eeldatakse, et on lihtsam esialgu tĂ”lkida C projekt Mini-C esitusse, kus ei lubata pointerite matemaatilisi operatsioone, kui kirjutada unsafe-blokke ĂŒmber pĂ€rast otsest kompileerimist C-st Rusti.

    Kompaileeri rakendamine pĂ”hineb tööriistakomplektil KaRaMeL. Mini-C on loodud ja testitud Rusti krĂŒptograafia raamatukogu HACL* ĂŒmberkirjutamise projekti raames, millele on antud formaalne usaldusvÀÀrsuse tĂ”end. Sellist tĂ”endit on kasutatud Mini-C-st ohutu Rusti koodi genereerimise vĂ”imaluse demonstreerimiseks.

  • Daniel Stenberg, curl utiliidi autor, teatas Curl projekti alternatiivse HTTP taustaprogrammi, mis on kirjutatud Rustis Hyper raamatukogu abil, arendamise ja toe lĂ”petamisest. PĂ”hjuseks on arendajate ja kasutajate huvi puudumine.
  • TöörĂŒhma Shelli Fish 4.0 beetaversioon on vĂ€lja kuulutatud, see on ĂŒmber kirjutatud Rustis. MĂ€rgitakse, et pĂ€rast kaheaastast arendustööd on Fishi koodibaas tĂ€ielikult ĂŒle viidud C++-st Rusti. Ümberminek Rustile aitas lahendada mitme lĂ”ime probleemid, saavutada kaasaegne tööriistade kogum, mis leiab vead kompileerimise etapis, suurendada mĂ€lu kasutamise ohutust ja muuta projekt uutele arendajatele atraktiivsemaks.
  • Tor projekt avaldas versiooni Arti 1.3.2, alternatiivne Tor-kliendi rakendus Rustis. Arti pakub sisseehitatud raamatukogu, mida saavad kasutada erinevad rakendused. Arti loomisel arvestati varasema Tor arendamise kogemust, et vĂ€ltida tuntud arhitektuurilisi probleeme, muuta projekt modulaarsemaks ja tĂ”husamaks. Haru 1.x on mĂ€rgitud tavaliste kasutajate jaoks kasutamiseks sobivaks, tagades sama taseme privaatsuse, kasutusmugavuse ja stabiilsuse nagu pĂ”hiversioon C keeles. Uues versioonis jĂ€tkub RPC arendamine, toetuse ettevalmistamine releedele ja DoS rĂŒnnakute kaitse Onion-teenustele on lisatud.
  • Avaldatud mĂ€ngumootori Bevy 0.15 vĂ€ljaanne, kirjutatud Rustis. Mootoris kasutatakse andmepĂ”hist mudelit (Data Driven) mĂ€nguloogika mÀÀratlemiseks, mis on ehitatud Bevy ECS (Entity Component System) valmis komponentide kogumi peale ning vĂ”imaldab paralleelset tööd. Toetatakse 2D ja 3D renderdamist, luustikuanimatsiooni, renderdamise graafi mÀÀratlemist, stseenide loomise sĂŒsteemi, kasutajaliidese loomise raamistikku ning muudatuste tegemist stseenides ja ressurssides ilma vajaduseta taaskĂ€ivitada.
  • Avaldatud on Helix 25.01 konsoolitekstieditor, mis on kirjutatud Rusti keeles ning arendab vĂ€lja vim-i ja neovim-i ideid. Toetatakse LSP-serverite integreerimist ja Tree-sitter'i, vĂ”imaldab samaaegset mitme ploki esiletĂ”stmist, kasutades mitut kursorit redigeerimisel, ning pakub kujundusteemasid ja DAP (Debug Adapter Protocol) silumisprotokolli.
  • Rustis kirjutatud brauserimootorisse Servo on lisatud tumeda teema tugi. ServoShell'i suurust on vĂ€hendatud 20%. Veebi spetsifikatsioonide tugi on viidud selleni, et on vĂ”imalik sisse logida ja sĂ”numeid lugeda Discordis (sĂ”numite saatmine hetkel pole vĂ”imalik).
  • Mozilla on tutvustanud Uniffi for React Native tööriistu Rusti keeles kirjutatud React Native moodulite loomiseks.
  • On lĂ€biviidud PNG-pildikodeerijate jĂ”udlustestimine. Rusti dekooderid (png, zune-png, wuffs) osutusid kiiremateks kui C keeles kirjutatud dekooderid (libpng, spng, stb_image). NĂ€iteks crate-paket png (image-rs) ĂŒletas libpng'i x86 sĂŒsteemis 1.8 korda ja ARM sĂŒsteemis 1.5 korda. image-rs: 375.401 MP/s (keskmine) 318.632 MP/s (geomeetriline keskmine) zune-png: 376.649 MP/s (keskmine) 302.529 MP/s (geomeetriline keskmine) wuffs: 376.205 MP/s (keskmine) 287.181 MP/s (geomeetriline keskmine) libpng: 208.906 MP/s (keskmine) 173.034 MP/s (geomeetriline keskmine) spng: 299.515 MP/s (keskmine) 235.495 MP/s (geomeetriline keskmine) stb_image: 234.353 MP/s (keskmine) 171.505 MP/s (geomeetriline keskmine)

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