Rhyddhau iaith raglennu Rust 1.74. archwiliad RustVMM. Ailysgrifennu Binder yn Rust

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

  • Ychwanegwyd y gallu i ffurfweddu gwiriadau lint trwy'r ffeil Cargo.toml gyda maniffest y rheolwr pecyn. Er mwyn diffinio gosodiadau lint, megis y lefel ymateb (gwahardd, gwadu, rhybuddio, caniatáu), cynigir adrannau newydd “[lints]” a “[workspace.lints]”, y mae newidiadau yn cael eu hystyried wrth wneud penderfyniad am ailadeiladu. Er enghraifft, yn lle nodi'r baneri “-F”, “-D”, “-W” a “-A” wrth gydosod neu ychwanegu'r “#! [gwahardd(unsafe_code)]” a “#! [gwadu (clippy) :” priodoleddau i'r cod) :enum_glob_use)]" bellach yn gallu cael ei ddefnyddio yn y maniffest Cargo: [lints.rust] unsafe_code = "gwahardd" [lints.clippy] enum_glob_use = "gwadu"
  • Mae rheolwr pecyn Crate wedi ychwanegu'r gallu i ddilysu wrth gysylltu ag ystorfa. Mae'r dosbarthiad sylfaenol yn cynnwys cefnogaeth ar gyfer gosod paramedrau dilysu mewn siopau credential Linux (yn seiliedig ar libsecret), macOS (Keychain) a Windows (Rheolwr Credential Windows), ond gwnaed y system yn fodiwlaidd i ddechrau ac mae'n caniatáu ichi drefnu gwaith gyda darparwyr amrywiol ar gyfer storio a cynhyrchu tocynnau, er enghraifft , mae ategyn wedi'i baratoi ar gyfer defnyddio'r rheolwr cyfrinair 1Password. Mae'n bosibl y bydd angen i'r gadwrfa ddilysu unrhyw weithrediad, nid dim ond i gadarnhau bod pecynnau wedi'u cyhoeddi. ~/.cargo/config.toml [registry] global-credential-providers = [ "cargo:token", "cargo:libsecret"]
  • Mae cefnogaeth ar gyfer rhagamcanion math dychwelyd (impl_trait_projections) wedi'i sefydlogi, gan ganiatáu i Hunan a T::Assoc gael eu crybwyll mewn mathau dychwelyd megis "async fn" a "->impl Trait". struct Lapper <'a, T>(&'a T); ... } } nodwedd Trait<'a> { teipiwch Assoc; fn new() -> Hunan::Cymdeithas; } impl Trait < '_> ar gyfer () { type Assoc = (); fn new() {} } // Mathau dychwelyd didraidd sy'n sôn am fath cysylltiedig: impl<'a, T: Trait<'a>> Lapiwr<'a, T> { async fn mk_assoc() -> T ::Assoc { /* … */ } fn a_few_assocs() -> impl Iterator { /* … */ } }
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
  • Defnyddir y nodwedd “const”, sy'n pennu'r posibilrwydd o'i ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, yn y swyddogaethau:
    • craidd::mem::transmute_copy
    • str::is_ascii
    • [u8] ::is_ascii
    • craidd::num::dirlawn
    • impl O ar gyfer std::proses::Stdio
    • impl O ar gyfer std::proses::Stdio
    • impl O ar gyfer std::proses::Plentyn{Stdin, Stdout, Stderr}
    • impl O ar gyfer std::proses::Plentyn{Stdin, Stdout, Stderr}
    • std::ffi::OsString::from_encoded_bytes_unchecked
    • std::ffi::OsString::into_encoded_bytes
    • std::ffi::OsStr::from_encoded_bytes_unchecked
    • std::ffi::OsStr::as_encoded_bytes
    • std::io::Gwall::arall
    • imp TryFrom ar gyfer d16
    • imp O <&[T; N]>ar gyfer Vec
    • imp O <&mut[T; N]>ar gyfer Vec
    • imp O <[T; N]> ar gyfer Arc<[T]>
    • imp O <[T; N]> ar gyfer Rc<[T]>
  • Mae'r casglwr, y pecyn cymorth, y llyfrgell safonol, a'r rhaglenni gweithredadwy a gynhyrchir wedi cynyddu'r gofynion ar gyfer llwyfannau Apple, sydd bellach yn gofyn am o leiaf macOS 10.12 Sierra, iOS 10, a tvOS 10 a ryddhawyd yn 2016 i'w rhedeg.
  • Mae'r drydedd lefel o gefnogaeth wedi'i rhoi ar waith ar gyfer y platfform i686-pc-windows-gnullvm. Mae'r drydedd lefel yn cynnwys cefnogaeth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol, na gwirio a ellir adeiladu'r cod.
  • Mae'r ail lefel o gefnogaeth ar gyfer y platfform targed loongarch64-unknown-none wedi'i rhoi ar waith. Mae'r ail lefel o gefnogaeth yn cynnwys gwarant cynulliad.

Yn ogystal, gellir nodi dau ddigwyddiad yn ymwneud â'r iaith Rust:

  • Mae'r OSTIF (Cronfa Gwella Technoleg Ffynhonnell Agored), a grëwyd i gryfhau diogelwch prosiectau ffynhonnell agored, wedi cyhoeddi canlyniadau archwiliad o'r prosiect RustVMM, sy'n darparu cydrannau ar gyfer creu hypervisors tasg-benodol a monitorau peiriannau rhithwir (VMMs). Mae cwmnïau fel Intel, Alibaba, Amazon, Google, Linaro a Red Hat yn cymryd rhan yn natblygiad y prosiect. Mae hypervisors Intel Cloud Hypervisor a Dragonball yn cael eu datblygu yn seiliedig ar RustVMM. Cadarnhaodd yr archwiliad ansawdd uchel y sylfaen cod a'r defnydd o dechnegau yn y bensaernïaeth a'r gweithredu gyda'r nod o sicrhau'r diogelwch mwyaf posibl. Yn ystod yr archwiliad, adnabuwyd 6 problem nad oedd yn cael effaith uniongyrchol ar ddiogelwch.
  • Cyflwynodd Google weithrediad newydd o fecanwaith cyfathrebu rhyngbroses Binder, wedi'i ailysgrifennu yn yr iaith Rust, i restr bostio datblygwr cnewyllyn Linux. Gwnaethpwyd yr ail-waith fel rhan o brosiect i gryfhau diogelwch, hyrwyddo technegau rhaglennu diogel a chynyddu effeithlonrwydd adnabod problemau wrth weithio gyda chof yn Android (mae tua 70% o'r holl wendidau peryglus a nodir yn Android yn cael eu hachosi gan wallau wrth weithio gyda'r cof ). Mae gweithredu Binder in Rust wedi cyflawni cydraddoldeb o ran ymarferoldeb â'r fersiwn wreiddiol yn yr iaith C, wedi pasio holl brofion AOSP (Prosiect Ffynhonnell Agored Android) a gellir ei ddefnyddio i greu rhifynnau gweithredol o firmware. Mae perfformiad y ddau weithrediad tua'r un lefel (gwyriadau o fewn -1.96% a +1.38%).

Ffynhonnell: opennet.ru

Ychwanegu sylw