Ħruġ tal-lingwa ta' programmar Rust 2021 (1.56)

Ġie ppubblikat ir-rilaxx tal-lingwa ta 'programmar tas-sistema Rust 1.56, imwaqqfa mill-proġett Mozilla, iżda issa żviluppat taħt l-awspiċi tal-organizzazzjoni indipendenti mingħajr skop ta' qligħ Rust Foundation. Minbarra n-numru tal-verżjoni regolari, ir-rilaxx huwa wkoll nominat Rust 2021 u jimmarka stabilizzazzjoni tal-bidliet proposti matul l-aħħar tliet snin. Rust 2021 se jservi wkoll bħala l-bażi biex tiżdied il-funzjonalità matul it-tliet snin li ġejjin, simili għal kif ir-rilaxx ta ' Rust 2018 sar il-bażi għall-iżvilupp tal-lingwa fl-aħħar tliet snin.

Biex tinżamm il-kompatibilità, l-iżviluppaturi jistgħu jużaw tikketti "2015", "2018" u "2021" fil-programmi tagħhom, li jippermettu li l-programmi jkunu marbuta ma 'slices tal-istat tal-lingwa li jikkorrispondu mal-edizzjonijiet magħżula ta' Rust. L-edizzjonijiet ġew introdotti biex jisseparaw bidliet inkompatibbli u huma kkonfigurati fil-metadejta tal-pakketti tal-merkanzija permezz tal-qasam "edizzjoni" fit-taqsima "[pakkett]". Pereżempju, l-edizzjoni "2018" tinkludi l-funzjonalità stabbilizzata sa mill-aħħar tal-2018 u tkopri wkoll il-bidliet ulterjuri kollha li ma jkissrux il-kompatibilità. L-edizzjoni tal-2021 tinkludi wkoll karatteristiċi li jkissru l-interoperabbiltà proposti fir-rilaxx attwali 1.56 u approvati għal implimentazzjoni futura. Minbarra l-lingwa nnifisha, l-edituri jqisu wkoll l-istat tal-għodod u d-dokumentazzjoni.

Inkompatibilitajiet kbar irreġistrati f'Rut 2021:

  • Qbid Separat fl-Għeluq - L-għeluq issa jistgħu jaqbdu ismijiet ta' oqsma individwali minflok l-identifikatur kollu. Per eżempju, "|| ax + 1" se jaqbad biss "ax" minflok "a".
  • Il-karatteristika IntoIterator għall-arrays: array.into_iter() jippermettilek li tirrepeti fuq elementi tal-array b'valuri, aktar milli b'referenzi.
  • L-ipproċessar tal-espressjonijiet “|” inbidel fil-makro_rules (Boolean OR) f'mudelli - L-ispeċifikazzjoni ":pat" fil-logħbiet issa jirrispetta "A | B”.
  • Il-maniġer tal-pakkett tal-merkanzija jinkludi awtomatikament it-tieni verżjoni tas-solvent tal-karatteristiċi, li l-appoġġ għalih deher f'Rut 1.51.
  • Il-karatteristiċi TryFrom, TryInto u FromIterator ġew miżjuda mal-modulu tal-librerija standard tal-preludju.
  • Il-macros paniku!(..) u assert!(expr, ..) issa dejjem jużaw format_args!(..) biex jifformattjaw strings, simili għal println!().
  • L-espressjonijiet ident#, ident»..." u ident'...' huma riżervati fis-sintassi tal-lingwa.
  • Tċaqlaq twissijiet ta' bare_trait_objects u ellipsis_inclusive_range_patterns għal żbalji.

Ġdid fis-sadid 1.56:

  • F'Cargo.toml, fit-taqsima "[pakkett]", ġie miżjud il-qasam tal-verżjoni tas-sadid, li permezz tiegħu tista 'tiddetermina l-verżjoni minima appoġġjata ta' Rust għall-pakkett taċ-ċestun. Jekk il-verżjoni attwali ma taqbilx mal-parametru speċifikat, Cargo tieqaf taħdem b'messaġġ ta 'żball.
  • Meta tqabbil tal-mudell bl-użu ta' espressjonijiet "binding @ pattern", huwa pprovdut appoġġ għall-ispeċifikazzjoni ta' rbit addizzjonali (per eżempju, "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • Porzjon ġdid tal-API ġie mċaqlaq għall-kategorija ta 'stabbli, inklużi l-metodi u l-implimentazzjonijiet tal-karatteristiċi ġew stabbilizzati:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • String::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • L-attribut "const", li jiddetermina l-possibbiltà li jintuża fi kwalunkwe kuntest minflok kostanti, jintuża fil-funzjonijiet
    • std::mem::transmute
    • [T]::l-ewwel
    • [T]::split_first
    • [T]::aħħar
    • [T]::split_last
  • Il-kompilatur inbidel biex juża LLVM verżjoni 13.
  • Ġie implimentat it-tieni livell ta' appoġġ għall-pjattaforma aarch64-apple-ios-sim u t-tielet livell għall-pjattaformi powerpc-unknown-freebsd u riscv32imc-esp-espidf. It-tielet livell jinvolvi appoġġ bażiku, iżda mingħajr ittestjar awtomatizzat, pubblikazzjoni ta 'bini uffiċjali, u verifika tal-bini tal-kodiċi.

Ifakkar li Rust huwa ffokat fuq is-sikurezza tal-memorja, jipprovdi ġestjoni awtomatika tal-memorja, u jipprovdi mezz biex jinkiseb paralleliżmu għoli fl-eżekuzzjoni tax-xogħol mingħajr ma juża kollettur taż-żibel jew runtime (runtime huwa mnaqqas għal inizjalizzazzjoni bażika u manutenzjoni tal-librerija standard).

Il-ġestjoni awtomatika tal-memorja ta 'Rut telimina l-iżbalji meta timmanipula pointers u tipproteġi kontra problemi li jirriżultaw minn manipulazzjoni tal-memorja ta' livell baxx, bħall-aċċess għal reġjun tal-memorja wara li jkun ġie meħlus, dereferences null pointer, buffer overruns, eċċ. Biex iqassam il-libreriji, jiżgura l-assemblaġġ u jimmaniġġja d-dipendenzi, il-proġett qed jiżviluppa l-maniġer tal-pakkett tat-Tagħbija. Ir-repożitorju crates.io huwa appoġġjat għall-hosting tal-libreriji.

Sors: opennet.ru

Żid kumment