Ġiet rilaxxata l-lingwa ta 'programmar għal skopijiet ġenerali Rust 1.67, 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:
- Għal funzjonijiet asinkroniċi b'Future::Output, issa huwa possibbli li jiġu speċifikati annotazzjonijiet "#[must_use]" li jinkludu twissija jekk il-valur tar-ritorn jiġi injorat, li jgħin biex jiġu identifikati żbalji kkawżati mis-suppożizzjoni li l-funzjoni se tbiddel il-valuri aktar milli jirritorna valur ġdid. #[must_use] async fn bar () -> u32 { 0 } async fn caller () { bar (). } twissija: output mhux użat tal-futur ritornat minn `bar` li jrid jintuża —> src/lib.rs:5:5 | 5 | bar().stenna; | ^^^^^^^^^^^^ | = nota: `#[warn(unused_must_use)]` mixgħula awtomatikament
- L-implimentazzjoni tal-kjuwijiet FIFO std::sync::mpsc (multi-producer single-consumer) ġiet aġġornata, li nbidlet għall-użu tal-modulu crossbeam-channel filwaqt li tinżamm l-API preċedenti. L-implimentazzjoni l-ġdida hija distinta billi ssolvi għadd ta 'problemi, prestazzjoni ogħla u manutenzjoni tal-kodiċi simplifikata.
- Porzjon ġdid tal-API ġie mċaqlaq għall-kategorija ta 'stabbli, inklużi l-metodi u l-implimentazzjonijiet tal-karatteristiċi ġew stabbilizzati:
- {integer}::checked_ilog
- {integer}::checked_ilog2
- {integer}::checked_ilog10
- {integer}::ilog
- {integer}::ilog2
- {integer}::ilog10
- NonZeroU*::ilog2
- NonZeroU*::ilog10
- NonZero*::BITS
- L-attribut "const", li jiddetermina l-possibbiltà li jintuża fi kwalunkwe kuntest minflok kostanti, jintuża fil-funzjonijiet:
- char::from_u32
- char::from_digit
- char::to_digit
- core::char::from_u32
- core::char::from_digit
- Ġie implimentat it-tielet livell ta 'appoġġ għall-użu ta' Rust fil-kernel tal-Linux (linuxkernel), kif ukoll għas-Sony PlayStation 1 (mipsel-sony-psx), PowerPC b'AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) pjattaformi qnx710, x86_64-pc-nto-qnx710). It-tielet livell jinvolvi appoġġ bażiku, iżda mingħajr ittestjar awtomatizzat, pubblikazzjoni ta 'bini uffiċjali, jew verifika jekk il-kodiċi jistax jinbena.
Barra minn hekk, nistgħu ninnotaw il-pubblikazzjoni minn ARM ta 'garża li jippermettu l-użu tal-lingwa Rust biex tiżviluppa sewwieqa u moduli tal-kernel Linux immuntati għal sistemi bbażati fuq l-arkitettura AArch64.
Sors: opennet.ru
