Rust 1.44 Programming Language Release

gepubliseer stelsel programmeertaal vrystelling Roes 1.44gestig deur die Mozilla-projek. Die taal fokus op veilige geheuebestuur, verskaf outomatiese geheuebestuur, en verskaf die middele om hoë werkparallelisme te bereik terwyl die gebruik van 'n vullisverwyderaar en runtime.

Rust se outomatiese geheuebestuur red die ontwikkelaar van foute wanneer wysers gemanipuleer word en beskerm teen probleme wat ontstaan ​​as gevolg van laevlakgeheuemanipulasie, soos toegang tot 'n geheuearea nadat dit vrygestel is, herkenning van nulwysers, bufferoorskryding, ens. Om biblioteke te versprei, samestelling te verseker en afhanklikhede te bestuur, ontwikkel die projek 'n pakketbestuurder Cargo, wat jou in staat stel om die biblioteke wat jy nodig het vir die program in een klik te kry. 'n Bewaarplek word ondersteun om biblioteke te huisves kratte.io.

In die teks van die aankondiging van die nuwe vrystelling, het die Rust-ontwikkelaars by die politiek betrokke geraak en het uitdruklik geweier om 'n volledige resensie van die veranderinge in Rust 1.44 te publiseer as 'n teken van solidariteit met betogers teen polisiegeweld, wat aandui dat hierdie kwessie belangriker is as die uitruil van tegniese kennis. Basies innovasies:

  • Die Cargo-pakketbestuurder integreer die "vragboom"-opdrag, wat 'n boomagtige afhanklikheidsgrafiek vertoon. Ook bygevoeg is die opsie "—duplicates" ("vragboom -d"), wat jou toelaat om afhanklikhede in verskillende weergawes van dieselfde pakket te evalueer.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── ammoniak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-if 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
    │ │ │ └── unicase v1.4.2
    │ │ │ [bou-afhanklikhede] │ │ │ └── version_check v0.1.5
    ...

  • Vir toepassings wat nie aan 'n standaard gebind is nie ("#![no_std]"), word ondersteuning vir asinchroniese programmeringstegnieke geïmplementeer gebaseer op die "async" funksie, die asynchrone skuif { ... } blok en die ".await" operateur, wat vereenvoudig die skryf van nie-blokkerende hanteerders se hoofopdragvloei.
  • Ondersteuning vir 'n uitbreidbare module hiërargie-definisieskema is by die ontleder gevoeg. Byvoorbeeld, die volgende konstruk sal nie 'n fout produseer nie, ten spyte van die werklike afwesigheid van die module "foo/bar/baz.rs" (die konstruk is steeds semanties ongeldig en kan 'n fout veroorsaak, maar die veranderinge kan gesien en ontleed word by die makro- en voorwaardelike samestellingsvlak):

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

  • Die rustc samesteller het die vermoë bygevoeg om die “-C codegen-units” vlag in inkrementele modus te gebruik. Die implementering van catch_unwind is herwerk sodat dit geen prestasie-impak het as die ontwikkelproses gedeaktiveer is en geen uitsonderings gegooi word nie.
  • Vlak 64-ondersteuning is verskaf vir die platforms aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos en x64_XNUMX-apple-tvos. Die derde vlak behels basiese ondersteuning, maar sonder outomatiese toetsing en publikasie van amptelike bouwerk.
  • 'n Nuwe gedeelte van API's is na die stabiele kategorie oorgeplaas, insluitend gestabiliseer
    PathBuf::with_capacity,
    PathBuf::kapasiteit,
    PathBuf::clear,
    PathBuf::reserwe,
    PathBuf::reserve_exact,
    PathBuf::krimp_om_aan te pas,
    {f32|f64}::to_int_unchecked,
    Uitleg::align_to,
    Uitleg::pad_to_align,
    Uitleg::skikking en
    Uitleg::verleng.

  • Uitgebreide funksies van die standaard biblioteek:
    • Het 'n spesiale "vec![]"-variant bygevoeg wat direk in Vec::new() weerspieël word, sodat "vec![]" in konteks in plaas van konstantes gebruik kan word.
    • 'n Implementering (impl) van die eienskap is bygevoeg om te convert::Infallible Hash.
    • OsString implementeer slim wysers DerefMut и IndexMut, wat "&mut OsStr" terugstuur.
    • Bygevoeg ondersteuning vir Unicode 13.
    • Geïmplementeer in String Van<&mut str>.
    • IoSlice implementeer die eienskap Kopieer.
    • Vec geïmplementeer From<[T; N]>.
    • proc_macro::LexError implemente fmt::Display and Error.
  • Die “const”-kenmerk, wat bepaal of dit in enige konteks in plaas van konstantes gebruik kan word, word gebruik in die from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes en to_ne_bytes metodes vir alle heelgetaltipes.
  • Bygevoeg ondersteuning vir die generering van statiese biblioteke in ".a" formaat in plaas van ".lib" vir GNU platforms op Windows.
  • Die minimum vereistes vir LLVM is verhoog na LLVM weergawe 8.

Bron: opennet.ru

Voeg 'n opmerking