ĂshtĂ« publikuar versioni 1.60 i gjuhĂ«s sĂ« programimit Rust, e cila Ă«shtĂ« zhvilluar fillimisht nga projekti Mozilla, por tani po zhvillohet nĂ«n mbĂ«shtetje tĂ« organizatĂ«s jo fitimprurĂ«se Rust Foundation. Gjuha pĂ«rqendrohet nĂ« sigurinĂ« e menaxhimit tĂ« memories dhe ofron mjete pĂ«r tĂ« arritur njĂ« paralelizĂ«m tĂ« lartĂ« nĂ« ekzekutimin e detyrave, duke shmangur pĂ«rdorimin e mbledhĂ«sit tĂ« mbeturinave dhe runtime (runtime reduktohet nĂ« inicializimin bazĂ« dhe mbĂ«shtetje tĂ« bibliotekĂ«s standarde).
Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin nga puna me nivel të ulët me kujtesën, siç janë referimi në një zonë kujtese pas çlirimit të saj, dereferimi i treguesve null, tejkalimi i kufijve të tamponëve etj. Për shpërndarjen e biblioteka, për të siguruar ndërtimin dhe menaxhimin e varësive, projekti zhvillon menaxherin e paketave Cargo. Për ruajtjen e bibliotekave, mbështetet depoja crates.io.
Përdorimi i sigurt i memories sigurohet në Rust gjatë kompilimit përmes verifikimit të lidhjeve, gjurmimit të pronësisë së objekteve, përllogaritjes së kohëzgjatjes së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtje nga tejkalimet e numrave të plotë, kërkon inicializim të detyrueshëm të vlerave të variablave para përdorimit, menaxhon më mirë gabimet në bibliotekën standarde, aplikon konceptin e lidhjeve dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.
TĂ« rejat kryesore:
- NĂ« kompilatorin rustc Ă«shtĂ« stabilizuar sistemi i bazuar nĂ« LLVM pĂ«r gjenerimin e tĂ« dhĂ«nave tĂ« pokrivenjes, qĂ« pĂ«rdoren pĂ«r tĂ« vlerĂ«suar mbulimin e kodit gjatĂ« testeve. PĂ«r tĂ« aktivizuar tĂ« dhĂ«nat e pokrivenjes gjatĂ« ndĂ«rtimit, Ă«shtĂ« e nevojshme tĂ« pĂ«rdoret flamuri «-Cinstrument-coverage», pĂ«r shembull, duke e filluar ndĂ«rtimin me komandĂ«n «RUSTFLAGS=»-C instrument-coverage» cargo build». Pas runs sĂ« skedarit ekzekutiv tĂ« ndĂ«rtuar nĂ« kĂ«tĂ« mĂ«nyrĂ«, nĂ« katalogun aktual do tĂ« ruhet skedari default.profraw, tĂ« cilin mund ta pĂ«rdorni pĂ«r pĂ«rpunimin me utilitarin llvm-profdata nga komponenti llvm-tools-preview. TĂ« dhĂ«nat e pĂ«rpunuara nga utilitari llvm-profdata mund tâi kalohen programit llvm-cov pĂ«r tĂ« gjeneruar njĂ« raport tĂ« annotuar me informacione mbi mbulimin e kodit. Informacioni pĂ«r lidhjen me tekste burimore merret nga skedari ekzekutiv qĂ« po shqyrtohet, i cili pĂ«rfshin tĂ« dhĂ«nat e nevojshme pĂ«r lidhjen e numĂ«ruesve tĂ« pokrivenjes me kodin. 1| 1|fn main() { 2| 1| println!(âHello, world!â); 3| 1|}
- NĂ« menaxherin e paketave cargo Ă«shtĂ« stabilizuar mbĂ«shtetje pĂ«r flamurin «âtimings», i cili pĂ«rfshin krijimin e njĂ« raporti tĂ« detajuar pĂ«r procesin e ndĂ«rtimit dhe kohĂ«n e ekzekutimit pĂ«r secilin hap. Ky raport mund tĂ« jetĂ« i dobishĂ«m pĂ«r optimizimin e performancĂ«s sĂ« procesit tĂ« ndĂ«rtimit.
- NĂ« menaxherin e paketave cargo Ă«shtĂ« propozuar njĂ« sintaksĂ« e re pĂ«r mekanizmin e kompilimit tĂ« kushteve dhe pĂ«rzgjedhjen e varĂ«sive opsionale, tĂ« cilat mund tĂ« konfigurohen nĂ« skedarin Cargo.toml pĂ«rmes enumerimit tĂ« listave tĂ« pronarĂ«ve emr tĂ« seksionit [features] dhe aktivizohen pĂ«rmes pĂ«rfshirjes sĂ« pronave gjatĂ« ndĂ«rtimit tĂ« paketĂ«s me flamurin «âfeatures». NĂ« kĂ«tĂ« version tĂ« ri Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r varĂ«si nĂ« hapĂ«sira tĂ« veçanta emrash dhe varĂ«si tĂ« dobĂ«ta (weak).
NĂ« rastin e parĂ«, Ă«shtĂ« realizuar mundĂ«sia e pĂ«rdorimit brenda seksionit «[features]» tĂ« elementĂ«ve me prefix-in «dep:» pĂ«r lidhjen e qartĂ« me njĂ« varĂ«si opsionale pa pĂ«rfaqĂ«simin e saj tĂ« padukshĂ«m si njĂ« pronĂ« (feature). NĂ« rastin e dytĂ«, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r shĂ«nimin me shenjĂ«n «?» («package-name?/feature-name») tĂ« varĂ«sive opsionale, tĂ« cilat duhet tĂ« aktivizohen vetĂ«m nĂ«se njĂ« pronĂ« tjetĂ«r aktivizon kĂ«tĂ« varĂ«si opsionale. PĂ«r shembull, nĂ« shembullin mĂ« poshtĂ«, aktivizimi i pronĂ«s serde do tĂ« sjellĂ« aktivizimin e varĂ«sisĂ« «serde», si dhe pronĂ«s «serde» pĂ«r varĂ«sinĂ« «rgb», por vetĂ«m nĂ«se diku tjetĂ«r Ă«shtĂ« aktivizuar varĂ«sia «rgb»: [dependencies] serde = { version = â1.0.133â, optional = true } rgb = { version = â0.8.25â, optional = true } [features] serde = [âdep:serdeâ, ârgb?/serdeâ]
- ĂshtĂ« rikthyer mbĂ«shtetje pĂ«r kompilimin inkremental, e cila ishte e çaktivizuar nĂ« versionin e kaluar. Gabimi nĂ« kompilatorin, qĂ« shkaktoi çaktivizimin e funksionit, Ă«shtĂ« eliminua.
- Janë zgjidhur disa probleme me ofrimin për timer-at Instant të garantive për llogaritjen monotone të kohës, duke marrë parasysh kohën e kaluar nga sistemi në gjendjen e pushimit. Më parë, për funksionimin e timerit ishte e mundur që të përdorej OS API, i cili nuk merrte parasysh situatat problematike që dëmtonin monotone të kohës, siç janë problemet me harduerin, aplikimi i virtualizimit ose gabimet në sistemin operativ.
- Një sasi e re API është kaluar në kategorinë stabile, përfshirë stabilizimin e metodave dhe implementimeve të tipazheve:
- Arc::new_cyclic
- Rc::new_cyclic
- slice::EscapeAscii
- ::escape_ascii
- u8::escape_ascii
- Vec::spare_capacity_mut
- MaybeUninit::assume_init_drop
- MaybeUninit::assume_init_read
- i8::abs_diff
- i16::abs_diff
- i32::abs_diff
- i64::abs_diff
- i128::abs_diff
- isize::abs_diff
- u8::abs_diff
- u16::abs_diff
- u32::abs_diff
- u64::abs_diff
- u128::abs_diff
- usize::abs_diff
- Display për io::ErrorKind
- From për ExitCode
- Not pĂ«r ! (tipi âneverâ)
- _Op_Assign
- arch::is_aarch64_feature_detected!
- Një nivel i tretë mbështetje është realizuar për platformat mips64-openwrt-linux-musl* dhe armv7-unknown-linux-uclibceabi (softfloat). Niveli i tretë nënkupton mbështetje bazike, por pa teste automatizuar, publikimin e ndërtimit zyrtar dhe kontrollin e mundësisë së ndërtimit të kodit.
- Kompilatori është transferuar në përdorimin e LLVM 14.
Gjithashtu, mund të theksohet:
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r fillimin e kompilatorit (bootstrapping) rustc pĂ«rmes backend-it rustc_codegen_gcc, i cili lejon pĂ«rdorimin e bibliotekĂ«s libgccjit nga projekti GCC si gjenerues tĂ« kodit nĂ« rustc, duke mundĂ«suar qĂ« rustc tĂ« mbĂ«shtesĂ« arkitekturat dhe optimizimet qĂ« janĂ« tĂ« disponueshme nĂ« GCC. Duke e bĂ«rĂ« kĂ«tĂ«, rustc mund tĂ« ndĂ«rtojĂ« vetĂ« kompilatorin rustc. Nga ana praktike, kjo mundĂ«si lejon ndĂ«rtimin e programeve rust pĂ«r arkitektura qĂ« mĂ« parĂ« nuk mbĂ«shteteshin nĂ« rustc.
- Versioni i instrumenteve uutils coreutils 0.0.13 është në dispozicion, në kuadër të të cilit po zhvillohet një analog i paketës GNU Coreutils, i shkruar në gjuhën Rust. Coreutils përfshin më shumë se njëqind mjete, duke përfshirë sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln dhe ls. Qëllimi i projektit është krijimi i një implementimi alternativ cross-platform i Coreutils, i cili mund të funksionojë gjithashtu në platformat Windows, Redox dhe Fuchsia, si dhe shpërndarja nën licencën permissive MIT, në vend të licencës copyleft GPL.
NĂ« versionin e ri janĂ« pĂ«rmirĂ«suar realizimet e shumĂ« mjeteve, pĂ«rfshirĂ« pĂ«rmirĂ«simin e ndjeshĂ«m tĂ« kompatibilitetit tĂ« mjeteve cp, dd, df, split dhe tr me homologĂ«t e tyre nga projekti GNU. Dokumentacioni online Ă«shtĂ« ofruar. PĂ«r analizimin e argumenteve tĂ« linjĂ«s sĂ« komandĂ«s Ă«shtĂ« pĂ«rdorur parser-i clap, qĂ« ka lejuar pĂ«rmirĂ«simin e daljes pĂ«r flamurin "âhelp" dhe ka shtuar mbĂ«shtetje pĂ«r akronimet e komandave tĂ« gjata (pĂ«r shembull, mund tĂ« shkruhet "ls âcol" nĂ« vend tĂ« "ls âcolor").
Burimi: opennet.ru
