Rust 1.60 Programazio Lengoaia kaleratzea

Rust 1.60 erabilera orokorreko programazio-lengoaia argitaratu da, Mozilla proiektuak sortua, baina orain Rust Foundation irabazi asmorik gabeko erakunde independentearen babespean garatua. Lengoaiak memoriaren segurtasunean oinarritzen da eta lanaren paralelismo handia lortzeko bitartekoak eskaintzen ditu zabor-biltzailea eta exekuzio-denbora erabiltzea saihestuz (exekuzio-denbora liburutegi estandarraren hasierako oinarrizko hasierara eta mantentzera murrizten da).

Rust-en memoria maneiatzeko metodoek garatzaileari erakusleak manipulatzerakoan akatsetatik salbatzen dute eta maila baxuko memoria-kudeaketaren ondorioz sortzen diren arazoetatik babesten dute, hala nola, memoria-eremu batera atzitzea askatu ondoren, erakusle nuluak deserreferentziak egitea, buffer gainditzeak, etab. Liburutegiak banatzeko, eraikuntzak emateko eta mendekotasunak kudeatzeko, proiektuak Cargo paketeen kudeatzailea garatzen du. crates.io biltegia liburutegiak ostatatzeko onartzen da.

Memoriaren segurtasuna Rust-en konpilazio garaian eskaintzen da erreferentziak egiaztatzeko, objektuen jabetzaren jarraipena eginez, objektuen iraupenen (esparruak) jarraipena eginez eta kodearen exekuzioan memoria sarbidearen zuzentasuna ebaluatuz. Rust-ek osoko gainezkatzeen aurkako babesa eskaintzen du, erabili aurretik aldagaien balioak derrigorrezko hasieratzea eskatzen du, liburutegi estandarrean akatsak hobeto kudeatzen ditu, erreferentzia eta aldagai aldaezinen kontzeptua lehenespenez aplikatzen du, idazketa estatiko sendoa eskaintzen du akats logikoak minimizatzeko.

Berrikuntza nagusiak:

  • Rustc konpilatzaileak LLVMn oinarritutako sistema egonkortu bat du probak zehar kode-estaldura ebaluatzeko erabiltzen diren estaldura-datuak sortzeko. Muntaian estaldura-datuak gaitzeko, "-Cinstrument-coverage" bandera erabili behar duzu, adibidez, muntaia hasiz "RUSTFLAGS="-C instrument-coverage" zama eraikitzeko" komandoarekin. Modu honetan konpilatutako fitxategi exekutagarria exekutatu ondoren, default.proraw fitxategia uneko direktorioan gordeko da, prozesatzeko llvm-tools-preview osagaitik llvm-profdata utilitatea erabil dezakezu. Ondoren, llvm-profdata-k prozesatutako irteera llvm-cov-era pasa daiteke kode-estaldura-txosten bat sortzeko. Iturburu-kodearekiko estekaren inguruko informazioa aztertzen ari den fitxategi exekutagarritik hartzen da, estaldura-kontagailuen eta kodearen arteko konexioari buruzko beharrezko datuak biltzen dituena. 1| 1|fn main() { 2| 1| println!("Kaixo, mundua!"); 3| 1|}
  • Karga paketeen kudeatzailean, "-timings" banderaren euskarria egonkortu da, eta horrek eraikuntzaren aurrerapenari eta urrats bakoitzaren exekuzio denborari buruzko txosten zehatza sortzea barne hartzen du. Txostena erabilgarria izan daiteke muntaketa-prozesuaren errendimendua optimizatzeko.
  • Karga paketeen kudeatzaileak sintaxi berri bat eskaintzen du baldintzapeko konpilaziorako eta aukerako mendekotasunak aukeratzeko mekanismorako, Cargo.toml fitxategian konfiguratua [ezaugarriak] atalean propietateen zerrenda bat zerrendatuz eta paketeen eraikuntzan propietateak gaituz aktibatuta. β€œ--features” bandera erabiliz. Bertsio berriak izen-espazio bereizietan eta mendekotasun ahulei buruzko menpekotasunen laguntza gehitzen du.

    Lehenengo kasuan, "dep:" aurrizkia duten elementuak erabil daitezke "[ezaugarriak]" atalaren barruan aukerako mendekotasun bati esplizituki lotzeko, menpekotasun hori ezaugarri gisa inplizituki irudikatu gabe. Bigarren kasuan, β€œ?” zeinuarekin markatzeko euskarria gehitu da. ("pakete-izena?/eginbide-izena") aukerako mendekotasunak, beste propietateren batek emandako aukerako mendekotasuna barne hartzen badu soilik sartu beharko liratekeenak. Adibidez, beheko adibidean, serde propietatea gaitzeak "serde" menpekotasuna gaituko du, baita "serde" propietatea "rgb" mendekotasunerako, baina "rgb" mendekotasuna beste nonbait gaituta badago soilik: [dependencies] serde = { bertsioa = " 1.0.133", aukerakoa = egia } rgb = { bertsioa = "0.8.25", aukerakoa = egia } [ezaugarriak] serde = ["dep:serde", "rgb?/serde"]

  • Azken bertsioan desgaitu zen konpilazio gehigarrirako laguntza itzuli da. Eginbidea desgaitzea eragin zuen konpiladore-akatsa konpondu da.
  • Instant tenporizadoreei denbora monotonikoaren bermea eskaintzeko arazo batzuk konpondu dira, sistemak lo moduan emandako denbora kontuan hartzen duena. Aurretik, tenporizadorea funtzionatzeko ahal zen guztietan OS APIa erabiltzen zen, denboraren monotonia hausten duten egoera problematikoak kontuan hartzen ez zituena, hala nola hardware arazoak, birtualizazioaren erabilera edo sistema eragilearen akatsak.
  • APIaren zati berri bat egonkorren kategoriara eraman da, eta ezaugarrien metodoak eta inplementazioak egonkortu dira:
    • Arku::zikliko_berria
    • Rc::zikliko_berria
    • xerra::EscapeAscii
    • <[u8]>::escape_ascii
    • u8::ihes_ascii
    • Vec::spare_capacity_mut
    • AgianUninit::assume_init_drop
    • AgianUninit::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
    • use::abs_diff
    • bistaratzea io::ErrorKind
    • ExitCode-tik
    • Ez! (idatzi "inoiz ez")
    • _Op_Esleitu<$t>
    • arch::aarch64_feature_detected!
  • Hirugarren laguntza-maila mips64-openwrt-linux-musl* eta armv7-unknown-linux-uclibceabi (softfloat) plataformetarako inplementatu da. Hirugarren mailak oinarrizko euskarria dakar, baina proba automatizatu gabe, eraikuntza ofizialak argitaratu edo kodea eraiki daitekeen egiaztatu gabe.
  • Konpilatzailea LLVM 14 erabiltzeko aldatu da.

Gainera, kontuan izan dezakezu:

  • Rustc konpilatzailea abiarazteko euskarria gehitu da rustc_codegen_gcc backend-a erabiliz, GCC proiektuko libgccjit liburutegia rustc-en kode-sorgailu gisa erabiltzeko aukera ematen duena, eta horrek rustc-ek GCCn eskuragarri dauden arkitektura eta optimizazioetarako laguntza eskaintzeko aukera ematen du. Konpiladorearen sustapenak rustc-en GCCn oinarritutako kode-sorgailu bat erabiltzeko gaitasuna esan nahi du rustc konpilatzailea bera eraikitzeko. Alderdi praktikoan, ezaugarri honek rustc-en onartzen ez ziren arkitekturarako herdoil-programak eraikitzeko aukera ematen du.
  • uutils coreutils 0.0.13 tresna-kitaren bertsioa eskuragarri dago, eta horren barruan Rust hizkuntzan berridatzitako GNU Coreutils paketearen analogo bat garatzen ari da. Coreutils-ek ehun erabilgarritasun baino gehiago ditu, besteak beste, sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln eta ls. Proiektuaren helburua Coreutils-en plataforma anitzeko inplementazio alternatibo bat sortzea da, Windows, Redox eta Fuchsia plataformetan exekutatzeko gai dena, baita MIT lizentzia baimenduaren arabera banatzeko ere, GPL copyleft lizentziaren ordez.

    Bertsio berriak erabilgarritasun askoren inplementazioak hobetu ditu, besteak beste, cp, dd, df, split eta tr utilitateen bateragarritasuna nabarmen hobetu da GNU proiektuko haien parekoekin. Lineako dokumentazioa eskaintzen da. Clap analizatzailea komando-lerroko argumentuak aztertzeko erabiltzen da, eta horrek "--help" banderaren irteera hobetu du eta komando luzeen laburdurak onartzen ditu (adibidez, "ls -col" zehaztu dezakezu "ls -color" ordez. ").

Iturria: opennet.ru

Gehitu iruzkin berria