Rust 1.84 vÀljalaskmine. Rustis kirjutatud Tock ja Vekos tuumad. Mini-C dialekt

Avaldatud on ĂŒldotstarbelise programmeerimiskeele Rust 1.84 versioon, mille on vĂ€lja töötanud Mozilla projekt, kuid mille arendamine toimub nĂŒĂŒd sĂ”ltumatu mittetulundusĂŒhingu Rust Foundation ehk Rusti Fondi juures. Keel keskendub mĂ€lukaitsele ja pakub tööriistu, et saavutada ĂŒlesannete tĂ€itmisel kĂ”rge paralleelsus, ilma prĂŒgikorjaja ja runtime'i kasutamiseta (runtime piirdub pĂ”hialuste algseadistamise ja standardraamatukogu haldamisega).

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:

  • Cargo paketihalduris on stabiliseeritud sĂ”ltuvuste töötlemise mehhanism, mis valib sĂ”ltuvate komponentide versioonid, arvestades Rusti kompilaatori versioonide ĂŒhilduvust, mis on projekti poolt deklareeritud kui minimaalne toetatav versioon (MSRV, Minimum Supported Rust Version). Uus funktsionaalsus vabastab haldajad vajadusest kĂ€sitsi valida iga sĂ”ltuvuse vanu versioone projektides, mis sĂ€ilitavad ĂŒhilduvuse vanade Rusti tööriistade versioonidega. Uus sĂ”ltuvuste mÀÀratlemise reĆŸiim aktiveeritakse vaikimisi Rust 1.85 vĂ€ljaandes, kuid on juba praegu saadaval valikuna. Selle aktiveerimiseks tuleks faili '.cargo/config.toml' sektsiooni '[resolver]' lisada 'incompatible-rust-versions = "fallback"'.
  • Algasime kompilaatori tĂ”lkimise uue tĂŒĂŒbi töötleja (trait solver) peale, mis on mĂ”eldud tĂŒĂŒbi rakendamise piire, tĂŒĂŒbi normaliseerimist ja tĂŒĂŒpide ĂŒhilduvuse hindamist kontrollima. Versioonis 1.84 on uus töötleja kaasatud tĂŒĂŒbivormide rakenduste jĂ€rjepidevuse kontrollimisse, st hinnates, kas antud tĂŒĂŒbile arvesse vĂ”etud koodist teiste crate-pakettide kontekstis on olemas rohkem kui ĂŒks tĂŒĂŒp. See kontroll aitas lahendada probleeme vana tĂŒĂŒbi töötleja rakenduses, mis vĂ”ivad potentsiaalselt pĂ”hjustada konflikte erinevate tĂŒĂŒbivormide rakenduste ristumiste tĂ”ttu.
  • Pakutud uus API „Strict Provenance”, mida saab kasutada nĂ€itaja teisendamiseks tĂ€isarvuks ja tagasi, arvestades nĂ€itajaga seotud metaandmeid, mis sisaldavad teavet selle pĂ€ritolu ja kasutusala kohta (nĂ€itaja aadressile on lisatud „provenance” vÀÀrtus, mis sisaldab teavet seoste kohta teiste nĂ€itajatega, mis vĂ”imaldab mÀÀrata, kus ja millal nĂ€itaja vĂ”ib mĂ€lu juurde pÀÀseda). NĂ€itaja teisendamisel tĂ€isarvuks ja tagasi tekib mÀÀramatus, kuna tulemuse nĂ€itaja pĂ€ritolu jĂ€lgimine on problemaatiline. Uus API vĂ”imaldab teha madalama taseme toiminguid nĂ€itajatega, nagu nĂ€iteks tĂ€iendava teabe salvestamine nĂ€itaja madalamates bittides, ilma nĂ€itaja muutmata tĂ€isarvuks.
  • Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide rakendused:
    • Ipv6Addr::is_unique_local
    • Ipv6Addr::is_unicast_link_local
    • core::ptr::with_exposed_provenance
    • core::ptr::with_exposed_provenance_mut
    • <ptr>::addr
    • <ptr>::expose_provenance
    • <ptr>::with_addr
    • <ptr>::map_addr
    • <int>::isqrt
    • <int>::checked_isqrt
    • <uint>::isqrt
    • NonZero::isqrt
    • core::ptr::without_provenance
    • core::ptr::without_provenance_mut
    • core::ptr::dangling
    • core::ptr::dangling_mut
    • Pin::as_deref_mut
  • MĂ€rkus 'const' 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
  • Toetatud on inline-assembleri sisestuste stabiilsus arhitektuuridele s390x ja Arm64EC.
  • WebAssembly sihtplatvormi jaoks on multivalue, reference-types ja tail-call funktsionaalsuse tugi stabiilne.
  • Rakendatud on teine tase wasm32v1-none platvormi toeks. Teine tase tagab ehituse garantiid.

Samuti vÔib mÀrkida mitmeid Rustiga seotud projekte:

  • Avaldatud on Tock 2.2 operatsioonisĂŒsteemi versioon, mis on kirjutatud Rusti keeles ja eesmĂ€rgiks on seda kasutada mikrokontrollerites. SĂŒsteem vĂ”imaldab samaaegset mitme usaldusvÀÀrse rakenduse kĂ€ivitamist kaasaskantavates seadmetes, millel on piiratud RAM-i suurus, nĂ€iteks andurid, TPM (Trusted Platform Module), autentimisseadmed ja kantavad seadmed. Toetatakse ARM Cortex-M ja RISC-V arhitektuuril pĂ”hinevaid mikrokontrollereid. Tock'i peamine omadus on rakenduste, kernel'i ja draiverite tasemete isoleerimine, samuti iga rakenduse ja draiveri eraldi isoleerimine. Isoleerimist teostatakse nii Rusti keele vĂ”imaluste kui ka mĂ€lu kaitse taseme jagamise kaudu.
  • VEKOS (Verified Experimental Kernel OS) projekt arendab operatsioonisĂŒsteemi tuuma Rusti keeles, tagades teostatavate komponentide verifitseerimise. Iga kord, kui toiminguid faili sĂŒsteemis, protsessi loomisel ja mĂ€lu jaotamisel, luuakse krĂŒptograafiline tĂ”end, mis vĂ”imaldab toimingut tĂ€itmise ajal verifitseerida (rakendamine sarnaneb plokiahela kasutamisega verifitseerimise jaoks operatsioonisĂŒsteemis). VKFS failisĂŒsteemis kasutatakse tagasiulatuva moonutamise kaitseks ja terviklikkuse tagamiseks „Merkle puu“ struktuuri, kus iga oks verifitseerib kĂ”ik ĂŒlemised oksad ja sĂ”lmed, tĂ€nu puu struktuuri hÀƥhimisele. MĂ€lu jaotamine toimub COW (Copy-On-Write) reĆŸiimis.
  • Microsofti ja Inria teadlaste grupp arendab C keele alakomplekti — Mini-C, mis on mĂ”eldud C keeles kirjutatud programmide automaatseks tĂ”lkimiseks Rust keeles esitamiseks. Erinevalt c2rust kompilaatorist vĂ”imaldab uus projekt genereerida Rust koodi ilma unsafe kasutamata, kuid keskendub peamiselt C projektide teisendamisele, millel on formaalne usaldusvÀÀrsuse tĂ”end. Oletatakse, et C projekti Mini-C esitusse tĂ”lkimine, millel ei lubata pointeritega seotud aritmeetilisi tehteid, on lihtsam, kui unsafe plokkide ĂŒmberkirjutamine otse C-st Rusti.

    Kompilaatori rakendamine pĂ”hineb KaRaMeL tööriistade komplektil. Mini-C on vĂ€lja töötatud ja testitud Rustile kirjutamise projekti raames, kus on tĂ”endatud krĂŒptograafilise HACL* teegi usaldusvÀÀrsus. Sarnast tĂ”endit on kasutatud Mini-C-st ohutu koodi genereerimise vĂ”imaluse demonstreerimiseks Rusti keeles.

  • Daniel Stenberg, curl'i arendaja, kuulutas vĂ€lja Curl'i alternatiivse HTTP-tagaosa arendamise ja toe lĂ”petamise, mis on kirjutatud Rustis ja kasutab Hyper'i teeki. PĂ”hjuseks on arendajate ja kasutajate huvi puudumine.
  • KĂ€ivitati Fish'i 4.0 versiooni beetavĂ€lja, mis on ĂŒmber kirjutatud Rust keeles. PĂ€rast kaheaastast arendust on Fish'i koodibaas tĂ€ielikult muudetud C++-st Rust'i. Üleminek Rust'ile lahendas mitme lĂ”ime probleemid, pakkus kaasaegset tööriistade kogumit, mis tuvastab vigu kompileerimise etapis, suurendas mĂ€lu kasutamise turvalisust ning tegi projekti atraktiivsemaks uutele arendajatele.
  • Tor projekti avaldas Arti 1.3.2, alternatiivse Tor-kliendi rakenduse Rusti keeles. Arti pakub kaasatud teeki, mida saavad kasutada erinevad rakendused. Arti loomisel on arvestatud varasema Tor'i arenduse kogemustega, et vĂ€ltida tuntud arhitektuuri probleeme, muuta projekt modulaarses ja tĂ”husamaks. 1.x haru on mĂ€rgitud sobilikuks tavalistele kasutajatele ning tagab sama taseme konfidentsiaalsust, kasutusmugavust ja stabiilsust nagu peamine rakendus C keeles. Uues versioonis jĂ€tkub RPC arendamine, valmistatakse ette toe rakendamine relee jaoks ja lisatakse kaitse DoS-rĂŒnnakute eest Onion-teenustele.
  • Avaldatud on Bevy 0.15 mĂ€ngumootori versioon, mis on kirjutatud Rust keeles. Mootoris kasutatakse andmekeskusele keskendunud mudelit (Data Driven) mĂ€nguloogika mÀÀratlemiseks, mis on ĂŒles ehitatud Bevy ECS (Entity Component System) komplekti valmis komponentide pĂ”hjal, mida saab paralleelselt töödelda. Toetatakse 2D ja 3D renderdamist, luustiku animatsiooni, renderdamise graafiku mÀÀratlemist, stseenide loomise sĂŒsteemi, kasutajaliidese ehitamise raamistikku ning stseenide ja ressursside muutmist ilma taaskĂ€ivitamiseta.
  • Avaldatud on kĂ€surea tekstiredaktor Helix 25.01, mis on kirjutatud Rust keeles ja laiendab ideid, mis on vĂ€lja kujunenud vim ja neovim. Toetatakse LSP-serveritega integreerimist ning Tree-sitterit, mitme ploki samaaegset esiletĂ”stmist, mitme kursoriga redigeerimist, kujundusteemasid ja tĂ”rkekohandamise protokolli DAP (Debug Adapter Protocol).
  • Rust keeles kirjutatud brauserimootorisse Servo on lisatud tumeda reĆŸiimi toetamine. ServoShelli suurust on vĂ€hendatud 20%. Web-spetsiifikatsioonide toetus on viidud selleni, et nĂŒĂŒd on vĂ”imalik siseneda ja lugeda sĂ”numeid Discordis (sĂ”numite saatmine ei ole veel vĂ”imalik).
  • Mozilla esitles Uniffi for React Native tööriista, et luua Rusti keeles React Native'i mooduleid.
  • Tehti PNG-formaadiga piltide kodeerijate jĂ”udlustest. Rusti dekodeerijad (png, zune-png, wuffs) osutusid kiiremateks kui C keele dekodeerijad (libpng, spng, stb_image). NĂ€iteks pakk png (image-rs) ĂŒletas libpng 1,8 korda x86-sĂŒsteemil ja 1,5 korda ARM-sĂŒsteemil. image-rs: 375.401 MP/s (keskmine) 318.632 MP/s (geomees) zune-png: 376.649 MP/s (keskmine) 302.529 MP/s (geomees) wuffs: 376.205 MP/s (keskmine) 287.181 MP/s (geomees) libpng: 208.906 MP/s (keskmine) 173.034 MP/s (geomees) spng: 299.515 MP/s (keskmine) 235.495 MP/s (geomees) stb_image: 234.353 MP/s (keskmine) 171.505 MP/s (geomees)

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster