Rust 1.44 Rhyddhau Iaith Rhaglennu

Cyhoeddwyd rhyddhau iaith rhaglennu system Rhwd 1.44, 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 dileu gwallau wrth drin awgrymiadau ac yn amddiffyn rhag problemau sy'n deillio o drin cof lefel isel, megis cyrchu rhanbarth cof ar ôl iddo gael ei ryddhau, dadgyfeiriadau 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.

Yn nhestun cyhoeddiad y datganiad newydd, cymerodd datblygwyr Rust ran mewn gwleidyddiaeth a gwrthododd yn amlwg gyhoeddi adolygiad llawn o'r newidiadau yn Rust 1.44 fel arwydd o undod â phrotestwyr yn erbyn trais yr heddlu, gan nodi bod y mater hwn yn bwysicach. na chyfnewid gwybodaeth dechnegol. Syml arloesiadau:

  • Mae'r rheolwr pecyn Cargo yn integreiddio'r gorchymyn “coeden cargo”, sy'n dangos graff dibyniaeth tebyg i goeden. Ychwanegwyd hefyd yr opsiwn “—duplicates” (“coeden cargo -d”), sy'n eich galluogi i werthuso dibyniaethau mewn gwahanol fersiynau o'r un pecyn.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amonia v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-os v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── log v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── uniach v1.4.2
    │ │ │ [adeiladu-dibyniaeth] │ │ │ └── version_check v0.1.5
    ...

  • Ar gyfer cymwysiadau nad ydynt wedi'u rhwymo i std ("#![no_std]"), gweithredir cefnogaeth ar gyfer technegau rhaglennu asyncronaidd yn seiliedig ar y swyddogaeth "async", y bloc symud async { ... } a'r gweithredwr ".await", sy'n symleiddio ysgrifennu trinwyr nad ydynt yn rhwystro llif prif orchymyn.
  • Mae cefnogaeth ar gyfer cynllun diffinio hierarchaeth modiwlau estynadwy wedi'i ychwanegu at y parser. Er enghraifft, ni fydd y lluniad canlynol yn cynhyrchu gwall, er gwaethaf absenoldeb gwirioneddol y modiwl "foo/bar/baz.rs" (mae'r lluniad yn dal yn semantig annilys a gall achosi gwall, ond gellir gweld a dosrannu'r newidiadau yn y lefel llunio macro ac amodol):

    #[cfg(FALSE)] mod foo {
    bar mod {
    mod baz;
    }
    }

  • Mae'r casglwr rustc wedi ychwanegu'r gallu i ddefnyddio'r faner “-C codegen-units” mewn modd cynyddrannol. Mae gweithredu catch_unwind wedi'i ail-weithio fel nad yw'n cael unrhyw effaith perfformiad os yw'r broses ddad-ddirwyn yn anabl ac na fydd unrhyw eithriadau yn cael eu taflu.
  • Mae cefnogaeth Lefel 64 wedi'i darparu ar gyfer llwyfannau aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos a x64_XNUMX-apple-tvos. Mae'r drydedd lefel yn cynnwys cymorth sylfaenol, ond heb brofi awtomataidd a chyhoeddi adeiladau swyddogol.
  • Mae cyfran newydd o APIs wedi'i drosglwyddo i'r categori sefydlog, gan gynnwys sefydlogi
    PathBuf ::gyda_gallu,
    PathBuf ::capasiti,
    PathBuf :: clir,
    PathBuf :: wrth gefn,
    PathBuf::reserve_exact,
    PathBuf :: crebachu_i_ffitio,
    {f32|f64} ::i_int_heb ei wirio,
    Cynllun:: alinio_i,
    Cynllun:: pad_to_align,
    Cynllun::arae a
    Cynllun:: estyn.

  • Swyddogaethau estynedig y llyfrgell safonol:
    • Ychwanegwyd amrywiad "vec![]" arbennig sy'n cael ei adlewyrchu'n uniongyrchol yn Vec::new(), sy'n caniatáu i "vec![]" gael ei ddefnyddio yn ei gyd-destun yn lle cysonion.
    • Mae gweithrediad (impl) o'r nodwedd wedi'i ychwanegu i drosi::Anffaeledig Hash.
    • Mae OsString yn gweithredu awgrymiadau craff DerefMut и MynegaiMut, gan ddychwelyd "&mut OsStr".
    • Cefnogaeth ychwanegol i Unicode 13.
    • Gweithredwyd yn Llinyn O <&mut str>.
    • Mae IoSlice yn gweithredu'r nodwedd copi.
    • Vec gweithredu O<[T; N]>.
    • proc_macro :: Mae LexError yn gweithredu fmt ::Arddangos a Gwall.
  • Defnyddir y briodwedd “const”, sy'n pennu a ellir ei ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, yn y dulliau from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes a to_ne_bytes ar gyfer pob math o gyfanrif.
  • Ychwanegwyd cefnogaeth ar gyfer cynhyrchu llyfrgelloedd sefydlog mewn fformat ".a" yn lle ".lib" ar gyfer llwyfannau GNU ar Windows.
  • Mae’r gofynion sylfaenol ar gyfer LLVM wedi’u codi i fersiwn LLVM 8.

Ffynhonnell: opennet.ru

Ychwanegu sylw