Rust 1.62 Программалоо тили релиз

Mozilla долбоору тарабынан негизделген, бирок азыр Rust Foundation көз карандысыз коммерциялык эмес уюмунун демөөрчүлүгү астында иштелип чыккан Rust 1.62 жалпы максаттуу программалоо тилинин релизи жарыяланды. Бул тил эстутумдун коопсуздугуна көңүл бурат жана таштанды жыйгычты жана иштөө убактысын колдонуудан качуу менен жогорку жумуш параллелизмине жетүү үчүн каражаттарды камсыз кылат (иштөө убактысы стандарттык китепкананы негизги инициализацияга жана тейлөөгө чейин кыскарган).

Rust'тун эстутум менен иштөө ыкмалары иштеп чыгуучуну көрсөткүчтөрдү манипуляциялоодо каталардан куткарат жана эстутумдун төмөнкү деңгээлдеги иштөөсүнөн улам келип чыккан көйгөйлөрдөн коргойт, мисалы, эстутумдун аймагына ал бошотулгандан кийин жетүү, нөл көрсөткүчтөрдү шилтемеден чыгаруу, буфердин ашып кетиши ж.б. Китепканаларды жайылтуу, курууну камсыз кылуу жана көз карандылыкты башкаруу үчүн долбоор Cargo пакетинин менеджерин иштеп чыгат. crates.io репозиторий китепканаларды хостинг үчүн колдоого алынат.

Эстутумдун коопсуздугу Rust программасында компиляция убагында маалымдама текшерүү, объектке ээлик кылуу, объекттин иштөө мөөнөттөрүн (кошумчаларын) эсепке алуу жана кодду аткаруу учурунда эстутумга жетүүнүн тууралыгын баалоо аркылуу камсыз кылынат. Rust ошондой эле бүтүн сандардын ашып кетишинен коргоону камсыз кылат, колдонуудан мурун өзгөрмө маанилерин милдеттүү түрдө инициализациялоону талап кылат, стандарттык китепканада каталарды жакшыраак иштетет, өзгөрүлгүс шилтемелер жана өзгөрмөлөр концепциясын демейки боюнча колдонот, логикалык каталарды азайтуу үчүн күчтүү статикалык терүүнү сунуштайт.

Негизги инновациялар:

  • "Жүк" пакетинин менеджери "кошуу" буйругун сунуштайт, ал Cargo.toml манифестине жаңы көз карандылыктарды кошууга же команда сабынан учурдагы көз карандылыктарды өзгөртүүгө мүмкүндүк берет. Буйрук ошондой эле жеке функцияларды жана версияларды көрсөтүүгө мүмкүндүк берет, мисалы: жүк кошуу серде —функциялар жүктү кошуу nom@5
  • Демейки параметр “#[демейки]” атрибуту аркылуу аныкталган энумдар менен “#[deive(Default)]” колдонуу мүмкүнчүлүгү кошулду. #[туура (демейки)] enum Мүмкүн { #[демейки] Эч нерсе, бир нерсе(T), }
  • Linux платформасында Linux ядросу тарабынан берилген футекстерди колдонуунун негизинде Mutex синхрондоштуруу механизминин бир кыйла компакттуу жана тезирээк ишке ашырылышы колдонулат. pthreads китепканасына негизделген мурда колдонулган ишке ашыруудан айырмаланып, жаңы версия Mutex абалын сактоо үчүн 5 байттын ордуна 40 гана байт колдонот.Ошондой эле Condvar жана RwLock кулпу механизмдери futexке которулган.
  • x86_64-unknown-none максаттуу платформасын колдоонун экинчи деңгээли ишке ашырылды, ал операциялык тутумусуз иштей турган аткарылуучу файлдарды түзүү үчүн иштелип чыккан. Мисалы, белгиленген максаттуу платформа ядро ​​компоненттерин жазууда колдонулушу мүмкүн. Колдоонун экинчи деңгээли монтаждык кепилдикти камтыйт.
  • Колдоонун үчүнчү деңгээли aarch64-pc-windows-gnullvm жана x86_64-pc-windows-gnullvm платформалары үчүн ишке ашырылган. Үчүнчү деңгээл негизги колдоону камтыйт, бирок автоматташтырылган тестирлөөсүз, расмий түзүмдөрдү жарыялоосуз же кодду курууга болорун текшерүүсүз.
  • API'нин жаңы бөлүгү туруктуу категорияга жылдырылды, анын ичинде сапаттардын ыкмалары жана ишке ашырылышы турукташтырылды:
    • bool :: then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • импл AssertUnwindSafe үчүн демейки маани
    • From > Rc үчүн
    • From > Arc<[u8]> үчүн
    • EncodeWide үчүн FusedIterator

    Source: opennet.ru

Комментарий кошуу