Rhyddhawyd Rust 1.87

I ddathlu degfed pen-blwydd iaith raglennu Rust 1.0 (sefydlwyd prosiect Rust yn 2006, ffurfiwyd y datganiad 0.1 yn 2012, a chynigiwyd y fersiwn sefydlog gyntaf yn 2015), mae Rust 1.87 wedi'i ryddhau. Mae'r iaith yn canolbwyntio ar ddiogelwch cof ac yn darparu modd i gyflawni paralelrwydd uchel o ran gweithredu tasgau, gan wneud heb ddefnyddio casglwr sbwriel ac amser rhedeg (mae'r amser rhedeg wedi'i 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 cefnogaeth ar gyfer pibellau dienw wedi'i ychwanegu at y llyfrgell safonol. Darperir y dull std::io::pipe() ar gyfer creu pibellau dienw, y gellir eu defnyddio ar y cyd Γ’ std::process::Command i brosesu ffrydiau mewnbwn ac allbwn safonol, ac i gyfuno ffrydiau stdout a stderr. defnyddiwch std::process::Command; defnyddiwch std::io::Darllen; gadewch (mut recv, send) = std::io::pipe()?; gadewch i mut command = Command::new("llwybr/i/bin") // cyfuno stdout a stderr i mewn i un sianel .stdout(send.try_clone()?) .stderr(send) .spawn()?; gadewch i allbwn mut = Vec::new(); recv.read_to_end(&mut allbwn)?; assertio!(gorchymyn.aros()?.llwyddiant());
  • Caniateir galw'r rhan fwyaf o swyddogaethau adeiledig y crynhoydd (Intrinsics) o std::arch o god diogel. Mae'r newid yn berthnasol i swyddogaethau std::arch adeiledig sydd wedi'u marcio'n anniogel dim ond oherwydd eu bod wedi'u clymu i swyddogaeth benodol, os yw'r swyddogaeth honno wedi'i galluogi. Er enghraifft, gellir galw _mm256_add_epi32 o god diogel os yw'r rhaglen yn defnyddio '#[target_feature(enable = "avx2")]'.
  • O'r blociau "asm!" Caniateir i god cydosod neidio i flociau gyda chod Rust, sy'n symleiddio datblygu cod lefel isel, fel gweithredu optimeiddiadau yn y cnewyllyn neu drefnu rhyngweithio Γ’ chaledwedd. Mae'r pwynt neidio ar gyfer y gorchymyn cydosodwr "jmp" wedi'i bennu yn y macro "asm!" gan ddefnyddio "label" operand newydd sy'n cynnwys mynegiant bloc gyda chod Rust. anniogel { asm!( "jmp {}", label { println!( "Neidiodd o asm!"); } ); }
  • Caniateir nodi mathau generig ac oesau a gipiwyd yn benodol mewn diffiniadau nodwedd gan ddefnyddio mathau dychwelyd nodwedd impl. nodwedd Foo { fn method<'a>(&'a self) -> impl Maint; math Implicit1<'a>: Maint; fn method_desugared<'a>(&'a self) -> Self::Implicit1<'a>; fn union<'a>(&'a self) -> impl Maint + defnydd ; math Implicit2: Maint; fn precise_desugared<'a>(&'a self) -> Self::Implicit2; }
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • Vec::extract_if
    • vec::ExtractIf
    • LinkedList::extract_if
    • rhestr_gysylltiedig::DetholiadOs
    • <[T]>::hollti_i_ffrwyth
    • <[T]>::hollti_ymwthiad
    • <[T]>::hollti_yn_gyntaf
    • <[T]>::hollti_ym_y_gwrthod_cyntaf
    • <[T]>::hollti_di_olaf
    • <[T]>::hollti_ymosod_olaf_mut
    • Llinyn::estyn_o_mewn
    • os_str::Arddangos
    • OsString::arddangos
    • OsStr::display
    • io::pipe
    • io::DarllenyddPibellau
    • io::PipeWriter
    • impl O ar gyfer OwnedHandle
    • impl O ar gyfer OwnedHandle
    • impl O ar gyfer Stdio
    • impl O ar gyfer Stdio
    • impl O ar gyfer OwnedFd
    • impl O ar gyfer OwnedFd
    • Blwch >::ysgrifennu
    • impl CeisiwchFrom > ar gyfer Llinyn
    • <*const T>::gwrthbwyso_o_heb_lofnod
    • <*const T>::byte_offset_from_unsigned
    • <*mut T>::gwrthbwyso_o_heb_lofnod
    • <*mut T>::byte_offset_from_unsigned
    • NonNull::gwrthbwyso_o_heb_lofnod
    • NonNull::byte_offset_from_unsigned
    • ::llofnod_cast
    • Dim Sero:: ::llofnod_cast.
    • ::cast_heb_lofnod.
    • Dim Sero:: ::cast_heb_lofnod.
    • ::yn_lluosog_o
    • ::unbonded_shl
    • ::unbonded_shr
    • ::unbonded_shl
    • ::unbonded_shr
    • ::canolbwynt
    • ::o_utf8
    • ::o_utf8_mut
    • ::from_utf8_heb ei wirio
    • ::from_utf8_unchecked_mut
  • Defnyddir yr arwydd β€œconst” mewn swyddogaethau:
    • craidd::str::from_utf8_mut
    • <[T]>::copΓ―o_o_sleisen
    • CyfeiriadSocket::set_ip
    • Cyfeiriad_Socket::gosod_porthladd,
    • SocketAddrV4::set_ip
    • SocketAddrV4::set_porthladd,
    • SocketAddrV6::set_ip
    • SocketAddrV6::set_porthladd
    • SocketAddrV6::set_flowinfo
    • SocketAddrV6::set_scope_id
    • char::is_digid
    • char::is_whitespace
    • <N::as_flattened
    • <N::as_flattened_mut
    • Llinyn::i_beitiau
    • Llinyn::fel_str
    • Llinyn::capasiti
    • Llinyn::fel_beitiau
    • Llinyn::len
    • Llinyn::yw_ei_wag
    • Llinyn::as_mut_str
    • Llinyn::as_mut_vec
    • Vec::as_ptr
    • Vec::as_sleisen
    • Vec::capasiti
    • Vec::len
    • Vec::is_empty
    • Vec::as_mut_slice
    • Vec::as_mut_ptr
  • Mae'r ail lefel o gefnogaeth ar gyfer y platfform targed i586-pc-windows-msvc wedi'i dileu. Argymhellir defnyddio'r platfform i686-pc-windows-msvc, sy'n cynnwys cefnogaeth ar gyfer cyfarwyddiadau SSE2. Nid yw'r platfform i586-pc-windows-msvc yn ddefnyddiol mwyach, gan Windows 10 Mae angen cefnogaeth SSE2, a fersiynau cynharach Windows nid ydynt yn cael eu cefnogi yn Rust.

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