
20 августа 2026 года состоялся релиз языка программирования Rust 1.98. Вклад в разработку этого обновления внесли 285 программистов со всего мира. Предыдущая стабильная версия решения состоялась в июле 2026 года. Версия проекта Rust 1.80 вышла в июле 2024 года. Релиз Rust 1.85.0 (Rust 2024) состоялся 20 февраля. Выпуск Rust 1.87.0 и празднование десяти лет после выхода Rust 1.0 произошло в мае 2025 года.
Текущий релиз включает в себя ряд стабилизированных API, доработанную стандартную библиотеку, в проекте добавлены средства контроля предупреждений Cargo и отображаются сообщения компоновщика.
Язык Rust сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
По информации OpenNET, основные изменения и дополнения в Rust 1.98 (Rust, Cargo и Clippy):
-
для типов с плавающей запятой f32 и f64 реализованы алгебраические методы для сложения, вычитания, умножения, деления и нахождения остатка, реализующие оптимизацию, похожую на опцию «‑ffast‑math» в компиляторах C/C++. Подобные методы допускают изменение порядка операций, когда это необходимо для оптимизаций, таких как векторизация циклов. Например, при вычислении «a + b + c + d» при использовании обычного сложения компилятор всегда выполнит вычисление в одном порядке «((a + b) + c) + d», а при использовании метода algebraic_add может сгруппировать выражение как «(a + b) + (c + d)» и выполнить «(a + b)» и «(c + d)» параллельно при помощи инструкций SIMD. Ценой применения алгебраических методов является недетерминированность результатов вычисления, которые могут меняться в пределах погрешности;
-
для всех примитивных целочисленных типов реализован встроенный метод «format_into» для преобразования чисел в строки, который может применяться вместо пакета itoa. В качестве параметра передаётся буфер NumBuffer, размер которого гарантированно достаточен для записи любого значения используемого типа в десятичном виде. На выходе возвращается отформатированная строка &str, время жизни которой привязано к буферу;
-
взаимодействие между обвязкой ManuallyDrop и умным указателем Box теперь не приводит к неопределённому поведению;
-
целевые платформы thumbv7a‑none‑eabi, thumbv7a‑none‑eabihf, thumbv7r‑none‑eabi, thumbv7r‑none‑eabihf и thumbv8r‑none‑eabihf переведены на второй уровень поддержки, который подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора;
-
добавлена поддержка платформ powerpc64-unknown‑linux‑gnuelfv2 и aarch64-unknown‑linux‑pauthtest, для которых обеспечен третий уровень поддержки. Третий уровень охватывает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода;
-
в разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
-
str::substr_range -
[T]::subslice_range -
core::fmt::NumBuffer -
::format_into -
Send/Sync for std::process::CommandArgs -
{fN}::algebraic_add -
{fN}::algebraic_sub -
{fN}::algebraic_mul -
{fN}::algebraic_div -
{fN}::algebraic_rem -
NonZero::from_str_radix -
String::from_utf16le -
String::from_utf16le_lossy -
String::from_utf16be -
String::from_utf16be_lossy -
[T]::strip_circumfix -
str::strip_circumfix -
Atomic::from_mut -
Atomic::get_mut_slice -
Atomic::from_mut_slice -
std::range::legacy
-
Источник: habr.com