Rust 1.61 Programming Language Release

De algemiene programmeertaal Rust 1.61, oprjochte troch it Mozilla-projekt mar no ûntwikkele ûnder auspysjes fan de ûnôfhinklike non-profit organisaasje Rust Foundation, is frijjûn. De taal rjochtet him op ûnthâld feilichheid en jout de middels te berikken hege baan parallelism wylst it foarkommen fan it brûken fan in garbage collector en runtime (runtime wurdt redusearre ta basis inisjalisaasje en ûnderhâld fan de standert bibleteek).

De metoaden foar ûnthâldbehanneling fan Rust besparje de ûntwikkelder fan flaters by it manipulearjen fan oanwizers en beskermje tsjin problemen dy't ûntsteane troch ûnthâldôfhanneling op leech nivo, lykas tagong krije ta in ûnthâldgebiet nei't it befrijd is, it ferwizen fan nul-oanwizers, buffer-oerrin, ensfh. Om bibleteken te fersprieden, builds te leverjen en ôfhinklikens te behearjen, ûntwikkelet it projekt de Cargo-pakketbehearder. It crates.io repository wurdt stipe foar hosting fan bibleteken.

Unthâld feilichheid wurdt foarsjoen yn Rust op it gearstallen tiid troch referinsje kontrôle, byhâlden fan foarwerp eigendom, byhâlden fan foarwerp lifetimes (omfang), en beoardielje de korrektheid fan ûnthâld tagong by koade útfiering. Rust leveret ek beskerming tsjin oerstreamingen fan heule getal, fereasket ferplichte inisjalisaasje fan fariabele wearden foar gebrûk, behannelet flaters better yn 'e standertbibleteek, tapast standert it konsept fan ûnferoarlike referinsjes en fariabelen, biedt sterke statyske typen om logyske flaters te minimalisearjen.

Wichtichste ynnovaasjes:

  • It is mooglik om te definiearjen jo eigen werom koades út de wichtichste funksje. Oarspronklik koe de haadfunksje fan Rust allinich type "()" (ienheid) weromjaan, dy't altyd in suksesfolle útgongsstatus oanjûn, útsein as de ûntwikkelder eksplisyt de funksje "proses :: útgong (koade)" neamde. Yn Rust 1.26, mei help fan de ynstabile Termination-eigenskip yn 'e haadfunksje, wie it mooglik om de wearden "Ok" en "Err" werom te jaan, oerienkommende mei de EXIT_SUCCESS en EXIT_FAILURE-koades yn C-programma's. Yn Rust 1.61 is de Termination-eigenskip stabyl makke, en in apart ExitCode-type is foarsteld om in spesifike returnkoade te fertsjintwurdigjen, dy't platfoarm-spesifike returntypen abstrahert troch sawol foarôf definieare konstanten SUCCESS en FAILURE te leverjen, en de From-metoade om in oanpaste returnkoade werom te jaan. brûk std :: proses :: ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(8); } ExitCode::SUCCESS }
  • Oanfoljende mooglikheden fan funksjes definieare mei de útdrukking "const fn" binne stabilisearre, dy't net allinich as reguliere funksjes neamd wurde kinne, mar ek brûkt wurde yn elke kontekst ynstee fan konstanten. Dizze funksjes wurde berekkene op kompilaasjetiid, net by runtime, sadat se ûnderwurpen binne oan bepaalde beheiningen, lykas de mooglikheid om allinich fan konstanten te lêzen. Yn de nije ferzje binne basis operaasjes mei funksje pointers tastien binnen const funksjes (meitsje, trochjaan en casting pointers is tastien, mar net neame in funksje troch pointer); eigenskip grinzen foar generike parameters fan const funksjes lykas T: Kopiearje; dynamysk dispatchable eigenskippen (dyn Trait); impl Eigenskipstypen foar funksje-arguminten en weromwearden.
  • De stream behannelet Stdin, Stdout en Stderr yn std::io hat no in statyske libbensdoer ("statysk") as it is beskoattele, wêrtroch konstruksjes lykas "let out = std::io::stdout().lock();" mei it krijen fan in handgreep en it ynstellen fan in slot yn ien útdrukking.
  • In nij diel fan 'e API is ferpleatst nei de kategory stabile, ynklusyf de metoaden en ymplemintaasjes fan eigenskippen binne stabilisearre:
    • Pin :: static_mut
    • Pin :: static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Skriuw foar Cursor<[u8; N]>
    • std::os::unix::net::SocketAddr::from_pathname
    • std :: proses :: ExitCode
    • std :: proses :: Beëiniging
    • std::thread::JoinHandle::is_finished
  • It attribút "const", dat de mooglikheid bepaalt om it yn elke kontekst te brûken ynstee fan konstanten, wurdt brûkt yn 'e funksjes:
    • <*const T>::offset en <*mut T>::offset
    • <*const T>::wrapping_offset en <*mut T>::wrapping_offset
    • <*const T>::add en <*mut T>::add
    • <*const T>::sub en <*mut T>::sub
    • <*const T>::wrapping_add en <*mut T>::wrapping_add
    • <*const T>::wrapping_sub en <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

Derneist kinne jo it artikel "Rust: A Critical Retrospective" notearje mei in gearfetting fan ympresjes fan 'e Rust-taal nei it skriuwen fan 100 tûzen rigels koade yn' e ûntwikkeling fan it Xous-mikrokernel-bestjoeringssysteem brûkt yn firmware. Neidielen omfetsje lestich te begripen syntaksis, ûnfolsleinens en trochgeande ûntwikkeling fan 'e taal, gebrek oan werhellbere builds, typyske problemen mei ôfhinklikensfertrouwen yn Crates.io, en de needsaak om in bepaalde dissipline te behâlden om feilige koade te skriuwen. Funksjes dy't de ferwachtingen oertreffe omfetsje ark foar it refactorearjen fan koade en it werwurkjen fan "hacks" tafoege by rappe prototyping.

Boarne: opennet.ru

Add a comment