Rust 1.43 Programming Language Release

Nai-publish release ng system programming language Kalawang 1.43, 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 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:

  • Ang mga macro ay nagbibigay ng kakayahang gumamit ng mga fragment ng mga elemento upang gawing code ang mga ito para sa mga katangian (trait), mga pagpapatupad (impl) o mga panlabas na bloke. Halimbawa:

    macro_rules! mac_trait {
    ($i:item) => {
    katangian T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Hahantong sa henerasyon:

    katangian T {
    fn foo() {}
    }

  • Pinahusay na uri ng pagtuklas ng mga primitive, sanggunian at binary na operasyon.
    Halimbawa, ang sumusunod na code, na dati nang nagdulot ng error, ay magagawa na ngayong mag-compile (Tama na ngayong tinutukoy ng Rust na ang 0.0 at &0.0 ay dapat na nasa uri na f32):

    hayaan n: f32 = 0.0 + &0.0;

  • Isang bagong environment variable na CARGO_BIN_EXE_{name} ang idinagdag sa Cargo, na itinakda kapag gumagawa ng mga pagsubok sa pagsasama at nagbibigay-daan sa iyong matukoy ang buong path sa executable file na tinukoy sa seksyong "[[bin]]" ng package.
  • Kung pinapayagan ang mga pahayag na gumamit ng mga katangian tulad ng "#[cfg()]".
  • Nagbibigay ang library ng kakayahang gumamit ng mga nauugnay na constant nang direkta para sa mga integer at fractional na uri, nang hindi nag-i-import ng module. Halimbawa, maaari mong isulat kaagad ang u32::MAX o f32::NAN nang hindi muna tinukoy ang "use std::u32" at "use std::f32".
  • Idinagdag ang bagong module kauna-unahan, na muling nag-e-export ng Rust primitive na uri, halimbawa kapag kailangan mong magsulat ng macro at tiyaking hindi nakatago ang mga uri.
  • Isang bagong bahagi ng mga API ang inilipat sa stable na kategorya, kabilang ang stabilized

    Sa sandaling::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 at
    iter::once_with.

Pinagmulan: opennet.ru

Magdagdag ng komento