Kutolewa kwa lugha ya programu ya kutu 1.65

Lugha ya programu ya madhumuni ya jumla Rust 1.65, iliyoanzishwa na mradi wa Mozilla lakini sasa imeendelezwa chini ya ufadhili wa shirika huru lisilo la faida la Rust Foundation, imetolewa. Lugha inazingatia usimamizi salama wa kumbukumbu na hutoa njia za kufikia usawa wa juu wa kazi huku ikiepuka matumizi ya mtoaji wa takataka na wakati wa kukimbia (muda wa kukimbia umepunguzwa kuwa uanzishaji wa kimsingi na matengenezo ya maktaba ya kawaida).

Mbinu za utunzaji wa kumbukumbu za kutu huokoa msanidi programu kutokana na hitilafu wakati wa kuendesha viashiria na kulinda dhidi ya matatizo yanayotokea kutokana na utunzaji wa kumbukumbu wa kiwango cha chini, kama vile kufikia eneo la kumbukumbu baada ya kuachiliwa, kuondoa marejeleo ya viashiria visivyofaa, utiririshaji wa bafa, n.k. Ili kusambaza maktaba, kutoa miundo na kudhibiti utegemezi, mradi huunda msimamizi wa kifurushi cha Cargo. Hazina ya crates.io inatumika kwa kupangisha maktaba.

Usalama wa kumbukumbu hutolewa katika Rust wakati wa kukusanya kupitia kukagua marejeleo, kufuatilia umiliki wa kitu, kufuatilia muda wa maisha ya kitu (wigo), na kutathmini usahihi wa ufikiaji wa kumbukumbu wakati wa utekelezaji wa nambari. Kutu pia hutoa ulinzi dhidi ya mafuriko kamili, inahitaji uanzishaji wa lazima wa maadili tofauti kabla ya matumizi, hushughulikia makosa vyema katika maktaba ya kawaida, hutumia dhana ya marejeleo yasiyobadilika na vigeu kwa chaguo-msingi, hutoa uchapaji thabiti wa tuli ili kupunguza makosa ya kimantiki.

Ubunifu kuu:

  • Usaidizi ulioongezwa kwa aina zinazohusiana na jumla (GAT, Aina Zinazohusishwa Nazo), ambazo hurahisisha kuunda lakabu za aina zinazohusiana na aina nyingine na kukuruhusu kuhusisha waundaji wa aina na sifa. sifa Foo { aina Bar; }
  • Usemi wa "ruhusu ... vinginevyo" umetekelezwa, hukuruhusu kuangalia hali ya kulinganisha muundo moja kwa moja ndani ya usemi wa "ruhusu" na utekeleze msimbo kiholela ikiwa mchoro haulingani. let Ok(count) = u64::from_str(count_str) mwingine { panic!("Haiwezi kuchanganua nambari kamili: '{count_str}'"); };
  • Ruhusu matumizi ya taarifa ya mapumziko ili kuondoka kwenye vizuizi vilivyotajwa kabla ya wakati, kwa kutumia jina la kizuizi (lebo) ili kutambua kizuizi kitakachokatishwa. let result = β€˜block: { do_thing(); ikiwa condition_not_met() {break 'block 1; } do_next_thing(); ikiwa condition_not_met() {break 'block 2; } fanya_jambo_la_mwisho(); 3 };
  • Kwa Linux, uwezo wa kuhifadhi maelezo ya utatuzi kando (mgawanyiko-debuginfo), uliopatikana hapo awali kwa jukwaa la macOS pekee, umeongezwa. Wakati wa kubainisha chaguo la "-Csplit-debuginfo=unpacked", data ya debuginfo katika umbizo la DWARF itahifadhiwa katika faili tofauti za vipengee kwa kiendelezi cha ".dwo". Kubainisha "-Csplit-debuginfo=packed" kutaunda kifurushi kimoja katika umbizo la ".dwp" ambalo linajumuisha data yote ya utatuzi wa mradi. Ili kuunganisha debuginfo moja kwa moja kwenye .debug_* sehemu ya vipengee vya ELF, unaweza kutumia chaguo la "-Csplit-debuginfo=off".
  • Sehemu mpya ya API imehamishwa hadi kwa kitengo cha uthabiti, ikijumuisha mbinu na utekelezaji wa sifa zimeimarishwa:
    • std::backtrace::Nyuma nyuma
    • Imefungwa::kama_ref
    • std::io::soma_to_string
    • ::cast_mut
    • ::cast_const
  • Sifa ya "const", ambayo huamua uwezekano wa kuitumia katika muktadha wowote badala ya viunga, inatumika katika vitendakazi ::offset_from na ::offset_from.
  • Kama sehemu ya hatua ya mwisho ya kuhamisha utekelezaji wa itifaki ya LSP (Itifaki ya Seva ya Lugha) hadi kichanganuzi-kutu, utekelezaji wa kizamani wa Seva ya Lugha ya Rust (RLS) ulibadilishwa na seva ya mbegu ambayo hutoa onyo na pendekezo la kubadili hadi kwa kutumia kutu-analyzer.
  • Wakati wa ujumuishaji, usaidizi wa uwekaji wa ndani wa msimbo wa kati wa MIR umewezeshwa, ambayo huharakisha uundaji wa vifurushi vya kawaida vya crate kwa 3-10%.
  • Ili kuharakisha ujenzi ulioratibiwa, msimamizi wa kifurushi cha Cargo hutoa upangaji wa kazi zinazosubiri kutekelezwa kwenye foleni.

Zaidi ya hayo, unaweza kutambua mahojiano kuhusu matumizi ya lugha ya Rust huko Volvo ili kuunda vipengele vya mifumo ya habari ya magari. Hakuna mipango ya kuandika upya msimbo uliopo na uliojaribiwa katika Rust, lakini kwa msimbo mpya, Rust ni mojawapo ya chaguo zinazopendekezwa za kuboresha ubora kwa gharama za chini. Vikundi kazi vinavyohusiana na matumizi ya lugha ya Rust pia vimeundwa katika vyama vya magari AUTOSAR (Usanifu wa Mfumo Wazi wa Magari) na SAE (Society of Automotive Engineers).

Kwa kuongezea, David Kleidermacher, makamu wa rais wa uhandisi wa Google, alizungumza juu ya tafsiri ya nambari inayotumiwa kwenye jukwaa la Android kudhibiti funguo za usimbuaji kwenye Rust, na vile vile utumiaji wa Rust katika utekelezaji wa DNS juu ya itifaki ya HTTPS kwenye safu. kwa UWB-chips (Ultra-Wideband) na katika mfumo wa uboreshaji (Mfumo wa Utendaji wa Android) unaohusishwa na chipu ya Tensor G2. Rafu mpya za Bluetooth na Wi-Fi, zilizoandikwa upya kwa Rust, pia zinatengenezwa kwa ajili ya Android. Mkakati wa jumla ni kuimarisha usalama hatua kwa hatua, kwanza kwa kubadilisha vipengele vya programu vilivyo hatarini zaidi na muhimu kuwa Rust, na kisha kupanua kwa mifumo mingine midogo inayohusiana. Mwaka jana, lugha ya Rust ilijumuishwa katika orodha ya lugha zinazoruhusiwa kuunda mfumo wa Android.

Chanzo: opennet.ru

Kuongeza maoni