Dëshirimi i gjuhës së programimit Rust 1.60

Ë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

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster