Rust 1.65 Whakaputa Reo Papatono

Ko te tukunga o te reo hootaka kaupapa whanui Rust 1.65, i hangaia e te kaupapa Mozilla, engari kua whakawhanakehia inaianei i raro i te maru o te whakahaere kore-painga motuhake Rust Foundation, kua whakaputaina. Ko te reo e arotahi ana ki te haumaru mahara me te whakarato i nga huarahi ki te whakatutuki i te whakarara nui i roto i nga mahi mahi, me te karo i te whakamahi o te kaikohi paru me te wa mahi (ka whakahekehia te wa whakahaere ki te timatanga me te tiaki i te whare pukapuka paerewa).

Ko nga tikanga whakahaere mahara a Rust ka whakawātea i te kaiwhakawhanake mai i nga hapa raweke o te atatohu me te whakamarumaru mai i nga raru ka puta mai i te raweke mahara taumata-iti, penei i te urunga kore-kore, te kore tohu tohu kore, te paopao, me era atu. Ki te tohatoha whare pukapuka, ki te whakarite i te huihuinga me te whakahaere i nga whakawhirinakitanga, kei te whakawhanake te kaupapa i te kaiwhakahaere kete Uta. Kei te tautokohia te putunga crates.io mo te manaaki whare pukapuka.

Ka whakamanahia te haumaru mahara i roto i te Rust i te wa whakahiato ma te arowhai tohutoro, te whai mana o te taonga, te whakaaro mo te oranga o te ahanoa (scoping), me te arotake urunga mahara i te wa whakahaere. Ko te waikura hoki he whakamarumaru mai i nga puhaketanga integer, me arawhiti nga uara taurangi i mua i te whakamahi, he pai ake te whakahaere hapa i roto i te whare pukapuka paerewa, ka whakamahi taunoa i te kaupapa o nga tohutoro koretake me nga taurangi, me te tuku patopato pateko kaha hei whakaiti i nga hapa arorau.

Nga mahi hou:

  • Добавлена поддержка обобщённых ассоциированных типов (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».
  • Kua nekehia tetahi waahanga hou o te API ki te waahanga pumau, tae atu ki nga tikanga me nga whakatinanatanga o nga ahuatanga kua whakapumautia:
    • 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.

Source: opennet.ru

Tāpiri i te kōrero