Rust 1.66 Rhyddhau Iaith Rhaglennu

Mae rhyddhau iaith raglennu pwrpas cyffredinol Rust 1.66, 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:

  • Mewn cyfrifiadau gyda chynrychioliadau cyfanrif (y briodwedd "#[repr(Int)]")), caniateir dynodiad clir o'r gwahaniaethol (rhif amrywiad yn y cyfrif), hyd yn oed os yw'r rhif yn cynnwys meysydd. #[repr(u8)] enum Foo { A(u8), # gwahaniaethwr 0 B(i8), # gwahaniaethwr 1 C(bool) = 42, # gwahaniaethwr 42 }
  • Ychwanegwyd craidd swyddogaeth :: awgrym :: black_box sydd yn syml yn dychwelyd y gwerth a dderbyniwyd. Gan fod y casglwr yn meddwl bod y swyddogaeth hon yn gwneud rhywbeth, gellir defnyddio'r swyddogaeth black_box i analluogi optimeiddiadau casglwr ar gyfer dolenni wrth berfformio profion perfformiad cod neu wrth archwilio cod peiriant a gynhyrchir (fel nad yw'r casglwr yn ystyried y cod heb ei ddefnyddio a'i ddileu). Er enghraifft, yn yr enghraifft isod, mae black_box(v.as_ptr()) yn atal y casglwr rhag meddwl nad yw'r fector v yn cael ei ddefnyddio. defnyddio std::awgrym::black_box; fn push_cap(v: &mut Vec) { ar gyfer fi yn 0..4 { v.push(i); black_box(v.as_ptr()); } }
  • Mae'r rheolwr pecyn "cargo" yn cynnig y gorchymyn "tynnu", sy'n eich galluogi i ddileu dibyniaethau o'r maniffest Cargo.toml o'r llinell orchymyn.
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • proc_macro ::Sspan::source_text
    • u*::{gwirio_add_signed, gorlifo_add_signed, dirlawn_add_signed, lapio_add_signed}
    • i*::{gwirio_add_heb ei lofnodi, yn gorlifo_add_heb ei lofnodi, yn dirlawn_add_heb ei lofnodi, yn lapio_add_heb ei lofnodi}
    • i*::{gwirio_sub_heb ei lofnodi, gorlifo_sub_heb ei lofnodi, dirlawn_sub_heb ei lofnodi, lapio_sub_heb ei lofnodi}
    • BTreeSet::{cyntaf, olaf, pop_cyntaf, pop_last}
    • BTreeMap ::{gwerth_key_cyntaf, olaf_key_value,_mynediad_cyntaf,_mynediad_olaf,_pop_cyntaf, pop_last}
    • Ychwanegu gweithrediadau AsFd ar gyfer mathau o glo stdio wrth ddefnyddio WASI.
    • imp TryFrom > ar gyfer Blwch<[T; N]>
    • craidd:: awgrym::black_box
    • Hyd:: try_from_secs_{f32,f64}
    • Opsiwn:: dadsipio
    • std::os::fd
  • Caniateir yr ystodau "..X" a "..=X" mewn templedi.
  • Wrth adeiladu pen blaen y casglwr rustc a'r backend LLVM, defnyddir dulliau optimeiddio LTO (Optimeiddio Amser Cyswllt) ac BOLT (Offeryn Optimeiddio a Gosod Deuaidd) i gynyddu perfformiad y cod canlyniadol a lleihau'r defnydd o gof.
  • Wedi gweithredu cefnogaeth lefel 5 ar gyfer llwyfannau armv5te-none-eabi a thumbvXNUMXte-none-eabi. Mae'r drydedd lefel yn awgrymu cefnogaeth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol a gwirio'r gallu i adeiladu'r cod.
  • Cefnogaeth ychwanegol ar gyfer cysylltu Γ’ Llyfrgelloedd Generig macOS.

Yn ogystal, gallwn nodi bod casglwr pen blaen yr iaith Rust (gccrs) wedi'i gynnwys yng nghronfa godau'r GCC. Mae'r blaen wedi'i gynnwys yng nghangen GCC 13, a fydd yn cael ei rhyddhau ym mis Mai 2023. Gan ddechrau gyda GCC 13, bydd pecyn cymorth safonol GCC yn gallu cael ei ddefnyddio i lunio rhaglenni Rust heb fod angen gosod y casglwr rustc a adeiladwyd gan ddefnyddio datblygiadau LLVM. Bydd gweithrediad Rust yn GCC 13 mewn statws beta, heb ei alluogi yn ddiofyn.

Ffynhonnell: opennet.ru

Ychwanegu sylw