Kutolewa kwa lugha ya programu ya kutu 1.68

Lugha ya programu ya madhumuni ya jumla Rust 1.68, 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:

  • Kidhibiti cha kifurushi cha Cargo na hazina ya crates.io zimeimarisha usaidizi wa itifaki ya Sparse, ambayo inafafanua njia mpya ya kufanya kazi na faharasa inayoakisi matoleo yanayopatikana ya vifurushi vyote vilivyopo kwenye hazina. Itifaki mpya hukuruhusu kuongeza kasi ya kufanya kazi na crates.io na kutatua shida za kuongeza na ukuaji zaidi wa idadi ya vifurushi kwenye ghala.

    Ili kupunguza ucheleweshaji unaosababishwa na kupakua faharasa kamili, Sparse badala ya kufikia faharasa kwa kutumia Git inahusisha upakuaji wa moja kwa moja kupitia HTTPS tu data muhimu ya faharasa, inayofunika utegemezi wa mradi fulani. Huduma mpya, index.crates.io, inatumika kutoa data ya faharasa. Kwa chaguo-msingi, itifaki mpya imepangwa kutumika katika tawi la Rust 1.70, na kabla ya hapo, ili kuiwezesha, unaweza kuweka mabadiliko ya mazingira "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" au kuongeza parameta ya 'protocol =' kwenye "[registries. crates-io]" sehemu ya faili ya .cargo/config.toml 'sparse'.

  • Imeongeza "pin!" macro, ambayo inakuruhusu kuunda muundo wa Pin<&mut T> kutoka kwa usemi "T" na upachikaji wa ndani wa hali yake (tofauti na Box::pin, haitengei kumbukumbu kwenye lundo, lakini hufunga. kwa kiwango cha stack).
  • Kidhibiti chaguo-msingi cha mgao wa kumbukumbu kimependekezwa, kinachotumiwa wakati wa kutumia kifurushi cha kawaida cha alloc. Programu zinazowezesha alloc pekee (bila std) sasa zitaita kidhibiti cha "panic!" wakati ugawaji wa kumbukumbu utashindwa, ambayo inaweza kuzuiliwa kwa hiari kwa kutumia "#[panic_handler]". Programu zinazotumia maktaba ya std zitaendelea kuchapisha maelezo ya hitilafu kwa stderr na kuacha kufanya kazi.
  • Sehemu mpya ya API imehamishwa hadi kwa kitengo cha uthabiti, ikijumuisha mbinu na utekelezaji wa sifa zimeimarishwa:
    • {core,std}::pin::pin!
    • impl Kutoka kwa {f32,f64}
    • std::njia::MAIN_SEPARATOR_STR
    • impl DerefMut kwa PathBuf
  • Sifa ya "const", ambayo huamua uwezekano wa kuitumia katika muktadha wowote badala ya mara kwa mara, inatumika katika VecDeque::tendakazi mpya.
  • Kufanya kazi kwenye jukwaa la Android, angalau NDK r25 (API 19) sasa inahitajika, i.e. Toleo la chini kabisa la Android linalotumika limepandishwa hadi 4.4 (KitKat).
  • Kiwango cha tatu cha usaidizi kimetekelezwa kwa jukwaa la Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). Kiwango cha tatu kinahusisha usaidizi wa kimsingi, lakini bila majaribio ya kiotomatiki, uchapishaji wa miundo rasmi, au kuangalia ikiwa msimbo unaweza kutengenezwa.

Chanzo: opennet.ru

Kuongeza maoni