Rust 1.35 Programming Language Release

naganap release ng system programming language Kalawang 1.35, na binuo ng proyekto ng Mozilla. Nakatuon ang wika sa kaligtasan ng memorya, nagbibigay ng awtomatikong pamamahala ng memorya, at nagbibigay ng paraan upang makamit ang mataas na paralelismo sa gawain nang hindi gumagamit ng basurero o runtime.

Ang awtomatikong pamamahala ng memorya ng Rust ay nagpapalaya sa developer mula sa pagmamanipula ng pointer at pinoprotektahan laban sa mga problemang nagmumula sa mababang antas ng pagmamanipula ng memorya, tulad ng mga after-free na pag-access sa memorya, null pointer dereferences, buffer overruns, at iba pa. Ang isang manager ng package ay binuo upang ipamahagi ang mga aklatan, tiyakin ang pagpupulong at pamahalaan ang mga dependency ng proyekto. Karga, na nagbibigay-daan sa iyong makuha ang mga aklatan na kailangan para sa programa sa isang pag-click. Sinusuportahan ang isang repository upang mag-host ng mga aklatan crates.io.

Ang pangunahing mga inobasyon:

  • Mga katangian FnOnce, FnMut ΠΈ Fn ipinatupad para sa heap-allocated mga uri ng kahon Boxβ€Ήdyn FnOnceβ€Ί, Boxβ€Ήdyn FnMutβ€Ί at Boxβ€Ήdyn Fnβ€Ί;
  • Idinagdag pagkakataon paghahagis ng mga pagsasara sa mga hindi ligtas na function pointer (hindi ligtas na fn);
  • Ipinatupad ang kakayahang tawagan ang macro na "dbg!" walang mga argumento para sa pagpapakita ng pangalan ng file at numero ng linya sa stderr nang hindi sinusuri ang variable, na maginhawa para sa pag-debug sa pagpapatakbo ng mga kondisyong expression;
  • Nagdagdag ng paraan " sa mga uri ng floating point f32 at f64copysignΒ» upang kopyahin ang isang character mula sa isang numero patungo sa isa pa;
  • Nagdagdag ng paraan " sa mga uri ng Range*naglalaman ngβ€œ, na nagbibigay-daan sa iyong suriin kung ang tinukoy na halaga ay nasa loob ng saklaw;
  • Idinagdag na paraan Ref:Cell:map_split, na nagpapahintulot sa iyo na ipakita at paghiwalayin ang hiniram na halaga ng RefCell para sa iba't ibang bahagi ng hiniram na data;
  • Idinagdag na paraan RefCell::replace_with upang palitan ang kasalukuyang halaga ng RefCell at ibalik ang lumang halaga bilang resulta;
  • Idinagdag na paraan ptr::hash upang i-hash ang isang pointer o reference sa pamamagitan ng isang address sa halip na ang address na halaga;
  • Idinagdag na paraan Pagpipilian:: kinopya upang kopyahin ang mga nilalaman ng Optionβ€Ή&Tβ€Ί o Optionβ€Ή&mut Tβ€Ί mga opsyon;
  • Ang isang bagong bahagi ng mga API ay inilipat sa stable na kategorya, kabilang ang mga pamamaraan na na-stabilize
    f32::copysign,
    f64::copysign,
    RefCell::replace_with,
    RefCell::map_split,
    ptr::hash,
    Saklaw::naglalaman,
    RangeFrom::contains,
    RangeTo::contains,
    RangeInclusive::contains,
    RangeToInclusive::contains and
    Pagpipilian::kopya;

  • Nagdagdag ng drop_bounds check sa clippy (linter), na nati-trigger kapag nagdaragdag ng "T: Drop" na nagbubuklod sa function;
  • Ang compiler ay nagdagdag ng suporta para sa isang bagong target na platform
    wasm32-unknown-wasi (interface WASI gamitin ang WebAssembly sa labas ng browser);

  • Ang Rust toolkit ay iniangkop para sa mga pamamahagi batay sa karaniwang C library na Musl.

Pinagmulan: opennet.ru

Magdagdag ng komento