Rust 1.58 Programming Language Version

Yo te pibliye liberasyon langaj pwogramasyon jeneral Rust 1.58, ki te fonde pa pwojè Mozilla, men kounye a devlope sou ejid òganizasyon endepandan Rust Foundation la. Lang la konsantre sou sekirite memwa, bay jesyon memwa otomatik, epi li bay mwayen pou reyalize paralèl travay segondè san yo pa itilize yon pèseptè fatra oswa ègzekutabl (se exécution redwi a inisyalizasyon debaz ak antretyen nan bibliyotèk la estanda).

Jesyon otomatik memwa Rust a elimine erè lè w ap manipile endikasyon ak pwoteje kont pwoblèm ki rive nan manipilasyon memwa ki ba, tankou aksè nan yon rejyon memwa apre li fin libere, dereferans pointeur nil, depase tanpon, elatriye. 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.

Prensipal inovasyon:

  • Nan blòk fòma liy yo, anplis kapasite ki te disponib anvan pou ranplase varyab ki endike klèman apre yon liy pa nimewo ak non, se kapasite pou ranplase idantifyan abitrè lè yo ajoute ekspresyon "{idantifyan}" nan liy lan. Pa egzanp: // Konstriksyon yo te deja sipòte: println!("Bonjou, {}!", get_person()); println!("Bonjou, {0}!", get_person()); println!("Bonjou, {moun}!", moun = get_person()); // kounye a ou ka presize kite moun = get_person(); println!("Bonjou, {moun}!");

    Idantifyan yo kapab tou espesifye dirèkteman nan opsyon fòma yo. kite (lajè, presizyon) = get_format (); pou (non, nòt) nan get_scores() { println!("{non}: {score:width$.precision$}"); }

    Nouvo sibstitisyon an ap travay nan tout makro ki sipòte definisyon fòma fisèl, eksepte makro "panik!" nan vèsyon 2015 ak 2018 nan lang Rust, nan ki panik! ("{idant}") yo trete kòm yon kòd regilye (nan Rust 2021 sibstitisyon an ap travay).

  • Konpòtman std::process::Estrikti kòmand sou platfòm Windows la chanje pou lè w ap egzekite kòmandman, pou rezon sekirite, li pa gade ankò pou dosye ègzèkutabl nan anyè aktyèl la. Anyè aktyèl la eskli paske li ka itilize pou egzekite kòd move si pwogram yo kouri nan anyè ki pa fè konfyans (CVE-2021-3013). Nouvo lojik deteksyon ègzekutabl la enplike rechèch nan anyè Rust, anyè aplikasyon an, anyè sistèm Windows, ak anyè ki espesifye nan varyab anviwònman PATH la.
  • Bibliyotèk estanda a te elaji kantite fonksyon ki make "#[must_use]" pou bay yon avètisman si valè retounen an inyore, sa ki ede idantifye erè ki te koze pa sipoze yon fonksyon ap chanje valè olye ke retounen yon nouvo valè.
  • Yon nouvo pòsyon nan API a te transfere nan kategori ki estab, ki gen ladan metòd yo ak aplikasyon karakteristik yo:
    • Metadata::is_symlink
    • Path::is_symlink
    • {entier}::saturating_div
    • Option::unwrap_unchecked
    • Rezilta::unwrap_unchecked
    • Rezilta::unwrap_err_unchecked
  • Atribi "const", ki detèmine posiblite pou itilize li nan nenpòt kontèks olye pou yo konstan, yo itilize nan fonksyon yo:
    • Duration::nouvo
    • Duration::checked_add
    • Duration::saturating_add
    • Duration::checked_sub
    • Duration::saturating_sub
    • Duration::checked_mul
    • Duration::saturating_mul
    • Duration::checked_div
  • Pèmèt dereferans "*const T" endikasyon nan kontèks "const".
  • Nan manadjè pake kago, yo te ajoute jaden rust_version nan metadata pake a, epi opsyon "--message-format" te ajoute nan lòd "enstale kago".
  • Konpilatè a aplike sipò pou mekanis pwoteksyon CFI (Control Flow Entegrity), ki ajoute chèk anvan chak apèl endirèk pou detekte kèk fòm konpòtman endefini ki kapab mennen nan yon vyolasyon lòd egzekisyon nòmal la (koule kontwòl) kòm konsekans la. itilizasyon èksplwatasyon ki chanje endikasyon ki estoke nan memwa sou fonksyon.
  • Konpilatè a te ajoute sipò pou vèsyon 5 ak 6 fòma konparezon kouvèti asirans LLVM, ki itilize pou evalye kouvèti kòd pandan tès la.
  • Nan konpilatè a, kondisyon pou vèsyon minimòm LLVM yo ogmante nan LLVM 12.
  • Twazyèm nivo sipò pou platfòm x86_64-unknown-none te aplike. Twazyèm nivo a enplike sipò debaz, men san yo pa tès otomatik, pibliye bati ofisyèl, oswa tcheke si kòd la ka bati.

Anplis de sa, nou ka sonje piblikasyon Microsoft piblikasyon Rust pou Windows 0.30 bibliyotèk, ki pèmèt ou sèvi ak lang Rust pou devlope aplikasyon pou Windows OS. Seri a gen ladan de pakè kès (fenèt ak fenèt-sys), atravè ki ou ka jwenn aksè nan pwogram Win API nan Rust. Kòd pou sipò API pwodwi dinamikman apati metadata ki dekri API a, ki pèmèt ou aplike sipò pa sèlman pou apèl Win API ki deja egziste, men pou apèl ki pral parèt nan lavni. Nouvo vèsyon an ajoute sipò pou platfòm sib UWP (Universal Windows Platform) epi li aplike kalite Manch ak Debug.

Sous: opennet.ru

Add nouvo kòmantè