Rust 1.62 Programlingvo-Eldono

La eldono de la ĝeneraluzebla programlingvo Rust 1.62, fondita de la projekto Mozilla, sed nun disvolvita sub la aŭspicioj de la sendependa neprofitcela organizaĵo Rust Foundation, estis publikigita. La lingvo temigas memorsekurecon kaj disponigas la rimedojn por atingi altan laborparalelecon evitante la uzon de rubkolektilo kaj rultempo (rultempo estas reduktita al baza inicialigo kaj prizorgado de la norma biblioteko).

La memormanipulaj metodoj de Rust savas la ellaboranton de eraroj dum manipulado de montriloj kaj protektas kontraŭ problemoj kiuj ekestas pro malaltnivela memortraktado, kiel ekzemple alirado de memorareo post kiam ĝi estis liberigita, dereferencing nulmontriloj, bufrotranspaso, ktp. Por distribui bibliotekojn, provizi konstruaĵojn kaj administri dependecojn, la projekto disvolvas la Cargo-pakaĵmanaĝeron. La deponejo crates.io estas subtenata por gastigado de bibliotekoj.

Memorsekureco estas disponigita en Rust ĉe kompiltempo tra referenckontrolado, konservante trakon de objektoposedo, konservante trakon de objektovivdaŭroj (kampoj), kaj taksante la ĝustecon de memoraliro dum kodekzekuto. Rusto ankaŭ provizas protekton kontraŭ entjeraj superfluoj, postulas devigan inicialigon de variaj valoroj antaŭ uzo, pli bone pritraktas erarojn en la norma biblioteko, aplikas la koncepton de neŝanĝeblaj referencoj kaj variabloj defaŭlte, ofertas fortan senmovan tajpadon por minimumigi logikajn erarojn.

Ĉefaj novigoj:

  • La pakaĵmanaĝero "ŝarĝo" ofertas la komandon "aldoni", kiu ebligas al vi aldoni novajn dependecojn al la manifesto Cargo.toml aŭ ŝanĝi ekzistantajn dependecojn de la komandlinio. La komando ankaŭ ebligas al vi specifi individuajn funkciojn kaj versiojn, ekzemple: cargo add serde —funkcioj derive cargo add nom@5
  • Aldonis la eblon uzi "#[derivi(Defaŭlta)]" kun enumoj en kiuj la defaŭlta opcio estas difinita per la "#[defaŭlta]" atributo. #[derivi(Defaŭlte)] enum Eble { #[defaŭlte] Nenio, Io(T), }
  • Sur la Linukso-platformo, pli kompakta kaj pli rapida efektivigo de la Mutex-sinkroniga mekanismo estas uzata, surbaze de la uzo de futeks provizitaj de la Linukso-kerno. Male al la antaŭe uzata efektivigo bazita sur la pthreads-biblioteko, la nova versio uzas nur 5 bajtojn anstataŭ 40 por stoki la staton Mutex.Simile, la ŝlosmekanismoj Condvar kaj RwLock estis translokigitaj al futex.
  • Dua nivelo de subteno por la celplatformo x86_64-unknown-none estis efektivigita, dizajnita por generi ruleblajn dosierojn, kiuj povas funkcii sen operaciumo. Ekzemple, la specifita celplatformo povas esti uzata dum skribado de kernaj komponantoj. La dua nivelo de subteno implikas kunvenan garantion.
  • La tria nivelo de subteno estis efektivigita por la platformoj aarch64-pc-windows-gnullvm kaj x86_64-pc-windows-gnullvm. La tria nivelo implikas bazan subtenon, sed sen aŭtomatigita testado, publikigado de oficialaj konstruaĵoj aŭ kontrolado ĉu la kodo povas esti konstruita.
  • Nova parto de la API estis movita al la kategorio de stalo, inkluzive de la metodoj kaj efektivigoj de trajtoj estis stabiligitaj:
    • bool::tiam_kelkaj
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::linioj
    • windows::CommandExt::raw_arg
    • impl defaŭlta valoro por AssertUnwindSafe
    • De > por Rc
    • De > por Arko<[u8]>
    • FusedIterator por EncodeWide

    fonto: opennet.ru

Aldoni komenton