Rust 1.62 Programming Language Release

Ang pagpagawas sa Rust 1.62 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 "cargo" package manager nagtanyag sa "add" command, nga nagtugot kanimo sa pagdugang sa bag-ong dependencies sa Cargo.toml manifest o pag-usab sa kasamtangan nga dependencies gikan sa command line. Gitugotan ka usab sa mando nga ipiho ang indibidwal nga mga bahin ug mga bersyon, pananglitan: kargamento pagdugang serde β€”mga tampok nga makuha ang kargamento add nom@5
  • Gidugang ang abilidad sa paggamit sa "#[derive(Default)]" nga adunay mga enum diin ang default nga kapilian gihubit gamit ang "#[default]" nga hiyas. #[derive(Default)] enum Tingali { #[default] Wala, Usa ka Butang(T), }
  • Sa plataporma sa Linux, gigamit ang usa ka mas compact ug mas paspas nga pagpatuman sa mekanismo sa pag-synchronize sa Mutex, base sa paggamit sa mga futex nga gihatag sa Linux kernel. Dili sama sa kaniadto nga gigamit nga pagpatuman base sa pthreads library, ang bag-ong bersyon naggamit lang ug 5 bytes imbes nga 40 para tipigan ang Mutex state. Sa susama, ang Condvar ug RwLock locking mechanisms gibalhin sa futex.
  • Ang ikaduha nga lebel sa suporta alang sa x86_64-unknown-none target nga plataporma gipatuman, nga gidesinyo aron makamugna og mga executable nga mga file nga magamit nga walay operating system. Pananglitan, ang piho nga target nga plataporma mahimong magamit sa pagsulat sa mga sangkap sa kernel. Ang ikaduhang lebel sa suporta naglakip sa garantiya sa asembliya.
  • Ang ikatulo nga lebel sa suporta gipatuman alang sa aarch64-pc-windows-gnullvm ug x86_64-pc-windows-gnullvm nga mga plataporma. 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.
  • 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:
    • bool::unya_sa uban
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::mga linya
    • windows::CommandExt::raw_arg
    • impl default nga bili alang sa AssertUnwindSafe
    • gikan sa > para sa Rc
    • gikan sa > para sa Arc<[u8]>
    • FusedIterator para sa EncodeWide

    Source: opennet.ru

Idugang sa usa ka comment