Логотип

Вышла версия Rust 1.91.1 с двумя исправлениями критических ошибок

Вышла версия Rust 1.91.1 с двумя исправлениями критических ошибок

Команда Rust выпустила важное точечное обновление: Rust 1.91.1. Несмотря на то, что это точечное обновление, в Rust 1.91.1 исправлены две серьёзные проблемы, которые появились в предыдущей версии 1.91.0.

Если вы используете Rust, вам обязательно нужно обновиться прямо сейчас! Для начала давайте обсудим основные исправления в этой новой версии.

 

Два ключевых исправления в Rust 1.91.1

В Rust 1.91.1 исправлены две конкретные регрессии, появившиеся в версии 1.91.0.

1. Устранение сбоев Wasm и незаметного повреждения

В Rust 1.91.1 исправлена серьёзная проблема, затрагивающая цели WebAssembly (Wasm).

Целевые объекты Wasm отличаются от большинства целевых объектов Rust. Стандартные целевые объекты Rust обычно идентифицируют символы только по их имени, но Wasm идентифицирует их как по имени символа, так и по имени модуля Wasm. Люди используют атрибут #[link(wasm_import_module)] для настройки имени модуля Wasm, на который указывает блок extern.

 

Например, пользователь может написать такой код:

#[link(wasm_import_module = "hello")] extern "C" { pub fn world(); }

 

Однако предыдущая версия 1.91.0 привела к регрессу в работе этого атрибута. Следовательно, если пользователь импортировал одно и то же имя символа из двух разных модулей Wasm в нескольких модулях Rust, возникали проблемы. Эта ошибка приводила к сбоям компоновщика во время компиляции, часто с сообщением об ошибке «несоответствие модуля импорта».

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

Читать  Вышла версия Wine 10.17 с EGL-рендерером по умолчанию и обновлённым Mono Engine

Таким образом, в Rust 1.91.1 исправлена эта критическая ошибка, и ваши сборки Wasm снова стали надёжными.

 

2. Исправление блокировки Cargo в системе illumos

В этом новом выпуске также устранена ошибка, связанная с целевой операционной системой illumos.

Инструмент сборки Cargo блокирует каталог target/ во время сборки. Cargo делает это, чтобы разные параллельные процессы сборки не мешали друг другу. Если файловая система (например, некоторые сетевые файловые системы) не поддерживает блокировку, ОС возвращает Unsupported ошибку, и Cargo продолжает работу без блокировки.

В Cargo 1.91.0 изменился способ блокировки. Теперь используется метод File::lock стандартной библиотеки, который был стабилизирован в Rust 1.89.0. Однако из-за недосмотра метод File::lock всегда возвращал Unsupported именно на цели illumos.

Таким образом, Cargo никогда не блокировал каталог сборки на illumos, независимо от того, поддерживала ли файловая система блокировку или нет.

В Rust 1.91.1 исправлена эта ошибка в стандартной библиотеке. Исправление позволяет использовать семейство функций File::lock в illumos. Это действие косвенно устраняет регрессию Cargo для пользователей illumos.

 

Как установить Rust 1.91.1 уже сегодня!

Установить последнюю версию очень просто, если вы уже используете rustuprustup — это инструмент, который помогает управлять установкой Rust.

Чтобы обновить текущую версию, просто выполните эту команду в терминале:

rustup update stable

 

Читать  Firefox добавляет Google Lens, биржевые данные и функции искусственного интеллекта «Page Buddy»

Если вы ранее установили rustup, то при запуске rustup update обновится вся ваша установка.

Если у вас нет Rust, выполните следующую команду в Unix-подобных системах (например, macOS, Linux или Windows Subsystem for Linux), чтобы установить его:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала