ipata 1.66 Siseto ede Tu

Itusilẹ ti ede siseto gbogboogbo-idi Rust 1.66, ti o da nipasẹ iṣẹ akanṣe Mozilla, ṣugbọn ni bayi ni idagbasoke labẹ awọn atilẹyin ti ominira ti kii ṣe èrè agbari Rust Foundation, ti ṣe atẹjade. Ede naa dojukọ aabo iranti ati pese awọn ọna lati ṣaṣeyọri isọdọkan iṣẹ giga lakoko ti o yago fun lilo ikojọpọ idoti ati akoko asiko (akoko asiko ti dinku si ipilẹṣẹ ipilẹ ati itọju ile-ikawe boṣewa).

Awọn ọna mimu iranti Rust ṣe igbala awọn olupilẹṣẹ lati awọn aṣiṣe nigbati o ba ni ifọwọyi awọn itọka ati daabobo lodi si awọn iṣoro ti o dide nitori mimu iranti ipele kekere, gẹgẹbi iraye si agbegbe iranti lẹhin ti o ti ni ominira, piparẹ awọn itọka asan, awọn ifasilẹ ifipamọ, ati bẹbẹ lọ. Lati kaakiri awọn ile-ikawe, pese awọn kikọ ati ṣakoso awọn igbẹkẹle, iṣẹ akanṣe n ṣe idagbasoke oluṣakoso package Ẹru. Ibi ipamọ crates.io jẹ atilẹyin fun awọn ile-ikawe alejo gbigba.

Ailewu iranti ti pese ni ipata ni akoko iṣakojọ nipasẹ ṣiṣe ayẹwo itọkasi, ṣiṣe itọju ohun-ini ohun, titọju awọn igbesi aye ohun (awọn iwọn), ati iṣiro deede wiwọle iranti lakoko ṣiṣe koodu. Ipata tun pese aabo lodi si ṣiṣan odidi odidi, nilo ipilẹṣẹ dandan ti awọn iye oniyipada ṣaaju lilo, mu awọn aṣiṣe dara julọ ni ile-ikawe boṣewa, lo imọran ti awọn itọkasi ailagbara ati awọn oniyipada nipasẹ aiyipada, nfunni titẹ aimi to lagbara lati dinku awọn aṣiṣe ọgbọn.

Awọn imotuntun akọkọ:

  • Ninu awọn ikawe pẹlu awọn aṣoju odidi (ẹya “#[repr (Int)]”, itọkasi iyasọtọ ti iyasọtọ (nọmba iyatọ ninu atokọ) ni a gba laaye, paapaa ti iṣiro naa ba ni awọn aaye ninu. #[repr(u8)] enum Foo {A(u8), # discriminant 0 B(i8), # discriminant 1 C (bool) = 42, # discriminant 42}
  • Fi kun mojuto iṣẹ :: ofiri :: black_box eyi ti o nìkan pada awọn ti gba iye. Niwọn igba ti olupilẹṣẹ ro pe iṣẹ yii n ṣe nkan kan, iṣẹ black_box le ṣee lo lati mu awọn iṣapeye iṣapeye ṣiṣẹ fun awọn losiwajulosehin nigbati o ba n ṣe idanwo iṣẹ ṣiṣe koodu tabi nigba idanwo koodu ẹrọ ti ipilẹṣẹ (ki olupilẹṣẹ ko ro koodu ti ko lo ati yọ kuro). Fun apẹẹrẹ, ninu apẹẹrẹ ni isalẹ, idilọwọ black_box (v.as_ptr ()) alakojo lati ro wipe fekito v wa ni lilo. lo std :: ofiri :: black_box; fn push_cap (v: &mut Vec) {fun i ninu 0..4 {v.push (i); black_box (v.as_ptr ()); }}
  • Oluṣakoso package “ẹru” nfunni ni pipaṣẹ “yiyọ”, eyiti o fun ọ laaye lati yọ awọn igbẹkẹle kuro ni ifihan Cargo.toml lati laini aṣẹ.
  • Apa tuntun ti API ni a ti gbe si ẹka ti iduroṣinṣin, pẹlu awọn ọna ati awọn imuse ti awọn abuda ti jẹ imuduro:
    • proc_macro :: Igba :: orisun_text
    • u*::{checked_add_signed, overflow_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflow_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{ayẹwo_sub_aisi fowo si, ti nkún_sub_aisi fowo si, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet :: {akọkọ, kẹhin, pop_first, pop_last}
    • BTreeMap :: {iye_akọkọ_kọkọ, iye_bọtini_kẹhin, titẹsi_akọkọ, titẹsi_kẹhin, pop_first, pop_last}
    • Ṣafikun awọn imuṣẹ AsFd fun awọn oriṣi titiipa stdio nigba lilo WASI.
    • impl GbiyanjuLati > fun Apoti<[T; N]>
    • mojuto :: ofiri :: black_box
    • Iye akoko::gbiyanju_from_secs_{f32,f64}
    • Aṣayan :: unzip
    • std :: OS:: fd
  • Awọn sakani "..X" ati "..=X" ni a gba laaye ninu awọn awoṣe.
  • Nigbati o ba kọ opin iwaju ti olupilẹṣẹ rustc ati ẹhin LLVM, LTO (Imudara Akoko Ọna asopọ) ati BOLT (Imudara Alakomeji ati Ọpa Ifilelẹ) awọn ipo iṣapeye ni a lo lati mu iṣẹ ti koodu abajade pọ si ati dinku agbara iranti.
  • Ti ṣe atilẹyin ipele kẹta fun armv5te-none-eabi ati awọn iru ẹrọ thumbv5te-none-eabi. Ipele kẹta tumọ si atilẹyin ipilẹ, ṣugbọn laisi idanwo adaṣe, titẹjade awọn ile-iṣẹ osise ati ṣayẹwo agbara lati kọ koodu naa.
  • Atilẹyin ti a ṣafikun fun sisopọ si Awọn ile-ikawe Generic macOS.

Ni afikun, a le ṣe akiyesi ifisi ni koodu koodu GCC ti alakojo iwaju-ipari ti ede Rust (gccrs). Iwaju iwaju wa ninu ẹka GCC 13, eyiti yoo jẹ idasilẹ ni May 2023. Bibẹrẹ pẹlu GCC 13, ohun elo irinṣẹ GCC boṣewa yoo ni anfani lati lo lati ṣajọ awọn eto Rust laisi iwulo lati fi sori ẹrọ akojọpọ rustc ti a ṣe ni lilo awọn idagbasoke LLVM. Imuse Rust ni GCC 13 yoo wa ni ipo beta, ko ṣiṣẹ nipasẹ aiyipada.

orisun: opennet.ru

Fi ọrọìwòye kun