Релиз Rust 1.78

2 мая 2024 года состоялся релиз языка программирования Rust 1.78.0, позволяющего каждому создавать надёжное и эффективное программное обеспечение. Исходный код проекта опубликован на GitHub разработчиками из Rust Foundation. Предыдущая стабильная версия Rust 1.77 вышла 21 марта.

Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.78.0 достаточно выполнить команду rustup update stable.

Основные изменения и дополнения в Rust 1.78:

предложено новое пространство имён атрибутов «#[diagnostic]», предоставляющее средства для влияния на выдаваемые компилятором сообщения об ошибках. Первым в новом пространстве реализован атрибут «#[diagnostic::on_unimplemented]», который может использоваться для настройки сообщений об ошибках, выдаваемых в ситуации, когда требуется использовать типаж, который не реализован для типа;

предварительные assert-проверки, применяемые к unsafe-функциями, теперь могут откладываться до стадии генерации кода, что позволяет выполнять данные проверки без необходимости сборки стандартной библиотеки в режиме «#[cfg(debug_assertions)]». Для срабатывания проверок теперь достаточно включения отладочных assert-ов для тестовых или отладочных сборок своего кода;

поведение функций в стандартной библиотеке, влияющих на выравнивание указателей и срезов (slice), теперь предсказуемо во время выполнения и зависит от входных данных. Функция pointer::align_offset, вычисляющая смещение для выравнивания указателя, теперь возвращает usize::MAX только при невозможности выполнения операции. Функции slice::align_to и slice::align_to_mut both, преобразующие срезы в представление с выровненным средним срезом и исходными начальным и конечным срезами, теперь всегда возвращают самую большую среднюю часть;

функция Barrier::new() стабилизирована для использования с признаком «const» в любом контексте вместо констант;

для целевых платформ x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm и i686-pc-windows-gnullvm теперь требуется как минимум версия Windows 10;

реализован третий уровень поддержки для платформ wasm32-wasip2, arm64ec-pc-windows-msvc, armv8r-none-eabihf и loongarch64-unknown-linux-musl. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода;

реализован второй уровень поддержки целевой платформы Add wasm32-wasip1. Второй уровень поддержки подразумевает гарантию сборки;

платформа wasm32-wasi-preview1-threads переименована в wasm32-wasip1-threads. Компилятор переведён на использование LLVM 18. При использовании LLVM 18 для архитектур x86-32 и x86-64 изменён ABI, связанный с типами u128 и i128;

в пактом менеджере Cargo стабилизирована 4 версия файлов-блокировок (lockfile v4);

в Cargo cтабилизирован глобальный кэш с информацией о последнем использовании данных. Кэш размещается в файле $CARGO_HOME/.global-cache при помощи SQLite, обновляется автоматически и отражает последние изменения, связанные с индексом, crate-файлом, каталогом с кодом, git clone и git checkout.

Список из 441 контрибутора, которые работали на выпуском Rust 1.78.

Источник: habr.com

0 0 голоса
Рейтинг новости
0
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии