Ġiet rilaxxata l-lingwa ta 'programmar għal skopijiet ġenerali Rust 1.84, imwaqqfa mill-proġett Mozilla iżda issa żviluppat taħt l-awspiċi tal-organizzazzjoni indipendenti mingħajr skop ta' qligħ Rust Foundation. Il-lingwa tiffoka fuq is-sikurezza tal-memorja u tipprovdi l-mezzi biex tikseb paralleliżmu għoli tax-xogħol filwaqt li tevita l-użu ta 'ġbir ta' żibel u runtime (runtime huwa mnaqqas għal inizjalizzazzjoni bażika u manutenzjoni tal-librerija standard).
Il-metodi tal-immaniġġjar tal-memorja ta 'Rut isalvaw lill-iżviluppatur minn żbalji meta jimmanipula l-indikazzjonijiet u jipproteġu kontra problemi li jinqalgħu minħabba t-tqandil tal-memorja ta' livell baxx, bħall-aċċess għal żona tal-memorja wara li tkun ġiet meħlusa, dereferencing null pointers, buffer overruns, eċċ. Biex iqassam il-libreriji, jipprovdi bini u jimmaniġġja d-dipendenzi, il-proġett jiżviluppa l-maniġer tal-pakkett tat-Tagħbija. Ir-repożitorju crates.io huwa appoġġjat għall-hosting tal-libreriji.
Is-sikurezza tal-memorja hija pprovduta f'Rut fil-ħin tal-kompilazzjoni permezz ta 'verifika ta' referenza, iżżomm kont tal-pussess tal-oġġett, iżżomm kont tal-ħajja tal-oġġetti (ambiti), u tivvaluta l-korrettezza tal-aċċess għall-memorja waqt l-eżekuzzjoni tal-kodiċi. Rust jipprovdi wkoll protezzjoni kontra overflows integer, jeħtieġ inizjalizzazzjoni obbligatorja ta 'valuri varjabbli qabel l-użu, jimmaniġġja l-iżbalji aħjar fil-librerija standard, japplika l-kunċett ta' referenzi immutabbli u varjabbli b'mod awtomatiku, joffri tajpjar statiku qawwi biex jimminimizza l-iżbalji loġiċi.
Innovazzjonijiet ewlenin:
- Il-maniġer tal-pakkett tat-Tagħbija għandu mekkaniżmu ta 'proċessar ta' dipendenza stabbilizzat li jagħżel verżjonijiet ta 'komponenti dipendenti b'kont meħud tal-kompatibilità mal-verżjonijiet tal-kompilatur Rust iddikjarat bħala appoġġjat minimament mill-proġett (MSRV, Verżjoni Minimu ta' Rust Appoġġjata). Il-karatteristika l-ġdida telimina l-ħtieġa li l-mantenituri jagħżlu manwalment verżjonijiet eqdem ta’ kull dipendenza fi proġetti li jibqgħu kompatibbli ma’ verżjonijiet eqdem tas-sett ta’ għodda Rust. Il-mod il-ġdid tar-riżoluzzjoni tad-dipendenza se jkun attivat awtomatikament fir-rilaxx Rust 1.85, iżda għalissa huwa disponibbli bħala għażla li tista 'tiġi attivata billi tispeċifika 'incompatible-rust-versions = " fit-taqsima "[resolver]" tal- ". cargo/config.toml" file. fallback"'.
- Bdejna nikkonverti l-kompilatur għal solver tat-tip ġdid, iddisinjat biex jiċċekkja l-konfini tal-applikabbiltà tal-karatteristiċi, jinnormalizza t-tipi, u jevalwa l-kompatibilità tat-tip. Fil-verżjoni 1.84, jintuża handler ġdid biex jiċċekkja l-konsistenza tal-implimentazzjonijiet tal-karatteristiċi, i.e. tivvaluta l-eżistenza ta' l-iktar karatteristika waħda għat-tip in kwistjoni, b'kont meħud tal-kodiċi minn pakketti ta' ċestuni oħra. Din il-verifika ppermettietna neħilsu mill-problemi fl-implimentazzjoni l-antika tat-tip handler, li potenzjalment jista 'jwassal għal kunflitti minħabba l-intersezzjoni ta' implimentazzjonijiet differenti ta 'tipi.
- Ġiet proposta API ġdida "Provinenza Stretta", li tista' tintuża biex tikkonverti pointer għal numru sħiħ u lura, b'kont meħud tal-metadejta mehmuża mal-pointer b'informazzjoni dwar l-oriġini u ż-żona tal-użu tiegħu (minbarra l-indirizz, il-valur "provenjenza" huwa mehmuż mal-pointer b'informazzjoni dwar il-konnessjoni ma 'pointers oħra , li jippermettilek tiddetermina fejn u meta l-pointer jista' jaċċessa l-memorja). Meta titfa 'pointer għal numru sħiħ u lura, isseħħ imġieba mhux definita minħabba d-diffikultà biex tiġi traċċata l-oriġini tal-pointer li jirriżulta. L-API l-ġdida tippermettilek li twettaq operazzjonijiet ta 'pointer ta' livell baxx, bħall-ħażna ta 'informazzjoni addizzjonali fil-bits ta' ordni baxx tal-pointer, mingħajr ma titfa 'l-pointer għal numru sħiħ.
- Porzjon ġdid tal-API ġie mċaqlaq għall-kategorija ta 'stabbli, inklużi l-metodi u l-implimentazzjonijiet tal-karatteristiċi ġew stabbilizzati:
- 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
- qalba::ptr::dangling
- core::ptr::dangling_mut
- Pin::as_deref_mut
- Is-sinjal "const" jintuża fil-funzjonijiet:
- 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::ġdid
- Pin::new_unchecked
- Pin::get_ref
- Pin::into_ref
- Pin::get_mut
- Pin::get_unchecked_mut
- Pin::static_ref
- Pin::static_mut
- L-appoġġ għal inserzjonijiet inline tal-assemblatur għall-arkitetturi s390x u Arm64EC ġie stabbilizzat.
- L-appoġġ għall-funzjonalità multivalue, tat-tipi ta’ referenza u ta’ tail-call ġie stabbilizzat għall-pjattaforma fil-mira tal-WebAssembly.
- It-tieni livell ta 'appoġġ għall-pjattaforma wasm32v1-none ġie implimentat. It-tieni livell ta 'appoġġ jinvolvi garanzija ta' assemblaġġ.
Barra minn hekk, jistgħu jiġu nnutati diversi proġetti relatati mas-sadid:
- Ġie ppubblikat ir-rilaxx tas-sistema operattiva Tock 2.2, miktuba bil-lingwa Rust u mmirata għall-użu fil-mikrokontrolluri. Is-sistema tippermetti l-eżekuzzjoni simultanja ta 'applikazzjonijiet multipli mhux fdati fuq apparati inkorporati b'daqs limitat ta' RAM, bħal sensors, TPM (Trusted Platform Module), fobs ewlenin ta 'awtentikazzjoni u tagħmir li jintlibes. Pjattaformi b'mikrokontrolluri bbażati fuq arkitetturi ARM Cortex-M u RISC-V huma appoġġjati. Karatteristika ewlenija ta 'Tock hija l-iżolament tal-applikazzjoni, il-qalba u s-saffi tas-sewwieq, kif ukoll l-iżolament ta' kull applikazzjoni u sewwieq separatament. L-iżolament juża kemm il-kapaċitajiet tal-lingwa Rust kif ukoll is-separazzjoni fil-livell ta 'protezzjoni tal-memorja.
- Il-proġett VEKOS (Verified Experimental Kernel OS) jiżviluppa għadma tas-sistema operattiva fil-lingwa Rust, li tipprovdi verifika tal-komponenti eżekutibbli. Għal kull operazzjoni tas-sistema tal-fajls, ħolqien tal-proċess, u allokazzjoni tal-memorja, tiġi ġġenerata prova kriptografika li tippermetti li l-operazzjoni tiġi vverifikata waqt l-eżekuzzjoni (l-implimentazzjoni titqabbel mal-użu ta 'blockchain biex tivverifika l-azzjonijiet fis-sistema operattiva). Fis-sistema tal-fajls VKFS, biex tiġi żgurata l-integrità u l-protezzjoni minn distorsjoni retroattiva, tintuża l-istruttura Merkle Tree, kull fergħa li fiha tivverifika l-fergħat u n-nodi sottostanti kollha, grazzi għall-hashing tas-siġar. L-allokazzjoni tal-memorja titwettaq fil-modalità COW (Copy-On-Write).
- Grupp ta' riċerkaturi minn Microsoft u Inria qed jiżviluppa subsett tal-lingwa Ċ, Mini-C, iddisinjat biex jittraduċi awtomatikament programmi C f'rappreżentazzjoni Rust. B'differenza mill-kompilatur c2rust, il-proġett il-ġdid jippermettilek li tiġġenera kodiċi Rust mingħajr ma tuża mhux sigur, iżda hija mmirata primarjament biex tikkonverti proġetti C li għandhom prova formali ta 'affidabilità. L-implikazzjoni hija li se jkun aktar faċli li l-ewwel tikkonverti proġett C għal rappreżentazzjoni Mini-C li ma tippermettix l-aritmetika tal-pointer milli tikteb mill-ġdid blokki mhux sikuri wara li tikkumpila direttament minn C għal Rust.
L-implimentazzjoni tal-kompilatur hija bbażata fuq l-għodda KaRaMeL. Mini-C ġie żviluppat u ttestjat bħala parti minn proġett biex tikteb mill-ġdid il-librerija kriptografika HACL* f'Rut, li għaliha ġiet ipprovduta prova formali ta 'affidabbiltà. Intużat prova simili biex turi l-abbiltà li tiġġenera kodiċi Rust sigur minn Mini-C.
- Daniel Stenberg, l-awtur tal-utilità curl, ħabbar li l-proġett Curl mhux se jkompli jiżviluppa u jżomm backend HTTP alternattiv miktub f'Rut bl-użu tal-librerija Hyper. Ir-raġuni mogħtija hija nuqqas ta 'interess min-naħa tal-iżviluppaturi u l-utenti.
- Tħabbret ir-rilaxx beta tal-qoxra tal-kmand Fish 4.0, miktuba mill-ġdid f'Rut. Huwa nnutat li wara sentejn ta 'żvilupp, il-kodiċi tal-Ħut ġie kompletament trasferit minn C++ għal Rust. It-tranżizzjoni għal Rust ippermettietna nsolvu problemi bil-multithreading, niksbu għodod moderni li jiskopru żbalji fl-istadju tal-kumpilazzjoni, itejbu s-sigurtà tal-memorja, u jagħmlu l-proġett aktar attraenti għall-iżviluppaturi ġodda.
- Il-Proġett Tor ippubblika r-rilaxx ta 'Arti 1.3.2, implimentazzjoni alternattiva tal-klijent Tor f'Rust. Arti jipprovdi librerija inkorporata li tista 'tintuża minn diversi applikazzjonijiet. Meta nħoloq Arti, l-esperjenza tal-passat fl-iżvilupp ta’ Tor ġiet ikkunsidrata sabiex jiġu evitati problemi arkitettoniċi magħrufa u l-proġett isir aktar modulari u effiċjenti. Il-fergħa 1.x hija mmarkata bħala adattata għall-użu minn utenti ġenerali u tipprovdi l-istess livell ta 'privatezza, użabilità, u stabbiltà bħall-implimentazzjoni C prinċipali. Il-verżjoni l-ġdida tkompli l-iżvilupp ta 'RPC, saru tħejjijiet biex jiġi implimentat appoġġ ta' relay, u ġiet miżjuda protezzjoni kontra attakki DoS fuq is-servizzi Onion.
- Ġie ppubblikat ir-rilaxx tal-magna tal-logħob Bevy 0.15, miktuba f'Rut. Il-magna tuża mudell Data Driven għad-definizzjoni tal-loġika tal-logħob, mibni fuq sett ta 'komponenti Bevy ECS (Entity Component System) lesti li jistgħu jiġu eżegwiti b'mod parallel. Jappoġġja rendering 2D u 3D, animazzjoni skeletriċi, definizzjoni ta 'graff ta' rendering, sistema ta 'ġenerazzjoni ta' xena, qafas ta 'interface tal-utent, tagħmel bidliet fix-xeni u r-riżorsi mingħajr il-ħtieġa li terġa' tibda.
- L-editur tat-test tal-console Helix 25.01 ġie ppubblikat, miktub f'Rut u jespandi l-ideat inerenti f'vim u neovim. Jappoġġja l-integrazzjoni ma 'servers LSP u Tree-sitter, għażla simultanja ta' diversi blokki, użu ta 'cursors multipli meta editjar, temi, u protokoll ta' debugging DAP (Debug Adapter Protocol).
- Il-magna tal-brawżer Servo, miktuba b'Rut, żiedet appoġġ għal mod ta 'disinn skur. Id-daqs tal-browser ServoShell tnaqqas b'20%. L-appoġġ għall-ispeċifikazzjonijiet tal-web ġie estiż għall-abbiltà li tidħol u taqra messaġġi f'Discord (li jibgħat messaġġi għadu mhux possibbli).
- Mozilla introduċa l-Uniffi for React Native toolkit għall-ħolqien ta’ moduli għal React Native fil-lingwa Rust.
- Il-prestazzjoni tal-kodifikaturi tal-immaġni PNG ġiet ittestjata. Decoders tas-sadid (png, zune-png, wuffs) irriżultaw li huma aktar mgħaġġla minn decoders C (libpng, spng, stb_image). Pereżempju, il-pakkett crate png (image-rs) qabeż lilpng b'1.8 darbiet fuq sistema x86 u 1.5 darbiet fuq sistema ARM. image-rs: 375.401 MP/s (medja) 318.632 MP/s (geomean) zune-png: 376.649 MP/s (medja) 302.529 MP/s (geomean) wuffs: 376.205 MP/s (medja) 287.181. geomean) libpng: 208.906 MP/s (medja) 173.034 MP/s (medja ġeografika) spng: 299.515 MP/s (medja) 235.495 MP/s (medja ġeografika) stb_image: 234.353 MP/s (medja) 171.505 MP/s (medja ġeografika)
Sors: opennet.ru
