Rust 1.98.0: алгебраические методы для f32,f64, исправление взаимодействия между ManuallyDrop и Box
RustLangRu 52 минуты назад Rust 1.98.0: алгебраические методы для f32,f64, исправление взаимодействия между ManuallyDrop и Box 3 мин 1.7K Программирование * Системное программирование * Open source * Rust * Компиляторы...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Вот важная новость с фронта ИИ: RustLangRu 52 минуты назад Rust 1. 0: алгебраические методы для f32,f64, исправление взаимодействия между ManuallyDrop и Box 3 мин 1. 7K Программирование * Системное программирование * Open source * Rust * Компиляторы * Дайджест Перевод Автор оригинала: The Rust Release Team Команда Rust рада объявить о выходе новой версии Rust — 1.
Rust — это язык программирования, который помогает каждому создавать надёжное и эффективное программное обеспечение. Если у вас уже установлена предыдущая версия Rust через rustup, вы можете получить 1. 0 командой:$ rustup update stable Если Rust ещё не установлен, вы можете получить rustup на соответствующей странице нашего сайта и ознакомиться с подробными release notes для 1.
Технические детали
Если вы хотите помочь нам, тестируя будущие релизы, рассмотрите возможность переключиться локально на beta-канал (rustup default beta) или nightly-канал (rustup default nightly). Пожалуйста, сообщайте о любых обнаруженных ошибках! Что нового в stable 1.
0Алгебраические методы для чисел с плавающей точкойТипы с плавающей точкой f32 и f64 теперь имеют «алгебраические» методы для сложения, вычитания, умножения, деления и взятия остатка. Они позволяют оптимизировать эти операции, используя алгебраические свойства действительных чисел, хотя эти свойства не выполняются с учётом ограничений представления чисел с плавающей точкой. Точный набор оптимизаций не специфицирован, но может быть похож на оптимизации, которые вы видите с опцией -ffast-math в других языках.
Например, сложение чисел с плавающей точкой не ассоциативно, поэтому сумму вида a + b + c + d необходимо вычислять в левоассоциативном порядке, в котором она разобрана парсером, то есть ((a + b) + c) + d. Если записать ту же сумму как цепочку вызовов algebraic_add, компилятор может свободно менять порядок вычислений, например (a + b) + (c + d), чтобы вычислять частичные суммы одновременно. Использование этих алгебраических методов также часто включает более широкую векторизацию циклов.
Отраслевые последствия
Эти методы недетерминированы, поскольку компилятор может выбирать разные оптимизации, но они никогда не приводят к неопределённому поведению. в документации библиотеки и в исходном предложении об изменении API. Буферизованное форматирование целых чиселВсе примитивные целочисленные типы теперь имеют метод format_into, принимающий параметр &mut NumBuffer — буфер, достаточно большой для хранения десятичного представления любого значения этого типа.
Сам буфер непрозрачен, но метод возвращает отформатированную строку &str с временем жизни, заимствованным из этого буфера. Этот метод также обходит большую часть динамической диспетчеризации, которую вы получили бы при буферизованном форматировании через write! , что может существенно повысить производительность.
Репозиторий itoa-benchmark теперь показывает, что format_into работает сопоставимо с самим itoa, так что этот метод может служить стандартной заменой этой зависимости и подобных ей.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





