ipata 1.73 Siseto ede Tu

Itusilẹ ti ede siseto gbogboogbo-idi Rust 1.73, 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ọ:

  • Ọna kika ti awọn ifiranṣẹ ti a gbejade nipasẹ oluṣakoso jamba eto aiyipada (ijaaya) ti jẹ atunṣe. Awọn ọrọ pato ninu awọn "ijaaya!" ti han ni bayi lori laini lọtọ laisi awọn ami asọye, ṣiṣe ifiranṣẹ rọrun lati ka ati imukuro iporuru nigbati awọn agbasọ itẹ-ẹiyẹ wa tabi pin kọja awọn laini pupọ. fn akọkọ () {jẹ ki faili = "ferris.txt"; ijaaya! ("oh rara! {faili:?} ko ri!"); } Okùn 'akọkọ' wa ni ijaaya ni 'oh rara! "ferris.txt" ko ri!', src/main.rs:3:5 Opo 'akọkọ' ijaaya ni src/main.rs:3:5: oh rara! "ferris.txt" ko ri!

    Ijade ti awọn ifiranṣẹ ti o han nigbati awọn macros “assert_eq” ati “assert_ne” tun ti tun ṣiṣẹ. fn main() {assert_eq!("🦀", "🐟", "ferris kii ṣe ẹja"); } Okun 'akọkọ' wa ni ijaaya ni 'assertion fail: `(osi == ọtun)` osi: `"🦀"`, otun: `"🐟"`: ferris kii se eja', src/main.rs: 2 :5 Okùn 'akọkọ' ni ijaaya ni src/main.rs:2:5: iṣeduro `osi == otun` kuna: ferris kii ṣe ẹja osi: “🦀” otun: “🐟”

  • Ni ibamu pẹlu RFC 3184, agbara lati ṣe afọwọyi taara okun-agbegbe (thread_local) Awọn bọtini ibi ipamọ agbegbe ti ti ṣafikun > ati Key Key > nipasẹ awọn lilo ti gba (), ṣeto (), ya () ki o si ropo () awọn ọna, dipo ti lilo a "pẹlu (| inu| ...)" bíbo, eyi ti o ti jade ni nilo lati ṣe afikun awọn ibẹrẹ koodu fun awọn awọn iye aiyipada ni pato fun awọn okun tuntun nigba lilo Makiro “thread_local!” o tẹle_agbegbe! { aimi OHUN: Cell > = Cell :: titun (Vec :: titun ()); } fn f () {// wà THINGS.pẹlu (| i| i.set (vec![32, 1, 2])); // di THINGS.set (vec! [3, 1, 2]); // ... // je ki v = THINGS.pẹlu (| i | i.mu ()); // di jẹ ki v: Vec = OHUN.mu (); }
  • 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:
    • Ti ko fowo si {odidi} :: div_ceil
    • Ti ko fowo si {odidi} :: atẹle_multiple_ti
    • Ti ko fowo si {integer} :: check_next_multiple_of
    • std :: ffi :: LatiBytesUntilNulError
    • std :: os :: unix :: fs :: chown
    • std :: OS :: unix :: fs :: fchown
    • std :: OS :: unix :: fs :: lfchown
    • Key Local:: :: gba
    • Key Local:: >:: ṣeto
    • Key Local:: >:: gba
    • Key Local:: >:: rọpo
    • Key Local:: :: pẹlu_yiya
    • Key Local:: :: pẹlu_borrow_mut
    • Key Local:: >:: ṣeto
    • Key Local:: >:: gba
    • Key Local:: >:: rọpo
  • Ẹya “const”, eyiti o pinnu iṣeeṣe ti lilo ni eyikeyi ipo dipo awọn iduro, ni a lo ninu awọn iṣẹ:
    • rc :: ailagbara :: titun
    • amuṣiṣẹpọ :: ailagbara :: titun
    • NonNull :: bi_ref
  • Olupilẹṣẹ n pese igbasilẹ ti alaye ẹya ni apakan “.comment”, iru si GCC ati Clang.
  • Ipele kẹta ti atilẹyin ti ni imuse fun awọn iru ẹrọ aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl ati x86_64-unknown-linux -awo. Ipele kẹta jẹ atilẹyin ipilẹ, ṣugbọn laisi idanwo adaṣe, titẹjade awọn ile-iṣẹ osise, tabi ṣayẹwo boya koodu naa le kọ.
  • Ipele keji ti atilẹyin fun pẹpẹ ibi-afẹde wasm32-wasi-preview1-threads ti ni imuse. Ipele keji ti atilẹyin jẹ iṣeduro apejọ kan.

orisun: opennet.ru

Fi ọrọìwòye kun