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

жарыяланган системалык программалоо тилинин 1.46 чыгаруу дат, Mozilla долбоору тарабынан негизделген. Бул тил эстутумдун коопсуздугуна басым жасайт, эстутумду автоматтык башкарууну камсыз кылат жана таштанды жыйноочу жана узактыгы.

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

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

  • “const fn” туюнтмасы аркылуу аныкталган функциялардын мүмкүнчүлүктөрү кеңейтилди, аларды регулярдуу функциялар катары гана атабастан, ошондой эле туруктуулардын ордуна каалаган контекстте колдонсо болот. Бул функциялар иштөө убагында эмес, компиляция убагында эсептелинет, ошондуктан алар белгилүү бир чектөөлөргө дуушар болушат, мисалы, туруктуулардан гана окуу мүмкүнчүлүгү.

    Жаңы чыгарылыш мындай функцияларда логикалык операторлорду («&&» жана «||») колдонууга тыюу салууну алып салат жана «if», «if let», «match» конструкцияларын колдонууга мүмкүндүк берет,
    "while", "while let" жана "loop", ошондой эле "&[T]" туюнтмасын колдонуу менен кесимдерге (тилим, динамикалык массивдер) айландыруу мүмкүнчүлүгүн берет. Бул функцияларды "const fn" функцияларында колдонуу кээ бир ресурстарды көп талап кылган операцияларды компиляция стадиясына жылдырууга мүмкүндүк берет. Мисалы, "const-sha1" ишке ашыруу SHA-1 хэштерин компиляция убагында эсептөөгө мүмкүндүк берет, натыйжада Rust үчүн WinRT байланыштары дээрлик 40 эсе тезирээк иштейт.

  • Ката билдирүүлөрүн көбүрөөк маалыматтуу кылуу үчүн, “#[track_caler]” атрибутун колдоо турукташтырылды, ал ачуу сыяктуу функциялар үчүн пайдалуу, эгерде түрлөрү туура эмес колдонулса, дүрбөлөңгө түшүшү мүмкүн. Көрсөтүлгөн атрибут чалуучунун жайгашкан жерин ката билдирүүсүндө басып чыгаруу үчүн паника башкаруучусу тарабынан колдонулат.
  • Аны константалардын ордуна каалаган контекстте колдонуу мүмкүнчүлүгүн аныктаган “const” атрибуту std::mem::forget методунда колдонулат.
  • API'нин жаңы бөлүгү туруктуу категорияга жылдырылды, анын ичинде турукташтырылган Опция::zip жана vec::Drain::as_slice.
  • Жүктүн пакет менеджеринде кошулду пакетти компиляциялоодо коюлган жаңы чөйрө өзгөрмөлөрүн колдоо: CARGO_BIN_NAME (натыйжада аткарылуучу файлдын аталышы), CARGO_CRATE_NAME (пакет аты), CARGO_PKG_LICENSE (манифестте көрсөтүлгөн лицензия), CARGO_PKG_LICENSE_FILE (лицензия файлына жол).

Source: opennet.ru

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