Rust 1.82, новейшая версия популярного безопасного для памяти языка программирования, удовлетворяет давний запрос на отображение информации в реестре менеджера пакетов Cargo. Также с Rust 1.82 Apple macOS на 64-битной платформе Arm теперь предлагает наивысшую гарантию функциональности Rust.
Обновление было анонсировано 17 октября. Разработчики, использующие предыдущую версию Rust, могут получить доступ к обновлению, выполнив команду rustup update stable.
Для Cargo в Rust добавлена подкоманда cargo info, показывающая информацию о пакете в реестре. Эта возможность запрашивалась почти 10 лет. За эти годы были написаны сторонние расширения, подобные этому; эта реализация была разработана как cargo-information, прежде чем слиться с самим Cargo.
Также в Rust 1.82, aarch64-apple-darwin для macOS на 64-битных процессорах Arm теперь является целью Rust первого уровня, с наивысшей гарантией правильной работы. Каждое изменение в репозитории Rust должно пройти полное тестирование на каждой цели уровня 1, прежде чем оно будет слито. Эта цель была представлена как tier 2 в Rust 1.49, что сделало ее доступной в rustup. Новая веха ставит цель aarch64-apple-darwin в один ряд с 64-битными целями Arm Linux и x86 macOS, Linux и Windows. Кроме того, цели для Mac Catalyst, технологии Apple для запуска iOS-приложений на Mac, теперь относятся ко второму уровню.
Rust 1.82 вышел вслед за выпуском 5 сентября Rust 1.81, в котором был стабилизирован признак Error в основной библиотеке Rust. Кроме того, в Rust 1.82:
Rust теперь поддерживает синтаксис use<...> в определенных границах impl Trait для управления тем, какие общие параметры времени жизни перехватываются. Типы Return-position impl Trait (RPIT) в Rust захватывают определенные общие параметры. Захват общего параметра позволяет использовать его в скрытом типе. Это, в свою очередь, влияет на проверку заимствований.
Родной синтаксис для создания необработанного указателя присутствует.
Ответственность за правильность всех сигнатур, содержащихся в блоке extern, лежит на тех, кто его пишет; таким образом, теперь разработчики могут писать unsafe extern. Преимуществом этого является то, что элементы внутри блока unsafe extern могут быть помечены как безопасные для использования.
Некоторые атрибуты Rust, такие как no-mangle, могут быть использованы для того, чтобы вызвать неопределенное поведение без какого-либо опасного блока. Если бы это был обычный код, то требовалось бы помещать их в небезопасный блок {}, но до сих пор атрибуты не имели сопоставимого синтаксиса. Чтобы отразить, что эти атрибуты могут подорвать гарантии безопасности Rust, теперь они считаются «небезопасными» и должны быть написаны следующим образом: #unsafe(no_mangle)] pub fn my global_function (){}
Шаблоны, соответствующие пустым типам, теперь можно опускать.
Rust 1.82 стандартизирует набор правил для поведения значений NaN (не число).
Операнд const в сборке теперь позволяет использовать целые числа в качестве непосредственных без предварительного хранения в регистре.