Puo ea Rust programming 1.47 tokollo

e hatisitsoeng ho lokolla 1.47 ea puo ea lenaneo la tsamaiso mafome, e thehiloeng ke morero oa Mozilla. Puo e tsepamisitse maikutlo holim'a polokeho ea mohopolo, e fana ka taolo ea memori ea othomathike, mme e fana ka mokhoa oa ho fihlela ts'ebetso e phahameng ea ts'ebetso ntle le ho sebelisa mokgoboki wa matlakala и nako ea nako (nako ea ho sebetsa e fihla ho qala le ho hlokomela laeborari e tloaelehileng).

Taolo ea memori ea othomathike ea Rust e felisa liphoso ha e tsamaisa lintlha le ho sireletsa khahlanong le mathata a bakoang ke ho qhekella ha memori ea boemo bo tlase, joalo ka ho fihlella sebaka sa memori kamora hore e lokolloe, li-null pointer dereferences, buffer overruns, jj. Motsamaisi oa liphutheloana o ntse a ntlafatsoa ho aba lilaebrari, ho netefatsa ho bokelloa le ho laola litšepe ka morero. thepa. Sebaka sa polokelo se tšehetsoa ho amohela lilaebrari crates.io.

ka sehloohong boiqapelo:

  • Tšehetso e kentsoeng bakeng sa mefuta lihlopha boholo bofe kapa bofe. Nakong e fetileng, ka lebaka la ho se khone ho hlalosa mesebetsi e akaretsang bakeng sa litekanyetso tsohle tse felletseng, laeborari e tloaelehileng e fane ka tšehetso ea litšobotsi tse hahelletsoeng feela bakeng sa lihlopha tse fihlang ho likarolo tse 32 ka boholo (litšobotsi tsa boholo bo bong le bo bong bo ne bo hlalosoa ka lipalo). Ka lebaka la ts'ebetso ea ts'ebetso ea li-generics tsa kamehla ("const generics"), ho ile ha khoneha ho hlalosa mesebetsi e tloaelehileng bakeng sa boholo ba mofuta ofe kapa ofe, empa ha e e-s'o kenyelelitsoe likarolong tse tsitsitseng tsa puo, le hoja li kenngoa ts'ebetsong 'me li sebelisoa. jwale amehang laebraring e tloaelehileng bakeng sa litšobotsi tsa boholo bofe kapa bofe.

    Mohlala, moaho o latelang ho Rust 1.47 o tla hatisa litaba tsa sehlopha, leha pejana e ka be e bakile phoso:

    fn main() {
    tlohella xs = [0; 34];

    println!("{:?}", xs);
    }

  • E fane ka tlhahiso ea mesaletsa e khuts'oane (backtrace), tlhahiso maemong a tšohanyetso. Lintlha tse sa thahaselleng maemo a mangata, empa li kopanya lihlahisoa le ho senya tlhokomelo ho tloha lisosa tse ka sehloohong tsa bothata, li qheleloa ka thōko ho latela mohlala. Ho khutlisa mohlala o felletseng, o ka sebelisa phetoho ea tikoloho "RUST_BACKTRACE=e tletse". Ka mohlala, bakeng sa khoutu

    fn main() {
    tshabo!();
    }

    Pejana, trace e ne e hlahisoa ka mekhahlelo ea 23, empa joale e tla fokotsoa ho
    Mehato e 3 e u lumellang ho utloisisa moelelo oa hang-hang:

    thread 'main' e tšohile ka 'ho tšoha ho hlakileng', src/main.rs:2:5
    stack backtrace:
    0: std::ho tšoha:: qala_ho tšoha
    ho /rustc/d…d75a/library/std/src/panicking.rs:497
    1: lebala la lipapali::ka sehloohong
    ho ./src/main.rs:2
    2: core::ops::function::FnOnce::call_hang
    ho /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Rustc compiler e ntlafalitsoe hore e hahe e sebelisoa LLVM 11 (Mafome sebedisa LLVM e le mokokotlo bakeng sa tlhahiso ea khoutu). Ka nako e ts'oanang, bokhoni ba ho haha ​​​​ka li-LLVM tsa khale, ho fihlela ho mofuta oa 8, bo bolokiloe, empa ka ho sa feleng (ho rust-lang/llvm-project) e se e sebelisa LLVM 11. LLVM 11 e lebelletsoe ho lokolloa matsatsing a tlang.
  • Sethaleng sa Windows, moqapi oa rustc o fana ka ts'ehetso bakeng sa ho nolofalletsa ho hlahloba botšepehi ba ho phalla (Control Flow Guard), e entsoeng ka ho sebelisa "-C control-flow-guard" folakha. Libakeng tse ling folakha ena ha e tsotelloe hajoale.
  • Karolo e ncha ea API e fetiselitsoe sehlopheng se tsitsitseng, ho kenyelletsa le ho tsitsisoa
    Ident::e ncha_e tala,
    Range::ha e_e na letho,
    RangeInclusive::ha e_e na letho,
    Sephetho::as_deref,
    Sephetho::as_deref_mut,
    Vec::tla,
    pointer::offset_from,
    f32::TAU le
    f64::TAU.

  • Sebopeho sa "const", se khethollang monyetla oa ho se sebelisa maemong afe kapa afe ho fapana le li-constants, se sebelisoa mekhoeng:
    • e ncha bakeng sa linomoro tsohle ntle le zero;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shr, saturating_add, saturating_sub and saturating_mul bakeng sa lipalo kaofela;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace and for_ascii_ucontrol.
  • Bakeng sa FreeBSD amehang toolkit ho tsoa ho FreeBSD 11.4 (FreeBSD 10 ha e tšehetse LLVM 11).

Source: opennet.ru

Eketsa ka tlhaloso