Rust 1.65 ការចេញផ្សាយភាសាសរសេរកម្មវិធី

ការចេញផ្សាយភាសាកម្មវិធីគោលបំណងទូទៅ Rust 1.65 ដែលបង្កើតឡើងដោយគម្រោង Mozilla ប៉ុន្តែឥឡូវនេះត្រូវបានបង្កើតឡើងក្រោមការឧបត្ថម្ភពីអង្គការមិនរកប្រាក់ចំណេញឯករាជ្យ Rust Foundation ត្រូវបានបោះពុម្ពផ្សាយ។ ភាសាផ្តោតលើសុវត្ថិភាពនៃការចងចាំ និងផ្តល់នូវមធ្យោបាយដើម្បីសម្រេចបាននូវភាពស្របគ្នានៃការងារខ្ពស់ ខណៈពេលដែលជៀសវាងការប្រើប្រាស់ឧបករណ៍ប្រមូលសំរាម និងពេលដំណើរការ (ម៉ោងរត់ត្រូវបានកាត់បន្ថយទៅជាការចាប់ផ្តើមជាមូលដ្ឋាន និងការថែទាំបណ្ណាល័យស្តង់ដារ)។

វិធីសាស្ត្រគ្រប់គ្រងអង្គចងចាំរបស់ Rust ជួយសង្រ្គោះអ្នកអភិវឌ្ឍន៍ពីកំហុសនៅពេលរៀបចំទ្រនិច និងការពារពីបញ្ហាដែលកើតឡើងដោយសារការគ្រប់គ្រងអង្គចងចាំកម្រិតទាប ដូចជាការចូលប្រើតំបន់អង្គចងចាំបន្ទាប់ពីវាត្រូវបានដោះលែង ការពន្យារទ្រនិចចង្អុលទទេ ការដំណើរការលើសចំណុះ។ល។ ដើម្បីចែកចាយបណ្ណាល័យ ផ្តល់ការកសាង និងគ្រប់គ្រងភាពអាស្រ័យ គម្រោងអភិវឌ្ឍកម្មវិធីគ្រប់គ្រងកញ្ចប់ទំនិញ។ ឃ្លាំង crates.io ត្រូវបានគាំទ្រសម្រាប់ការបង្ហោះបណ្ណាល័យ។

សុវត្ថិភាពនៃអង្គចងចាំត្រូវបានផ្តល់ជូននៅក្នុង Rust នៅពេលចងក្រងតាមរយៈការត្រួតពិនិត្យឯកសារយោង ការរក្សាដាននៃភាពជាម្ចាស់វត្ថុ ការតាមដានអាយុកាលរបស់វត្ថុ (វិសាលភាព) និងការវាយតម្លៃភាពត្រឹមត្រូវនៃការចូលប្រើអង្គចងចាំអំឡុងពេលដំណើរការកូដ។ ច្រែះក៏ផ្តល់ការការពារប្រឆាំងនឹងចំនួនគត់លើសចំណុះ ទាមទារការចាប់ផ្តើមចាំបាច់នៃតម្លៃអថេរមុនពេលប្រើ ដោះស្រាយកំហុសបានប្រសើរជាងនៅក្នុងបណ្ណាល័យស្តង់ដារ អនុវត្តគោលគំនិតនៃសេចក្តីយោងដែលមិនអាចផ្លាស់ប្តូរបាន និងអថេរតាមលំនាំដើម ផ្តល់នូវការវាយអក្សរឋិតិវន្តខ្លាំង ដើម្បីកាត់បន្ថយកំហុសឡូជីខល។

ការច្នៃប្រឌិតសំខាន់ៗ៖

  • Добавлена поддержка обобщённых ассоциированных типов (GAT, Generic Associated Types), дающие возможность создавать псевдонимы типов, ассоциированные с другим типом, и позволяющие связывать конструкторы типов с типажами. trait Foo { type Bar<‘x>; }
  • Реализовано выражение «let … else», позволяющее проверять условие соответствия шаблону непосредственно внутри выражения «let» и выполнять произвольный код, если шаблон не совпадает. let Ok(count) = u64::from_str(count_str) else { panic!(«Can’t parse integer: ‘{count_str}'»); };
  • Разрешено использование выражения break для преждевременного выхода из именованных блоков, используя имя блока (метку) для определения завершаемого блока. let result = ‘block: { do_thing(); if condition_not_met() { break ‘block 1; } do_next_thing(); if condition_not_met() { break ‘block 2; } do_last_thing(); 3 };
  • Для Linux добавлена возможность раздельного сохранения отладочной информации (split-debuginfo), ранее доступная только для платформы macOS. При указании опции «-Csplit-debuginfo=unpacked» данные debuginfo в формате DWARF будут сохранены в несколько отдельных объектных файлов с расширением «.dwo». При указании «-Csplit-debuginfo=packed» будет создан один пакет в формате «.dwp», включающий все данные debuginfo для проекта. Для интеграции debuginfo непосредственно в секцию .debug_* ELF-объектов можно использовать опцию «-Csplit-debuginfo=off».
  • ផ្នែកថ្មីនៃ API ត្រូវបានផ្លាស់ទីទៅប្រភេទនៃស្ថេរភាព រួមទាំងវិធីសាស្រ្ត និងការអនុវត្តលក្ខណៈត្រូវបានធ្វើឱ្យមានស្ថេរភាព៖
    • std::backtrace::Backtrace
    • Bound::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Признак «const», определяющий возможность использования в любом контексте вместо констант, применён в функциях <*const T&>::offset_from и <*mut T>::offset_from
  • В рамках финальной стадии перевода реализации протокола LSP (Language Server Protocol) на rust-analyzer, устаревшая реализация Rust Language Server (RLS) заменена на cервер-заглушку, выдающий предупреждение с предложением перейти на использование rust-analyzer.
  • При компиляции включена поддержка inline-развёртывания промежуточного кода MIR, приводящая к ускорению компиляции типовых crate-пакетов на 3-10%.
  • Для ускорения сборок по расписанию в пакетном менеджере Cargo обеспечена сортировка работ, ожидающих выполнения в очереди.

Дополнительно можно отметить интервью о применении языка Rust в компании Volvo для разработки компонентов автомобильных информационных систем. Уже существующий и протестированный код переписывать на Rust не планируют, но для нового кода Rust является одним из предпочтительных вариантов для повышения качества с меньшими затратами. Связанные с использованием языка Rust рабочие группы также созданы в автомобильных объединениях AUTOSAR (AUTomotive Open System ARchitecture) и SAE (Society of Automotive Engineers).

Кроме того, Дэвид Клейдермахер (David Kleidermacher), вице-президент Google по инжинирингу, рассказал о переводе на язык Rust кода, используемого в платформе Android для управления ключами шифрования, а также применении Rust в реализации протокола DNS over HTTPS, в стеке для UWB-чипов (Ultra-Wideband) и во вреймворке виртуализации (Android Virtualization Framework), связанном с чипом Tensor G2. Для Android также развиваются новые стеки для Bluetooth и Wi-Fi, переписанные на языке Rust. Общая стратегия заключается в постепенном усилении защиты вначале через перевод на использование Rust наиболее незащищённых и жизненно важных программных компонентов, а затем охватывая и другие связанные с ними подсистемы. В прошлом году язык Rust был включён в число языков, допустимых для разработки платформы Android.

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់