Rust 1.40 Rhyddhau Iaith Rhaglennu

Cyhoeddwyd rhyddhau iaith rhaglennu system Rhwd 1.40, a sefydlwyd gan brosiect Mozilla. Mae'r iaith yn canolbwyntio ar ddiogelwch cof, yn darparu rheolaeth cof awtomatig, ac yn darparu offer ar gyfer cyflawni cyfochrogrwydd tasg uchel heb ddefnyddio casglwr sbwriel a Rhedeg.

Mae rheolaeth cof awtomatig Rust yn rhyddhau'r datblygwr rhag trin pwyntydd ac yn amddiffyn rhag problemau sy'n deillio o drin cof lefel isel, megis mynediad cof ôl-rhad ac am ddim, cyfeiriadau pwyntydd nwl, gor-redeg byffer, ac ati. Mae rheolwr pecyn yn cael ei ddatblygu i ddosbarthu llyfrgelloedd, sicrhau cydosod a rheoli dibyniaethau gan y prosiect. Tâl, sy'n eich galluogi i gael y llyfrgelloedd sydd eu hangen ar gyfer y rhaglen mewn un clic. Cefnogir ystorfa i gynnal llyfrgelloedd cewyll.io.

Y prif arloesiadau:

  • Ychwanegwyd y gallu i farcio strwythurau (struct) ac enumerations (enum gyda bloc Variant) gan ddefnyddio'r priodoledd "#[heb_gynhwysfawr]", sydd yn caniatáu Yn caniatáu ychwanegu meysydd ac amrywiadau newydd yn y dyfodol at strwythurau a rhifiadau datganedig. Er enghraifft, gall datblygwyr modiwlau gyda strwythurau gyda meysydd a ddatganwyd yn gyhoeddus ddefnyddio "#[non_exhaustive]" i nodi strwythurau lle gellir ychwanegu meysydd newydd yn y dyfodol. Hyd yn hyn, mewn sefyllfaoedd o'r fath, roedd yn rhaid i'r datblygwr ddewis rhwng datgan meysydd yn breifat a rhwymo i restr sefydlog o feysydd. Mae'r priodoledd newydd yn dileu'r cyfyngiad hwn ac yn caniatáu ychwanegu meysydd newydd yn y dyfodol heb y risg o dorri cod allanol a luniwyd yn flaenorol. Mewn pecynnau crât, wrth gymharu amrywiadau yn yr adran "cyfateb", mae angen mwgwd penodol "_ => {...}" i orchuddio meysydd posibl yn y dyfodol; fel arall, bydd gwall yn cael ei daflu wrth ychwanegu meysydd newydd.
  • Wedi adio Y gallu i alw'r macro gweithdrefnol mac!() mewn cyd-destun math. Er enghraifft, gallwch nawr ysgrifennu "type Foo = expand_to_type!(bar);" os yw "expand_to_type" yn macro gweithdrefnol.
  • Mewn blociau "extern { … }" wedi adio y gallu i ddefnyddio macros gweithdrefnol a phriodoleddau, gan gynnwys macros "bang!()", er enghraifft:

    rheolau_macro! gwneud_eitem { ($enw:ident) => { fn $enw(); } }

    allanol {
    gwneud_eitem!(alffa);
    gwneud_eitem!(beta);
    }

    allanol "C" {
    #[macro_fy_hunaniaeth]
    fn foo();
    }

  • Mewn macros gweithredu Y gallu i gynhyrchu elfennau "macro_rules!". Mae cynhyrchu "macro_rules!" yn bosibl mewn macros tebyg i swyddogaethau ("mac!()") ac mewn macros sy'n seiliedig ar briodoleddau ("#[mac]").
  • Yn yr elfen gyfatebol $m:meta wedi adio cefnogaeth ar gyfer gwerthoedd rhifo tocynnau mympwyol ('[TOKEN_STREAM]', '{TOKEN_STREAM}' a '(TOKEN_STREAM)'), er enghraifft:

    rheolau_macro! derbyn_meta { ($m:meta) => {} }
    derbyn_meta!( fy::llwybr );
    derbyn_meta!( fy::llwybr = "wedi'i oleuo" );
    derbyn_meta!( fy::llwybr ( abc ) );
    derbyn_meta!( fy::llwybr [ abc ] );
    derbyn_meta!( fy::llwybr { abc } );

  • Yn y modd Rust 2015, mae adrodd gwallau bellach wedi'i alluogi ar gyfer problemau a ganfuwyd gan y gwiriwr benthyg gan ddefnyddio'r dechneg NLL (Amseroedd Bywyd Aneiriol). Yn flaenorol, roedd rhybuddion yn cael eu disodli gan wallau wrth redeg yn y modd Rust 2018.
    Ar ôl i'r newid gael ei ymestyn i'r modd Rust 2015, roedd y datblygwyr o'r diwedd yn gallu cael gwared o'r hen wiriwr benthyca.

    Fel atgoffa, gwnaeth y system ddilysu, yn seiliedig ar fecanwaith newydd ar gyfer cyfrif am oes newidynnau benthyg, hi'n bosibl nodi rhai problemau a aeth heb i'r hen god dilysu sylwi arnynt. Gan y gallai allbwn gwall ar gyfer gwiriadau o'r fath effeithio ar gydnawsedd â chod a oedd yn rhedeg yn flaenorol, cyhoeddwyd rhybuddion yn lle gwallau i ddechrau.

  • Mae'r faner "const", sy'n pennu'r posibilrwydd o'i defnyddio mewn unrhyw gyd-destun yn lle cysonion, yn cael ei chymhwyso i'r ffwythiant is_power_of_two (ar gyfer cyfanrifau heb lofnod).
  • Mae rhan newydd o'r API wedi'i symud i'r categori sefydlog, gan gynnwys y macro todo!() wedi'i sefydlogi a'r dulliau slice::repeat, mem::take, BTreeMap::get_key_value, a HashMap::get_key_value.
    Opsiwn::as_deref, Opsiwn::as_deref_mut, Opsiwn::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, {f32,f64}::from_be_bytes, {f32,f64}::from_le_bytes, a {f32,f64}::from_ne_bytes.
  • Yn y rheolwr pecynnau cargo
    gweithredu Mae rhybuddion y crynhoydd yn cael eu storio mewn storfa dros dro ar y ddisg. Mae gan y gorchymyn "cargo metadata" bellach y "—platfform-hidlo" i arddangos dim ond pecynnau sydd wedi'u rhwymo i'r platfform targed penodedig yn y graff datrys dibyniaeth. Mae'r paramedr ffurfweddu http.ssl-version wedi'i ychwanegu i bennu'r fersiynau TLS a ganiateir.
    Ychwanegwyd y gallu i gyhoeddi'r adran "dibyniaethau datblygu" heb nodi'r allwedd "fersiwn".
  • Mae'r crynhoydd rustc bellach yn darparu cefnogaeth lefel 3 ar gyfer y llwyfannau targed thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64, a mips64el-unknown-linux-muslabi64. Mae Lefel 3 yn darparu cefnogaeth sylfaenol, ond heb brofion awtomataidd na strwythurau swyddogol.

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