ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Выпущен Rust 1.81.0: вот что нового и как его обновить

Выпущен Rust 1.81.0: вот что нового и как его обновить

Команда Rust выпустила Rust 1.81.0, в котором представлен ряд улучшений для стабильности языка, производительности и удобства работы с разработчиками.

Rust 1.81.0 поставляется с несколькими новыми функциями и улучшениями, включая стабилизацию функции  Error в core, что делает ее доступной для использования в библиотеках #![no_std].

Алгоритмы сортировки стандартной библиотеки были обновлены для повышения производительности, а также добавлен новый уровень, expect, позволяющий разработчикам явно указывать, где должен встречаться конкретный ворсинок.

Кроме того, было стабилизировано несколько API, включая char::from_u32_uncheckedCStr::count_bytes и CStr::from_ptr.

Эта версия также включает ряд замечаний по совместимости, включая изменения в аргументах перехвата паники и обработчика паники, поведение по умолчанию для неперехваченных паник в функциях  extern "C" и целевое присвоение имен WASI 0.1.

Наконец, обновление включает исправление для CVE-2024-43402, которое повлияло на то, как std::process::Command обрабатывает аргументы при вызове пакетных файлов в Windows.

Давайте подробно обсудим эти новые функции.

 

Что нового в Rust 1.81.0

Эта новая версия содержит несколько ключевых улучшений, в том числе:

1. Стабилизация core::error::Error:

Rust 1.81.0 стабилизирует функцию Error в core библиотеке, делая ее пригодной для использования в библиотеках #![no_std]. Это позволяет проводить более широкую стандартизацию по одному и тому же параметру Error во всей экосистеме Rust, независимо от целевой среды.

 

2. Новые реализации сортировки:

Как стабильные, так и нестабильные реализации сортировки в стандартной библиотеке выигрывают от обновленных алгоритмов, что приводит к повышению производительности среды выполнения и времени компиляции.

Обновленные алгоритмы также активно обнаруживают неправильные реализации Ord и вызывают панику, предотвращая неожиданное поведение и поощряя разработчиков поддерживать правильный порядок реализации.

 

3. Введение #[expect(lint)]:

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

Это полезно для временного отключения lint из-за текущего рефакторинга или ошибок в реализации lint, при этом сохраняя осведомленность о том, когда lint необходимо устранить.

Например, при переносе кодовой базы для соответствия новому ограничению, введенному Clippy lint, разработчики могут использовать #[expect(lint)] для отслеживания прогресса и обеспечения возможности применения lint, как только кодовая база станет совместимой.

 

4. Причины появления ворса:

Разработчики теперь могут указывать причины при изменении уровней ворса. Эти причины включаются в сообщения компилятора, предоставляя контекст и ясность другим разработчикам, которые могут столкнуться с ворсом в будущем.

Например, если в проекте отключена арифметика с плавающей запятой с использованием #![deny(clippy::float_arithmetic)] из-за работы в среде без поддержки с плавающей запятой, можно добавить причину, объясняющую это решение непосредственно в коде.

 

5. Стабилизированные API и постоянное расширение контекста:

Rust 1.81.0 стабилизирует несколько API, включая core::errorhint::assert_unchecked и fs::exists. Кроме того, больше API, таких как char::from_u32_unchecked и CStr::from_ptr, теперь стабильны в const контекстах, расширяя функциональность, доступную в const контекстах.

 

6. Улучшена безопасность и совместимость:

В Rust 1.81.0 внесен ряд изменений для повышения безопасности и совместимости. К ним относятся разделение аргументов panic hook и panic handler, прерывание при неперехваченных паниках в функциях  extern "C"(поощряется использование вариантов  -unwind ABI с суффиксом для выхода за границы ABI) и переименование целевого параметра WASI 0.1 с wasm32-wasi на wasm32-wasip1 (с планами удаления wasm32-wasi в январе 2025 года).

Помимо этих основных изменений, Rust 1.81.0 включает исправление для CVE-2024-43402, обеспечивающее корректное экранирование аргументов при вызове пакетных файлов в Windows с помощью std::process::Command.

Этот выпуск также включает множество других улучшений и исправлений ошибок в Rust, Cargo и Clippy.

 

Обновление до Rust 1.81.0 в Linux

Чтобы обновить Rust до версии 1.81.0, вы можете использовать rustup инструмент. Если вы установили предыдущую версию Rust с помощью rustup, вы можете обновиться до 1.81.0, выполнив следующую команду в вашем терминале в Linux:

$ rustup update stable

 

Ресурс:

Exit mobile version