Огляд нової версії Rust 1.98
Огляд нової версії Rust 1.98
Команда Rust оголосила про випуск Rust 1.98. Це остання стабільна версія популярної мови системного програмування. У ній з’являються нові алгебраїчні методи для роботи з плаваючою точкою. Також представлено швидше форматування цілих чисел у буферизованому режимі. Окрім того, є широкий вибір нових стабілізованих API стандартної бібліотеки.
Нові алгебраїчні методи для плаваючої точки
Одним із найзначніших додатків є нова група “алгебраїчних” методів для типів f32 та f64. Вони охоплюють операції додавання, віднімання, множення, ділення та обчислення залишку. Це дозволяє компілятору виконувати оптимізації, базуючись на алгебраїчних властивостях дійсних чисел. Навіть якщо ці властивості не зовсім дотримуються для представлень з плаваючою точкою.
Це дає компілятору більше свободи у перезамовленні операцій з плаваючими числами. Це може дозволити ширшу векторизацію циклів та інші оптимізації продуктивності. Команда Rust порівнює ці оптимізації з тими, що забезпечуються опціями на зразок -ffast-math в інших мовах. Хоча точний набір навмисно не вказується.
Метод форматування для цілих чисел
Rust 1.98 також представляє новий метод format_into для всіх примітивних типів цілих чисел. Цей метод працює з новим стабільним типом NumBuffer, який забезпечує достатньо місця для десяткового представлення будь-якого значення відповідного цілого типу. Результат форматування повертається у вигляді зрізу рядка, що запозичує з цього буфера.
Поліпшення взаємодії між ManuallyDrop та Box
Інша зміна стосується взаємодії між ManuallyDrop та Box. До версії Rust 1.96, переміщення ManuallyDrop<Box<_>> після явного видалення вкладеного Box могло призвести до невизначеної поведінки через проблему компілятора. Це було виправлено у Rust 1.96, а Rust 1.98 оновлює документацію ManuallyDrop, щоб гарантувати, що такий код більше не вважатиме невизначеним.
Нові можливості для обробки рядків
Обробка рядків також отримала кілька нововведень. Серед них String::from_utf16le, String::from_utf16be та їхні втрачені аналоги для перетворення даних UTF-16 в явному малому та великому порядку байтів. Новий метод strip_circumfix також був стабілізований для рядків і зрізів.
Для отримання додаткової інформації можна ознайомитися з анонсом. Як завжди, існуючі користувачі Rust можуть оновити версію через rustup, виконавши команду rustup update stable.




