Kutolewa kwa lugha ya programu ya kutu 1.34

ilifanyika kutolewa kwa lugha ya programu ya mfumo Kutu 1.34iliyotengenezwa na mradi wa Mozilla. Lugha inazingatia usimamizi salama wa kumbukumbu, hutoa usimamizi wa kumbukumbu otomatiki, na hutoa njia za kufikia usawa wa juu wa kazi huku ikiepuka matumizi ya mtoaji wa taka na wakati wa kukimbia.

Udhibiti wa kumbukumbu otomatiki wa Rust huokoa msanidi programu dhidi ya vielelezo vya kudhibiti na hulinda dhidi ya matatizo yanayotokana na uchezaji wa kumbukumbu ya kiwango cha chini, kama vile kufikia eneo la kumbukumbu baada ya kuachiliwa, kuondoa marejeleo ya viashiria, utiririshaji wa bafa, n.k. Ili kusambaza maktaba, hakikisha kukusanya na kudhibiti utegemezi, mradi huunda msimamizi wa kifurushi Cargo, ambayo hukuruhusu kupata maktaba unayohitaji kwa programu hiyo kwa mbofyo mmoja. Hifadhi inaauniwa kwa kupangisha maktaba crates.io.

kuu ubunifu:

  • Zana zilizoongezwa kwa msimamizi wa kifurushi cha Cargo ili kufanya kazi na sajili mbadala za kifurushi ambazo zinaweza kuwa pamoja na sajili ya umma ya crates.io. Kwa mfano, wasanidi programu wa kibinafsi sasa wanaweza kutumia sajili yao ya kibinafsi ambayo inaweza kutumika wakati wa kuorodhesha vitegemezi katika Cargo.toml na kutumia muundo wa toleo sawa na crates.io kwa bidhaa zao, na pia kurejelea crates.io na crates.io katika utegemezi. kwa usajili wako mwenyewe.

    Kuongeza sajili za nje kwa .cargo/config (iko katika $HOME au saraka ya kifurushi)
    zinazotolewa Sehemu ya "[rejesta]", na kutumia sajili ya nje, chaguo la "sajili" lilionekana katika maelezo ya kila tegemezi katika Cargo.toml. Ili kuunganisha kwenye sajili ya ziada, weka tu tokeni ya uthibitishaji kwenye ~/.cargo/credentials faili na utekeleze amri.
    "kuingia kwa mizigo --registry=my-registry", na kuchapisha kifurushi -
    "cargo publish --registry=my-registry";

  • Imeongeza usaidizi kamili wa kutumia "?" katika vipimo madaktari, hukuruhusu kutumia nambari ya mifano kutoka kwa hati kama majaribio. Opereta hapo awali
    "?" inaweza kutumika kushughulikia makosa wakati wa utekelezaji wa jaribio ikiwa tu kulikuwa na chaguo za kukokotoa za "fn kuu()" au katika vitendakazi vya "#[test]";

  • Katika sifa maalum zilizofafanuliwa na macros ya kiutaratibu salama uwezo wa kutumia seti kiholela za tokeni ("#[attr($tokens)]", "#[attr[$tokens]] na #[attr{$tokens}]"). Hapo awali, vipengee viliweza tu kubainishwa katika umbo la mti/rejeshi kwa kutumia maandishi ya mfuatano, kama vile "#[foo(bar, baz(quux, foo = "bar"))]", lakini sasa inawezekana kutumia enums ('# [range(0. .10)]') na miundo kama "#[bound(T: MyTrait)]";
  • Sifa zilizoimarishwa (tabia) JaribuKutoka ΠΈ kujaribu, ambayo hukuruhusu kufanya ubadilishaji wa aina na kushughulikia makosa. Kwa mfano, mbinu kama vile from_be_bytes zenye aina kamili hutumia safu kama ingizo, lakini data mara nyingi ni ya aina ya Kipande, na kubadilisha kati ya safu na vipande ni tatizo kufanya wewe mwenyewe. Kwa sifa mpya, operesheni hii inaweza kufanywa kwa kuruka kwa kupiga simu .try_into(), kwa mfano, "let num = u32::from_be_bytes(slice.try_into()?)". Aina ya hitilafu imeongezwa kwa ubadilishaji unaofaulu kila wakati (k.m. kutoka aina ya u8 hadi u32) Haiwezekani, hukuruhusu kutumia kwa uwazi
    TryFrom kwa utekelezaji wote uliopo wa "Kutoka";

  • Chaguo la kukokotoa limeacha kutumika CommandExt::before_exec, ambayo iliruhusu kidhibiti kutekelezwa kabla ya kutekeleza utekelezaji ambao uliendeshwa katika muktadha wa mchakato wa mtoto uliogawanyika baada ya fork() simu. Chini ya hali kama hizi, baadhi ya nyenzo za mchakato wa mzazi, kama vile maelezo ya faili na maeneo ya kumbukumbu yaliyopangwa, zinaweza kurudiwa, ambayo inaweza kusababisha tabia isiyobainishwa na kazi isiyo sahihi ya maktaba.
    Inapendekezwa kutumia kitendakazi kisicho salama badala ya before_exec CommandExt::pre_exec.

  • Aina kamili za atomiki zilizotiwa saini na ambazo hazijatiwa saini kutoka biti 8 hadi 64 zimeimarishwa (kwa mfano, AtomikiU8), pamoja na aina zilizosainiwa NonZeroI[8|16|32|64|128].
  • Sehemu mpya ya API imehamishwa hadi kwenye kategoria ya thabiti, ikijumuisha mbinu Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Papo hapo::checked_[ongeza |sub] na SystemTime zimeimarishwa ::checked_[ongeza|sub]. Utendaji wa iter::from_fn na iter::successors umeimarishwa;
  • Kwa aina zote kamili, mbinu za checked_pow, saturating_pow, wrapping_pow, na overflowing_pow zinatekelezwa;
  • Imeongeza uwezo wa kuwezesha uboreshaji katika hatua ya kuunganisha kwa kubainisha chaguo la kujenga "-C linker-plugin-lto".

Chanzo: opennet.ru

Kuongeza maoni