Kutolewa kwa lugha ya programu ya kutu 1.67

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

  • Kwa vitendakazi visivyosawazisha vilivyo na Future::Output, sasa inawezekana kubainisha vidokezo "#[lazima_utumie]" ambavyo vinajumuisha onyo ikiwa thamani ya kurejesha itapuuzwa, ambayo husaidia kutambua makosa yanayosababishwa na kudhani kuwa chaguo la kukokotoa litabadilisha thamani. badala ya kurudisha thamani mpya. #[lazima_utumie] async fn bar() -> u32 { 0 } async fn caller() { bar().wait; } onyo: matokeo ambayo hayajatumika ya siku zijazo yanarudishwa na `bar` ambayo lazima itumike β€”> src/lib.rs:5:5 | 5 | bar().subiri; | ^^^^^^^^^^^^ | = kumbuka: `#[onya(isiyotumiwa_lazima_itumike)]` imewashwa kwa chaguo-msingi
  • Utekelezaji wa foleni za FIFO std::sync::mpsc (mtumiaji mmoja wa mzalishaji-nyingi) umesasishwa, ambao umebadilishwa hadi kwa kutumia moduli ya chaneli iliyovuka wakati wa kudumisha API ya awali. Utekelezaji mpya unatofautishwa kwa kusuluhisha shida kadhaa, utendaji wa hali ya juu na urekebishaji wa nambari iliyorahisishwa.
  • Sehemu mpya ya API imehamishwa hadi kwa kitengo cha uthabiti, ikijumuisha mbinu na utekelezaji wa sifa zimeimarishwa:
    • {integer}::ilog_iliyoangaliwa
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Sifa ya "const", ambayo huamua uwezekano wa kuitumia katika muktadha wowote badala ya mara kwa mara, hutumiwa katika kazi:
    • char::kutoka_u32
    • char::kutoka_tarakimu
    • char::to_digit
    • msingi::char::kutoka_u32
    • msingi::char::kutoka_tarakimu
  • Kiwango cha tatu cha usaidizi kimetekelezwa kwa kutumia Rust kwenye kinu cha Linux (linuxkernel), na pia kwa Sony PlayStation 1 (mipsel-sony-psx), PowerPC yenye AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-haijulikani-kwa-) majukwaa qnx710, x86_64-pc-nto-qnx710). Kiwango cha tatu kinahusisha usaidizi wa kimsingi, lakini bila majaribio ya kiotomatiki, uchapishaji wa miundo rasmi, au kuangalia ikiwa msimbo unaweza kutengenezwa.

Zaidi ya hayo, tunaweza kutambua uchapishaji wa ARM wa viraka vinavyoruhusu matumizi ya lugha ya Rust kuendeleza viendeshaji na moduli za Linux kernel zilizokusanywa kwa ajili ya mifumo kulingana na usanifu wa AArch64.

Chanzo: opennet.ru

Kuongeza maoni