Rust 1.61 Programming Language Release

Ang pagpagawas sa Rust 1.61 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:

  • Posible nga ipasabut ang imong kaugalingon nga mga code sa pagbalik gikan sa panguna nga function. Sa sinugdan, ang panguna nga gimbuhaton ni Rust mahimo ra nga ibalik ang tipo nga "()" (unit), nga kanunay nga nagpaila sa usa ka malampuson nga kahimtang sa paggawas gawas kung ang developer klaro nga nagtawag sa function nga "proseso:: paggawas (code)". Sa Rust 1.26, gamit ang dili lig-on nga Termination trait sa main function, posible nga ibalik ang mga kantidad nga "Ok" ug "Err", nga katumbas sa EXIT_SUCCESS ug EXIT_FAILURE code sa mga programa sa C. Sa Rust 1.61, ang Termination trait gihimong stable, ug usa ka separado nga ExitCode type ang gisugyot nga magrepresentar sa usa ka piho nga return code, nga abstracts platform-specific return type pinaagi sa paghatag sa duha ka predefined constants SUCCESS ug FAILURE, ug ang From method. aron makabalik ug custom return code. gamita ang std::process::ExitCode; fn main() -> ExitCode {kon !check_foo() {balik ExitCode::gikan(8); } ExitCode:: KALAMPUSAN }
  • Ang dugang nga mga kapabilidad sa mga gimbuhaton nga gihubit gamit ang ekspresyon nga "const fn" gipalig-on, nga mahimong tawgon dili lamang ingon mga regular nga gimbuhaton, apan gigamit usab sa bisan unsang konteksto imbis nga mga kanunay. Kini nga mga gimbuhaton gikalkulo sa oras sa pag-compile, dili sa oras sa pagdagan, mao nga kini gipailalom sa pipila nga mga pagdili, sama sa abilidad sa pagbasa lamang gikan sa mga kanunay. Sa bag-ong bersyon, ang mga batakang operasyon nga adunay mga pointer sa function gitugotan sa sulod sa mga function sa const (gitugotan ang paghimo, pagpasa ug pag-cast sa mga pointer, apan dili pagtawag sa usa ka function pinaagi sa pointer); trait bounds para sa generic nga mga parameter sa const functions sama sa T: Copy; dinamikong ipadala nga mga kinaiya (dyn Trait); impl Trait type para sa function arguments ug return values.
  • Ang sapa nagdumala sa Stdin, Stdout ug Stderr sa std::io karon adunay usa ka static nga tibuok kinabuhi ("'static") kung gi-lock, nga nagtugot sa mga konstruksyon sama sa "let out = std::io::stdout().lock();" uban sa pagkuha sa usa ka kuptanan ug pagbutang sa usa ka lock sa usa ka ekspresyon.
  • 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:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Isulat para sa Cursor<[u8; N]>
    • std::os::unix::net::SocketAddr::gikan sa_pathname
    • std::proseso::ExitCode
    • std::proseso::Pagtapos
    • std::thread::JoinHandle::is_finished
  • Ang "const" nga hiyas, nga nagtino sa posibilidad sa paggamit niini sa bisan unsa nga konteksto imbes nga mga constant, gigamit sa mga gimbuhaton:
    • <*const T>::offset ug <*mut T>::offset
    • <*const T>::wrapping_offset ug <*mut T>::wrapping_offset
    • <*const T>::add ug <*mut T>::add
    • <*const T>::sub ug <*mut T>::sub
    • <*const T>::wrapping_add ug <*mut T>::wrapping_add
    • <*const T>::wrapping_sub ug <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

Dugang pa, mahimo nimong matikdan ang artikulo nga "Rust: Usa ka Kritikal nga Retrospective" nga adunay usa ka summary sa mga impresyon sa Rust nga pinulongan human sa pagsulat sa 100 ka libo nga linya sa code niini sa panahon sa pagpalambo sa Xous microkernel operating system nga gigamit sa firmware. Ang mga disbentaha naglakip sa lisud sabton nga syntax, dili kompleto ug padayon nga pag-uswag sa pinulongan, kakulang sa masubli nga mga pagtukod, kasagaran nga mga problema sa pagsalig sa pagsalig sa Crates.io, ug ang panginahanglan sa pagpadayon sa usa ka piho nga disiplina sa pagsulat sa luwas nga code. Ang mga bahin nga milapas sa mga gilauman naglakip sa mga himan alang sa refactoring code ug pag-rework sa "mga hack" nga gidugang atol sa paspas nga prototyping.

Source: opennet.ru

Idugang sa usa ka comment