Rust добавляет диагностические атрибуты для сообщений компилятора

В Rust 1.78, только что выпущенной последней версии популярного языка программирования, безопасного для памяти, добавлена поддержка пространства имен атрибута #[diagnostic] для влияния на сообщения компилятора.

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

Rust 1.78, анонсированный 2 мая, можно установить через rustup: $ rustup update stable

Еще одна особенность Rust 1.78 связана с утверждением опасных предусловий. В стандартной библиотеке Rust есть ряд утверждений для предусловий опасных функций, но исторически они были включены только в сборках библиотеки #[cfg(debug_assertions)], чтобы не влиять на производительность релиза. Поскольку библиотека обычно компилируется и распространяется в режиме релиза, большинство разработчиков Rust не выполняли эти проверки.

В Rust 1.78 условие для этих утверждений отложено до генерации кода, поэтому они будут проверяться в зависимости от настроек пользователя для отладочных утверждений, включенных по умолчанию в отладочных и тестовых сборках. По словам команды Rust, это изменение поможет выявить неопределенное поведение в коде. Тем не менее, детали того, сколько именно проверяется, в целом не стабильны.

Детерминированное выравнивание также появилось в Rust 1.78. В стандартной библиотеке есть функции, изменяющие выравнивание указателей и фрагментов, но ранее они имели оговорки, из-за которых на них было сложно полагаться на практике. В основном эти оговорки существовали как защита от оценки const, но они были стабильны только для неконстантного использования. Теперь обещается, что они будут иметь последовательное поведение во время выполнения в соответствии с реальными входными данными.

Rust 1.78 также стабилизирует ряд API, повышает минимальные требования до Windows 10 для таких целей, как x_86-pc-windows-msvc, и обновляет поставляемый LLVM до LLVM 18.

Rust 1.78 следует за выпуском Rust 1.77 от 21 марта, в котором появилась поддержка литералов C-строк. Также были выпущены два последующих точечных релиза: Rust 1.77.1, который отключил новое поведение Cargo в Windows для целей, использующих MSVC (Microsoft C и C++), и Rust 1.77.2, который включал исправление уязвимости.

Rust добавляет диагностические атрибуты для сообщений компилятора
Понравилась новость? Тогда не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.
05 мая 2024 г.
31
Теги: Rust

Комментарии

Оставить комментарий:
* отправляя форму, я даю согласие на обработку персональных данных

Читайте еще

Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!

Только свежие новости программирования и технологий каждый день.