Rust 1.61 Rilaxx tal-Lingwa ta' Programmazzjoni

Ġiet rilaxxata l-lingwa ta 'programmar għal skopijiet ġenerali Rust 1.61, 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:

  • Huwa possibbli li tiddefinixxi l-kodiċi tar-ritorn tiegħek stess mill-funzjoni prinċipali. Oriġinarjament, il-funzjoni ewlenija ta 'Rut setgħet tirritorna biss it-tip "()" (unità), li dejjem indikat status ta' ħruġ ta 'suċċess sakemm l-iżviluppatur ma sejjaħx espliċitament il-funzjoni "proċess::ħruġ (kodiċi)". F'Rut 1.26, bl-użu tal-karatteristika tat-Terminazzjoni instabbli fil-funzjoni prinċipali, kien possibbli li jiġu rritornati l-valuri "Ok" u "Err", li jikkorrispondu għall-kodiċi EXIT_SUCCESS u EXIT_FAILURE fi programmi C. Fis-sadid 1.61, il-karatteristika tat-Terminazzjoni saret stabbli, u ġie propost tip ta' ExitCode separat biex jirrappreżenta kodiċi ta' ritorn speċifiku, li jastraxxi tipi ta' ritorn speċifiċi għall-pjattaforma billi jipprovdi kemm kostanti predefiniti SUCCESS u FAILURE, kif ukoll il-metodu From li jirritorna kodiċi arbitrarju tar-ritorn. uża std::process::ExitCode; fn main() -> ExitCode { jekk !check_foo () { return ExitCode::from (8); } ExitCode::SUĊĊESS }
  • Kapaċitajiet addizzjonali ta 'funzjonijiet definiti bl-użu tal-espressjoni "const fn" ġew stabbilizzati, li jistgħu jissejħu mhux biss bħala funzjonijiet regolari, iżda wkoll użati fi kwalunkwe kuntest minflok kostanti. Dawn il-funzjonijiet huma kkalkulati fil-ħin tal-kompilazzjoni, mhux waqt ir-runtime, għalhekk huma soġġetti għal ċerti restrizzjonijiet, bħall-abbiltà li jaqra biss minn kostanti. Fil-verżjoni l-ġdida, operazzjonijiet bażiċi b'pointers tal-funzjoni huma permessi ġewwa funzjonijiet const (il-ħolqien, il-mogħdija u l-ikkastjar ta 'pointers huwa permess, iżda mhux issejjaħ funzjoni b'punter); limiti ta' karatteristika għal parametri ġeneriċi ta' funzjonijiet const bħal T: Kopja; karatteristiċi li jistgħu jintbagħtu b'mod dinamiku (Dyn Trait); impl Tipi ta' karatteristiċi għal argumenti ta' funzjoni u valuri ta' ritorn.
  • Il-fluss jimmaniġġja Stdin, Stdout u Stderr fi std::io issa għandhom ħajja statika ("statika") meta msakkra, li tippermetti kostruzzjonijiet bħal "let out = std::io::stdout().lock();" bil-ksib ta 'manku u l-issettjar ta' lock f'espressjoni waħda.
  • Porzjon ġdid tal-API ġie mċaqlaq għall-kategorija ta 'stabbli, inklużi l-metodi u l-implimentazzjonijiet tal-karatteristiċi ġew stabbilizzati:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Ikteb għal Cursor
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::process::Terminazzjoni
    • std::thread::JoinHandle::is_lest
  • L-attribut "const", li jiddetermina l-possibbiltà li jintuża fi kwalunkwe kuntest minflok kostanti, jintuża fil-funzjonijiet:
    • ::offset u ::offset
    • ::wrapping_offset u ::wrapping_offset
    • ::add u ::add
    • ::sub u ::sub
    • ::wrapping_add u ::wrapping_add
    • ::wrapping_sub u ::wrapping_sub
    • ::as_mut_ptr
    • ::as_ptr_range
    • ::as_mut_ptr_range

Barra minn hekk, tista 'tinnota l-artiklu "Sadid: Retrospettiva Kritika" b'sommarju ta' impressjonijiet tal-lingwa Rust wara li tikteb 100 elf linja ta 'kodiċi fiha matul l-iżvilupp tas-sistema operattiva Xous microkernel użata fil-firmware. L-iżvantaġġi jinkludu sintassi diffiċli biex tinftiehem, nuqqas ta 'kompletezza u żvilupp kontinwu tal-lingwa, nuqqas ta' bini ripetibbli, problemi tipiċi ta 'fiduċja fid-dipendenza f'Crates.io, u l-ħtieġa li tinżamm ċerta dixxiplina biex tikteb kodiċi sigur. Karatteristiċi li qabżu l-aspettattivi jinkludu għodod għar-refactoring tal-kodiċi u l-"hacks" ta 'ħidma mill-ġdid miżjuda waqt il-prototyping rapidu.

Sors: opennet.ru

Żid kumment