Rust 1.46 Programming Language Release

Nai-publish ilabas ang 1.46 ng system programming language Kalawang, na itinatag ng proyekto ng Mozilla. Nakatuon ang wika sa kaligtasan ng memorya, nagbibigay ng awtomatikong pamamahala ng memorya, at nagbibigay ng mga tool para sa pagkamit ng mataas na paralelismo sa gawain nang hindi gumagamit ng basurero at runtime.

Ang awtomatikong pamamahala ng memorya ng Rust ay nag-aalis ng mga error kapag nagmamanipula ng mga pointer at nagpoprotekta laban sa mga problemang nagmumula sa mababang antas ng pagmamanipula ng memorya, tulad ng pag-access sa isang rehiyon ng memorya pagkatapos na ito ay mapalaya, mga null pointer dereference, buffer overrun, atbp. 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:

  • Ang mga kakayahan ng mga function na tinukoy gamit ang expression na "const fn" ay pinalawak, na maaaring tawaging hindi lamang bilang mga regular na function, ngunit ginagamit din sa anumang konteksto sa halip na mga constants. Ang mga function na ito ay kinakalkula sa oras ng pag-compile, hindi sa runtime, kaya napapailalim ang mga ito sa ilang mga paghihigpit, tulad ng kakayahang magbasa lamang mula sa mga constant.

    Ang bagong release ay nag-aalis ng pagbabawal sa paggamit ng mga Boolean operator (β€œ&&” at β€œ||”) sa mga naturang function, at pinapayagan ang paggamit ng β€œif”, β€œif let”, β€œmatch” constructs,
    "while", "while let" at "loop", at nagbibigay din ng kakayahang mag-convert sa slice (slice, dynamic arrays) gamit ang expression na "&[T]". Ang paggamit ng mga feature na ito sa mga function na "const fn" ay nagbibigay-daan sa iyo na ilipat ang ilang mga resource-intensive na operasyon sa yugto ng compilation. Halimbawa, ang pagpapatupad ng "const-sha1" ay ginagawang posible na kalkulahin ang SHA-1 na mga hash sa oras ng pag-compile, na humahantong sa pagpapabilis ng WinRT binding para sa Rust ng halos 40 beses.

  • Upang gawing mas nagbibigay-kaalaman ang mga mensahe ng error, na-stabilize ang suporta para sa attribute na "#[track_caller]", na kapaki-pakinabang para sa mga function tulad ng unwrap, na maaaring magdulot ng panic kung ang mga uri ay ginamit nang hindi tama. Ang tinukoy na katangian ay gagamitin ng panic handler upang i-print ang lokasyon ng tumatawag sa isang mensahe ng error.
  • Ang attribute na "const", na tumutukoy sa posibilidad na gamitin ito sa anumang konteksto sa halip na mga constant, ay ginagamit sa std::mem::forget method.
  • Isang bagong bahagi ng API ang inilipat sa stable na kategorya, kasama ang na-stabilize na Option::zip at vec::Drain::as_slice.
  • Sa manager ng package na Cargo idinagdag suporta para sa mga bagong variable ng kapaligiran na itinakda kapag nag-compile ng isang package: CARGO_BIN_NAME (pangalan ng resultang executable file), CARGO_CRATE_NAME (pangalan ng package), CARGO_PKG_LICENSE (lisensya na tinukoy sa manifest), CARGO_PKG_LICENSE_FILE (path sa file ng lisensya).

Pinagmulan: opennet.ru

Magdagdag ng komento