Rust 1.68 Programming Language Release

Ang pagpagawas sa Rust 1.68 nga kinatibuk-ang katuyoan nga programming language, nga gitukod sa proyekto sa Mozilla, apan karon naugmad ubos sa pagdumala sa independenteng non-profit nga organisasyon nga Rust Foundation, gimantala. Ang lengguwahe nagtutok sa kaluwasan sa panumduman ug naghatag sa mga paagi aron makab-ot ang taas nga paralelismo sa trabaho samtang naglikay sa paggamit sa usa ka tigkolekta sa basura ug runtime (ang runtime gikunhoran ngadto sa batakang pagsugod ug pagmentinar sa standard library).

Ang mga pamaagi sa pagdumala sa panumduman sa Rust nagluwas sa developer gikan sa mga sayup sa pagmaniobra sa mga pointer ug pagpanalipod batok sa mga problema nga motumaw tungod sa ubos nga lebel sa pagdumala sa panumduman, sama sa pag-access sa usa ka lugar sa panumduman human kini mapagawas, pagtangtang sa mga null pointer, pag-overrun sa buffer, ug uban pa. Sa pag-apod-apod sa mga librarya, paghatag og mga pagtukod ug pagdumala sa mga dependency, ang proyekto nagpalambo sa Cargo package manager. Gisuportahan ang crates.io repository alang sa pag-host sa mga librarya.

Ang kaluwasan sa panumduman gihatag sa Rust sa oras sa pag-compile pinaagi sa pagsusi sa reference, pagsubay sa pagpanag-iya sa butang, pagsubay sa mga kinabuhi sa butang (scopes), ug pagtimbang-timbang sa pagkahusto sa pag-access sa memorya sa panahon sa pagpatuman sa code. Naghatag usab ang Rust og proteksyon batok sa pag-awas sa integer, nanginahanglan mandatory nga pagsugod sa mga variable nga kantidad sa wala pa gamiton, pagdumala sa mga sayup nga mas maayo sa standard nga librarya, gipadapat ang konsepto sa dili mausab nga mga pakisayran ug mga variable nga default, nagtanyag kusog nga static nga pag-type aron maminusan ang mga lohikal nga sayup.

Panguna nga mga inobasyon:

  • Ang tagdumala sa pakete sa Cargo ug ang repositoryo sa crates.io nagpalig-on sa suporta alang sa Sparse protocol, nga naghubit sa usa ka bag-ong paagi sa pagtrabaho kauban ang usa ka indeks nga nagpakita sa magamit nga mga bersyon sa tanan nga mga pakete nga naa sa repositoryo. Gitugotan ka sa bag-ong protocol nga madugangan ang katulin sa pagtrabaho sa crates.io ug masulbad ang mga problema sa pag-scale nga adunay dugang nga pagtubo sa gidaghanon sa mga pakete sa repositoryo.

    Aron makunhuran ang mga paglangan tungod sa pag-download sa usa ka bug-os nga indeks, ang Sparse imbis nga ma-access ang indeks gamit ang Git naglambigit sa direkta nga pag-download sa HTTPS lamang ang kinahanglan nga datos sa indeks, nga naglangkob sa mga dependency sa usa ka partikular nga proyekto. Usa ka bag-ong serbisyo, index.crates.io, gigamit sa paghatag index data. Sa kasagaran, ang bag-ong protocol giplano nga gamiton sa Rust 1.70 nga sanga, ug sa wala pa kana, aron mahimo kini, mahimo nimong itakda ang variable sa palibot nga "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" o idugang ang 'protocol =' parameter sa "[registries. crates-io]" nga seksyon sa .cargo/config.toml nga payl nga 'sparse'.

  • Gidugang ang "pin!" macro, nga nagtugot kanimo sa paghimo og Pin<&mut T> nga istruktura gikan sa ekspresyong "T" nga adunay lokal nga pag-pin sa estado niini (dili sama sa Box::pin, wala kini maggahin ug memorya sa heap, apan nagbugkos sa lebel sa stack).
  • Gisugyot ang usa ka default handler sa error sa alokasyon sa memorya, gigamit kung gigamit ang standard alloc package. Ang mga aplikasyon nga makapahimo lang sa alloc (walay std) motawag na karon sa "panic!" Handler kung mapakyas ang alokasyon sa panumduman, nga mahimong ma-intercept gamit ang "#[panic_handler]". Ang mga programa nga naggamit sa std library magpadayon sa pag-imprinta sa impormasyon sa sayop ngadto sa stderr ug crash.
  • Usa ka bag-ong bahin sa API ang gibalhin sa kategorya nga stable, lakip ang mga pamaagi ug pagpatuman sa mga kinaiya nga na-stabilize:
    • {kinauyokan, std}::pin::pin!
    • impl Gikan sa alang sa {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut para sa PathBuf
  • Ang "const" nga hiyas, nga nagtino sa posibilidad sa paggamit niini sa bisan unsa nga konteksto imbes nga mga constant, gigamit sa VecDeque::bag-ong function.
  • Aron magtrabaho sa Android platform, labing menos NDK r25 (API 19) gikinahanglan na karon, i.e. Ang minimum nga gisuportahan nga bersyon sa Android gipataas sa 4.4 (KitKat).
  • Ang ikatulo nga lebel sa suporta gipatuman alang sa Sony PlayStation Vita platform (armv7-sony-vita-newlibeabihf). Ang ikatulo nga lebel naglakip sa batakang suporta, apan walay automated nga pagsulay, pagmantala sa opisyal nga pagtukod, o pagsusi kon ang code mahimo bang matukod.

Source: opennet.ru

Idugang sa usa ka comment