Rhyddhawyd Rust 1.86. Paratoi'r fanyleb iaith Rust swyddogol

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

  • Cefnogaeth ychwanegol ar gyfer uwchraddio nodweddion i'r uwch nodwedd sylfaenol, h.y. nawr mae modd trosi cyfeiriad at wrthrych nodwedd yn uniongyrchol yn gyfeiriad at wrthrych trait super heb fod angen creu dull arbennig yn y nodwedd sy'n dychwelyd cyfeiriad at yr uwch nodwedd. Gellir cyflawni gweithrediad tebyg gyda mathau eraill o awgrymiadau craff, er enghraifft, “Arc -> Arc " a " *const dyn Trait -> *const dyn Supertrait." trait Trait: Supertrait {} trait Supertrait {} fn upcast(x: &dyn Trait) -> &dyn Supertrait { x }
  • Mae'r dull get_disjoint_mut() wedi'i ychwanegu at HashMap a'i dorri'n sleisys i gael cyfeiriadau lluosog at elfennau mutable ar yr un pryd. Yn flaenorol, nid oedd y gwiriwr benthyciad yn caniatáu defnydd ar yr un pryd o ddolenni a gafwyd gan ddefnyddio'r dull get_mut(). gadewch v = &mut [1, 2, 3]; os gadewch Iawn([a,b]) = v.get_disjoint_mut([0, 2]) { *a = 413; *b = 612; } assert_eq!(v, &[413, 2, 612]); os gadewch Iawn([a,b]) = v.get_disjoint_mut([0..1, 1..3]) { a[0] = 8; b[0] = 88; b[1] = 888; } assert_eq!(v, &[8, 88, 888]);
  • Caniateir iddo farcio swyddogaethau diogel gan ddefnyddio'r briodwedd “#[target_feature]”, sy'n nodi bod y swyddogaeth yn defnyddio'r galluoedd CPU penodedig. Dim ond os yw hefyd wedi'i nodi â "#[target_feature]" y gellir galw swyddogaeth ddiogel wedi'i marcio â'r briodwedd “#[target_feature]” yn ddiogel (fel arall rhaid galw swyddogaethau tebyg mewn bloc anniogel). Fodd bynnag, ni ellir eu trosglwyddo i swyddogaethau sy'n derbyn paramedrau generig sy'n gyfyngedig i fathau Fn*. Yn flaenorol, dim ond i nodweddion wedi'u marcio "anniogel" y gellid cymhwyso'r briodwedd "#[target_feature]". #[target_feature(enable = "avx2")] fn angen_avx2() {// ... } #[target_feature(enable = "avx2")] fn safe_callsite() { requires_avx2(); } fn anniogel_callsite() { os yw_x86_feature_detected!("avx2") { anniogel { requires_avx2() }; } }
  • Mae'r casglwr Rust yn cynnwys honiad dadfygio nad yw'r pwyntydd yn cynnwys gwerth NULL wrth ddarllen ac ysgrifennu meintiau nad ydynt yn sero, yn ogystal ag wrth ail-fenthyca pwyntydd yn gyfeirnod. Er enghraifft, pan fydd gwiriadau dadfygio yn cael eu galluogi, bydd y cod canlynol nawr yn arwain at gyflwr "panig": gadewch _x = *std::ptr::null:: () ; gadewch _x = &*std ::ptr::null :: () ;
  • Yn ddiofyn, mae'r gwiriad lint "missing_abi" wedi'i alluogi, sy'n arwain at rybudd os na nodir ABI ar ôl yr allweddair allanol. Yn flaenorol, os na nodwyd unrhyw ABI ar ôl allanol, rhagdybiwyd bod ABI "C" yn cael ei ddefnyddio. Argymhellir yn awr nodi'n benodol yr ABI "C", e.e. 'allanol "C" {}' ac 'allanol "C" fn'
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • {arnofio}::nesaf_lawr
    • {arnofio}::nesaf_up
    • <[_]> ::get_disjoint_mut
    • <[_]> ::get_disjoint_unchecked_mut
    • sleisen::GetDisjointMutError
    • HashMap::get_disjoint_mut
    • HashMap::get_disjoint_unchecked_mut
    • NonZero::count_ones
    • Vec:: pop_if
    • cysoni::Unwaith::aros
    • cysoni::Unwaith::wait_force
    • cysoni::OnceLock::aros
  • Defnyddir yr arwydd “const” mewn swyddogaethau:
    • awgrym::black_bocs
    • io::Cyrchwr::get_mut
    • io::Cyrchwr:: set_position
    • str::is_char_ffin
    • str:: hollti_at
    • str::hollti_at_wirio
    • str:: hollti_at_mut
    • str:: hollti_at_mut_gwiriwyd
  • Mae'r drydedd lefel o gefnogaeth wedi'i rhoi ar waith ar gyfer y llwyfannau {aarch64-anknown,x86_64-pc}-nto-qnx710_iosock, {aarch64-unknown,x86_64-pc}-nto-qnx800, {x86_64,i686}-win7-windows,amd-gamd-g x86_64-pc-cygwin, {mips,mipsel}-mti-none-elf, m68k-unknown-none-elf, armv7a-nuttx-{eabi,eabihf}, aarch64-unknown-nuttx a thumbv7a-nuttx-{eabi,eabihf}. Mae'r drydedd lefel yn cynnwys cymorth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol, na gwirio a ellir adeiladu'r cod.
  • Ychwanegwyd rhybudd am ddiwedd yr ail lefel o gefnogaeth ar gyfer y platfform targed i586-pc-windows-msvc yn y datganiad nesaf (1.87). Argymhellir defnyddio'r platfform i686-pc-windows-msvc, sydd â chefnogaeth ar gyfer cyfarwyddiadau SSE2. Nid yw'r platfform i586-pc-windows-msvc yn ddefnyddiol mwyach, gan fod Windows 10 Mae angen cefnogaeth SSE2, a fersiynau cynharach Windows nid ydynt yn cael eu cefnogi yn Rust.

Yn ogystal, gellir nodi bod Ferrocene wedi darparu manyleb ar gyfer yr iaith Rust (FLS - Manyleb Iaith Ferrocene) i'r gymuned, a grëwyd yn ystod datblygiad ei chrynhoydd Rust ar gyfer systemau sy'n hanfodol i genhadaeth ac wedi'i chydamseru o bryd i'w gilydd â chyflwr presennol y prif gasglwr Rust. Mae manyleb FLS yn rhoi arweiniad strwythuredig a manwl ar gystrawen, semanteg ac ymddygiad Rust, sy'n addas ar gyfer dilysu, asesu cydnawsedd a safoni.

Defnyddir cyfraniadau i greu manyleb gyfeirio ar gyfer yr iaith Rust y gellir ei defnyddio i ddatblygu casglwyr amgen ac i brofi'r casglwr mewn meysydd sy'n hanfodol i ddiogelwch.

Ffynhonnell: opennet.ru

Prynu gwesteio dibynadwy ar gyfer gwefannau sydd â diogelwch DDoS, gweinyddwyr VPS VDS 🔥 Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster