Rust 1.60 Rhyddhau Iaith Rhaglennu

Mae rhyddhau iaith raglennu pwrpas cyffredinol Rust 1.60, a sefydlwyd gan brosiect Mozilla, ond sydd bellach wedi'i datblygu dan nawdd y sefydliad dielw annibynnol Rust Foundation, wedi'i gyhoeddi. Mae'r iaith yn canolbwyntio ar ddiogelwch cof ac yn darparu'r modd i gyflawni gwaith tebyg iawn tra'n osgoi defnyddio casglwr sbwriel ac amser rhedeg (mae amser rhedeg yn cael ei leihau i gychwyn a chynnal a chadw sylfaenol y llyfrgell safonol).

Mae dulliau trin cof Rust yn arbed y datblygwr rhag gwallau wrth drin awgrymiadau ac yn amddiffyn rhag problemau sy'n codi oherwydd trin cof lefel isel, megis cyrchu man cof ar ôl iddo gael ei ryddhau, dadgyfeirio awgrymiadau nwl, gor-redeg byffer, ac ati. Er mwyn dosbarthu llyfrgelloedd, darparu adeiladu a rheoli dibyniaethau, mae'r prosiect yn datblygu rheolwr pecyn Cargo. Cefnogir ystorfa crates.io ar gyfer cynnal llyfrgelloedd.

Darperir diogelwch cof yn Rust ar amser casglu trwy wirio cyfeiriadau, cadw golwg ar berchnogaeth gwrthrychau, cadw golwg ar oes gwrthrychau (scopes), ac asesu cywirdeb mynediad cof wrth weithredu cod. Mae Rust hefyd yn darparu amddiffyniad rhag gorlifiadau cyfanrif, yn gofyn am ymgychwyn gorfodol o werthoedd amrywiol cyn ei ddefnyddio, yn trin gwallau yn well yn y llyfrgell safonol, yn cymhwyso'r cysyniad o gyfeiriadau a newidynnau digyfnewid yn ddiofyn, yn cynnig teipio statig cryf i leihau gwallau rhesymegol.

Prif arloesiadau:

  • Mae gan y casglwr rustc system LLVM sefydlog ar gyfer cynhyrchu data darpariaeth a ddefnyddir i werthuso cwmpas cod yn ystod profion. Er mwyn galluogi data cwmpas yn ystod y cynulliad, rhaid i chi ddefnyddio'r faner “-Cinstrument-coverage”, er enghraifft, gan ddechrau'r gwasanaeth gyda'r gorchymyn “RUSTFLAGS =” -C instrument-coverage” cargo build”. Ar ôl rhedeg y ffeil gweithredadwy a luniwyd yn y modd hwn, bydd y ffeil default.profraw yn cael ei gadw yn y cyfeiriadur cyfredol, i'w brosesu y gallwch chi ddefnyddio'r cyfleustodau llvm-profdata o'r gydran llvm-tools-preview. Yna gellir trosglwyddo'r allbwn a brosesir gan llvm-profdata i llvm-cov i gynhyrchu adroddiad cwmpas cod anodedig. Daw gwybodaeth am y ddolen i'r cod ffynhonnell o'r ffeil weithredadwy sy'n cael ei harchwilio, sy'n cynnwys y data angenrheidiol am y cysylltiad rhwng cownteri darpariaeth a'r cod. 1| 1|fn prif() { 2| 1| println!("Helo, fyd!"); 3| 1|}
  • Yn y rheolwr pecyn cargo, mae cefnogaeth ar gyfer y faner “-timeings” wedi'i sefydlogi, sy'n cynnwys cynhyrchu adroddiad manwl ar gynnydd yr adeiladu ac amser gweithredu pob cam. Gall yr adroddiad fod yn ddefnyddiol ar gyfer optimeiddio perfformiad y broses ymgynnull.
  • Mae'r rheolwr pecyn cargo yn cynnig cystrawen newydd ar gyfer y mecanwaith o lunio amodol a dewis dibyniaethau dewisol, wedi'i ffurfweddu yn y ffeil Cargo.toml trwy restru rhestr o eiddo a enwir yn yr adran [nodweddion] a'i actifadu trwy alluogi'r priodweddau yn ystod adeiladu'r pecyn gan ddefnyddio'r faner “--features”. Mae'r fersiwn newydd yn ychwanegu cefnogaeth ar gyfer dibyniaethau mewn gofodau enwau ar wahân a dibyniaethau gwan.

    Yn yr achos cyntaf, mae'n bosibl defnyddio elfennau gyda'r rhagddodiad “dep:” y tu mewn i'r adran “[nodweddion]” i gysylltu'n benodol â dibyniaeth ddewisol heb gynrychioli'r ddibyniaeth hon yn ymhlyg fel nodwedd. Yn yr ail achos, mae cefnogaeth ar gyfer marcio gyda'r arwydd “?” wedi'i ychwanegu. ("pecyn-enw?/feature-name") dibyniaethau dewisol y dylid eu cynnwys dim ond os yw rhyw eiddo arall yn cynnwys y ddibyniaeth ddewisol a roddwyd. Er enghraifft, yn yr enghraifft isod, bydd galluogi'r eiddo serde yn galluogi'r ddibyniaeth "serde", yn ogystal â'r eiddo "serde" ar gyfer y ddibyniaeth "rgb", ond dim ond os yw'r ddibyniaeth "rgb" wedi'i galluogi mewn man arall: [dibyniaethau] serde = { version = " 1.0.133", dewisol = true } rgb = { version = "0.8.25", dewisol = true } [features] serde = [ "dep:serde", "rgb?/serde"]

  • Mae cefnogaeth ar gyfer casglu cynyddrannol, a analluogwyd yn y datganiad diwethaf, wedi'i ddychwelyd. Mae'r nam casglwr a achosodd i'r nodwedd gael ei hanalluogi wedi'i ddatrys.
  • Wedi datrys rhai problemau gyda darparu amseryddion Instant gyda gwarant o amseru monotonig, sy'n cymryd i ystyriaeth yr amser a dreulir gan y system yn y modd cysgu. Yn flaenorol, defnyddiwyd yr API OS pryd bynnag y bo modd i weithredu'r amserydd, nad oedd yn ystyried sefyllfaoedd problemus sy'n torri undonedd amser, megis problemau caledwedd, defnyddio rhithwiroli, neu wallau yn y system weithredu.
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • Arc:: cylch_newydd
    • Rc:: cylch_newydd
    • sleisen::EscapeAscii
    • ::dianc_ascii
    • u8:: dianc_ascii
    • Vec::spare_capacity_mut
    • EfallaiUninit::assume_init_drop
    • EfallaiUninit:: rhagdybio_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
    • defnyddio::abs_diff
    • Arddangos ar gyfer io::ErrorKind
    • O ar gyfer ExitCode
    • Nid ar gyfer! (teipiwch "byth")
    • _Op_Aseinio
    • bwa::is_aarch64_feature_canfod!
  • Mae'r drydedd lefel o gefnogaeth wedi'i rhoi ar waith ar gyfer y llwyfannau mips64-openwrt-linux-musl* ac armv7-unknown-linux-uclibceabi (softfloat). Mae'r drydedd lefel yn cynnwys cefnogaeth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol, na gwirio a ellir adeiladu'r cod.
  • Mae'r casglwr wedi'i newid i ddefnyddio LLVM 14.

Yn ogystal, gallwch nodi:

  • Cefnogaeth ychwanegol ar gyfer cychwyn y casglwr rustc gan ddefnyddio'r backend rustc_codegen_gcc, sy'n eich galluogi i ddefnyddio'r llyfrgell libgccjit o brosiect GCC fel generadur cod yn rustc, sy'n caniatáu i rustc ddarparu cefnogaeth ar gyfer pensaernïaeth ac optimeiddio sydd ar gael yn GCC. Mae hyrwyddo casglwr yn golygu'r gallu i ddefnyddio generadur cod GCC yn rustc i adeiladu'r casglwr rustc ei hun. Ar yr ochr ymarferol, mae'r nodwedd hon yn caniatáu ichi adeiladu rhaglenni rhwd ar gyfer pensaernïaeth nad oeddent yn cael eu cefnogi o'r blaen yn rustc.
  • Mae rhyddhau pecyn cymorth uutils coreutils 0.0.13 ar gael, ac mae analog o'r pecyn GNU Coreutils, wedi'i ailysgrifennu yn yr iaith Rust, yn cael ei ddatblygu ynddo. Daw Coreutils gyda dros gant o gyfleustodau, gan gynnwys sort, cath, chmod, chown, chroot, cp, dyddiad, dd, adlais, enw gwesteiwr, id, ln, ac ls. Nod y prosiect yw creu gweithrediad amgen traws-lwyfan o Coreutils, sy'n gallu rhedeg ar lwyfannau Windows, Redox a Fuchsia, yn ogystal â dosbarthu o dan y drwydded MIT ganiataol, yn lle'r drwydded copileft GPL.

    Mae'r fersiwn newydd wedi gwella gweithrediad llawer o gyfleustodau, gan gynnwys cydnawsedd llawer gwell o'r cp, dd, df, hollti a thri utilities gyda'u cymheiriaid o'r prosiect GNU. Darperir dogfennaeth ar-lein. Defnyddir y parser clap i ddosrannu dadleuon llinell orchymyn, sydd wedi gwella'r allbwn ar gyfer y faner “--help” ac wedi ychwanegu cefnogaeth i fyrfoddau gorchmynion hir (er enghraifft, gallwch nodi "ls -col" yn lle "ls -color ”).

Ffynhonnell: opennet.ru

Ychwanegu sylw