Rust 1.52 Programming Language Release

Ang paglabas ng system programming language na Rust 1.52, na itinatag ng proyekto ng Mozilla, ngunit ngayon ay binuo sa ilalim ng tangkilik ng independiyenteng non-profit na organisasyon na Rust Foundation, ay nai-publish. Nakatuon ang wika sa kaligtasan ng memorya, nagbibigay ng awtomatikong pamamahala ng memorya, at nagbibigay ng paraan upang makamit ang mataas na parallelism ng gawain nang hindi gumagamit ng garbage collector o runtime (runtime ay binabawasan sa pangunahing pagsisimula at pagpapanatili ng karaniwang library).

Ang awtomatikong pamamahala ng memorya ng Rust ay nagliligtas sa developer mula sa mga error kapag nagmamanipula ng mga pointer at pinoprotektahan laban sa mga problemang lumitaw dahil sa mababang antas ng pagmamanipula ng memorya, tulad ng pag-access sa isang lugar ng memorya pagkatapos itong mapalaya, pag-derefer ng mga null pointer, pag-overrun ng buffer, atbp. Upang ipamahagi ang mga aklatan, magbigay ng mga build at pamahalaan ang mga dependency, bubuo ang proyekto ng Cargo package manager. Ang crates.io repository ay suportado para sa pagho-host ng mga aklatan.

Mga pangunahing inobasyon:

  • Inalis ang pagbubuklod sa pagkakasunud-sunod ng pagpapatupad ng mga utos na "cargo check" at "cargo clippy". Dati, ang pagtawag sa "cargo clippy" pagkatapos ng "cargo check" ay hindi naglunsad ng clippy utility (linter) dahil sa kakulangan ng cache separation para sa mga check mode na ito. Ngayon ang problemang ito ay nalutas na at ang pagkakasunud-sunod kung saan tinawag ang "cargo clippy" at "cargo check" ay hindi na mahalaga.
  • Ang isang bagong bahagi ng API ay inilipat sa stable na kategorya, kabilang ang mga sumusunod na pamamaraan ay na-stabilize:
    • Mga Pangangatwiran::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • Ang katangiang "const", na tumutukoy sa posibilidad na gamitin ito sa anumang konteksto sa halip na mga constant, ay ginagamit sa mga pamamaraan:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Nagdagdag ng lint check unsafe_op_in_unsafe_fn upang matukoy kung ang hindi ligtas na code na ginagamit sa mga hindi ligtas na function ay naka-frame ng hindi ligtas na mga bloke.
  • Pinapayagan na mag-cast ng mga nababagong pointer sa mga array sa anyo ng mga pointer sa uri ng elemento ng array. let mut x: [usize; 2] = [0, 0]; hayaan ang p = &mut x bilang *mut usize; hayaan ang p = &mut x bilang *const usize;
  • 9 na bagong tseke ang naidagdag sa clippy (linter).
  • Sinusuportahan na ngayon ng manager ng cargo package ang field na β€œmanifest_path” sa JSON para sa mga package. Nagdagdag ng suporta para sa pagtukoy ng impormasyon ng lisensya sa SPDX 3.11 na format sa crates.io repository.
  • Pinapayagan na tukuyin ang maraming mga filter kapag nagpapatakbo ng mga pagsubok, halimbawa ang pagpapatakbo ng "cargo test - foo bar" ay tatakbo sa lahat ng mga pagsubok na tumutugma sa mga maskara na "foo" at "bar".
  • Ang default na LLVM toolkit ay na-update sa LLVM 12.
  • Ang ikatlong antas ng suporta ay ipinatupad para sa s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl at powerpc-unknown-openbsd platform. Ang ikatlong antas ay nagsasangkot ng pangunahing suporta, ngunit walang awtomatikong pagsubok, pag-publish ng mga opisyal na build, o pagsuri kung ang code ay maaaring buuin.

Pinagmulan: opennet.ru

Magdagdag ng komento