Rust 1.98.0: алгебраические операции для чисел с плавающей точкой
20.08.2026Вышел Rust 1.98.0. У типов f32 и f64 появились методы, разрешающие компилятору перегруппировывать вычисления по правилам вещественных чисел. Целочисленные типы получили форматирование без промежуточного выделения памяти.
Алгебраические методы
Методы сложения, вычитания, умножения, деления и остатка разрешают компилятору применять алгебраические свойства вещественных чисел — переставлять слагаемые, группировать, — хотя для чисел с плавающей точкой эти свойства выполняются не всегда.
Это даёт переупорядочивание сумм и более широкую векторизацию циклов. Результаты при этом недетерминированы: компилятор вправе выбрать разные варианты. Но неопределённого поведения не возникает — перестановка операций не выходит за пределы того, что компилятор и так делает с целыми.
Где это применять, а где нет
Осознанный размен: выигрыш в скорости за счёт отказа от строгих правил IEEE 754.
Применять стоит там, где погрешность допустима. В денежных расчётах и вообще там, где важна точность, — нельзя: суммы будут считаться иначе, чем ожидает разработчик, и результат перестанет быть воспроизводимым при изменении порядка компиляции.
Форматирование без выделения памяти
Все целочисленные типы получили метод format_into, принимающий буфер, заведомо достаточный для десятичной записи любого значения типа. Замеры показывают скорость, сопоставимую с популярным сторонним крейтом для преобразования чисел, — то есть от него можно отказаться.
Это снимает зависимость в горячих участках кода.
Гарантия для ManuallyDrop
Документация ManuallyDrop теперь гарантирует, что перемещение значения после явного освобождения не является неопределённым поведением. Дефект был начиная с 1.96, там его починили, а теперь зафиксировали как стабильную гарантию.
Заодно стабилизированы: границы подсрезов по индексам для строк и массивов, признаки перемещения и синхронизации для аргументов запускаемой программы, преобразование строк из UTF-16 с потерями и без, методы доступа к изменяемой части атомарных значений и снятие обрамляющих символов со строк.
Оригинал
Announcing Rust 1.98.0 от 20 августа 2026 года
Упоминаний: 1 · Просмотров: 5