Релиз Rust 1.98.0

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

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев