Rust 1.61 Programming Language Version

Yo te pibliye piblikasyon langaj pwogramasyon jeneral Rust 1.61, ki te fonde pa pwojè Mozilla, men kounye a devlope sou ejid òganizasyon endepandan ki pa pou pwofi Rust Foundation. Lang la konsantre sou sekirite memwa epi li bay mwayen pou reyalize gwo paralèl nan ekzekisyon travay, pandan y ap evite itilizasyon yon pèseptè fatra ak tan exécute (se redui tan an nan inisyalizasyon debaz ak antretyen nan bibliyotèk la estanda).

Teknik jesyon memwa Rust yo libere pwomotè a soti nan erè manipilasyon konsèy epi pwoteje kont pwoblèm ki rive nan manipilasyon memwa ki ba-nivo, tankou aksè apre-gratis, dereferans pointer nil, depase tanpon, ak lòt bagay. Pou distribye bibliyotèk, asire asanble ak jere depandans, pwojè a ap devlope manadjè pake kago. Repozitwa crates.io sipòte pou hosting bibliyotèk.

Sekirite memwa aplike nan Rust nan moman konpile atravè chèk referans, swiv pwopriyetè objè, konsiderasyon pou tout lavi objè (delimitasyon) ak evalyasyon aksè memwa nan tan exécution. Rust tou bay pwoteksyon kont debòde nonb antye relatif, mande pou valè varyab yo dwe inisyalize anvan yo itilize, gen pi bon manyen erè nan bibliyotèk estanda a, sèvi ak konsèp nan referans imuiabl ak varyab pa default, epi li ofri fò sezisman estatik pou minimize erè lojik.

Prensipal inovasyon:

  • Li posib pou defini pwòp kòd retounen nan fonksyon prensipal la. Okòmansman, fonksyon prensipal Rust te kapab sèlman retounen kalite "()" (inite), ki toujou endike yon estati sòti siksè sof si pwomotè a klèman te rele "pwosesis:: sòti (kòd)" fonksyon an. Nan Rust 1.26, lè l sèvi avèk karakteristik Terminasyon enstab nan fonksyon prensipal la, li te posib retounen valè yo "Ok" ak "Err", ki koresponn ak EXIT_SUCCESS ak EXIT_FAILURE kòd yo nan pwogram C yo. Nan Rust 1.61, karakteristik Termination yo te vin estab, epi yo te pwopoze yon kalite ExitCode separe pou reprezante yon kòd retounen espesifik, ki abstrè kalite retounen espesifik platfòm la lè li bay tou de konstan predefini SIKSÈ ak Echèk, ak metòd From. pou retounen yon kòd retounen abitrè. itilize std::process::ExitCode; fn main() -> ExitCode { if !check_foo () { retounen ExitCode::from (8); } ExitCode::SUCCESS }
  • Kapasite adisyonèl nan fonksyon defini lè l sèvi avèk ekspresyon "const fn" yo te estabilize, ki ka rele non sèlman kòm fonksyon regilye, men tou itilize nan nenpòt ki kontèks olye pou yo konstan. Fonksyon sa yo kalkile nan tan konpile, pa nan tan an ekzekite, kidonk yo sijè a sèten restriksyon, tankou kapasite nan li sèlman nan konstan. Nan nouvo vèsyon an, operasyon debaz ak endikasyon fonksyon yo gen dwa andedan fonksyon konst (kreye, pase ak depoze pwentè yo gen dwa, men yo pa rele yon fonksyon pa pointeur); limit karakteristik pou paramèt jenerik fonksyon konst tankou T: Kopi; karakteristik dinamik dispatchable (dyn Trait); impl Kalite karakteristik pou agiman fonksyon ak valè retounen.
  • Kouran an okipe Stdin, Stdout ak Stderr nan std::io kounye a gen yon lavi estatik ("estatik") lè fèmen, sa ki pèmèt konstwi tankou "let soti = std::io::stdout().lock ();" ak jwenn yon manch ak mete yon seri nan yon ekspresyon.
  • Yon nouvo pòsyon nan API a te transfere nan kategori ki estab, ki gen ladan metòd yo ak aplikasyon karakteristik yo:
    • PIN::static_mut
    • PIN::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Ekri pou Kurseur
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::process::Terminasyon
    • std::thread::JoinHandle::is_fini
  • Atribi "const", ki detèmine posiblite pou itilize li nan nenpòt kontèks olye pou yo konstan, yo itilize nan fonksyon yo:
    • ::offset ak ::offset
    • ::wrapping_offset ak ::wrapping_offset
    • ::add ak ::add
    • ::sub ak ::sub
    • ::wrapping_add ak ::wrapping_add
    • ::wrapping_sub ak ::wrapping_sub
    • ::as_mut_ptr
    • ::as_ptr_range
    • ::as_mut_ptr_range

Anplis de sa, ou ka sonje atik la "Rust: A Critical Retrospective" ak yon rezime enpresyon nan lang nan Rust apre li te ekri 100 mil liy nan kòd nan li pandan devlopman nan sistèm nan operasyon mikrokernel Xous yo itilize nan firmwèr. Dezavantaj yo gen ladan sentaks difisil pou konprann, enkonplè ak devlopman kontinye nan lang nan, mank de bati repete, pwoblèm tipik ak konfyans depandans nan Crates.io, ak bezwen nan kenbe yon sèten disiplin pou ekri kòd an sekirite. Karakteristik ki depase atant yo enkli zouti pou refactoring kòd ak retravay "antay" te ajoute pandan pwototip rapid.

Sous: opennet.ru

Add nouvo kòmantè