Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
У смарт-указателей с подсчётом ссылок появился способ узнать число сильных ссылок прямо по сырому указателю — без того чтобы восстанавливать сам смарт-указатель.
У примитива однократного запуска появилась реализация стандартного трейта для значения по умолчанию.
У логического типа появился стабильный метод переключения значения на противоположное.
В ночных сборках включён эксперимент по перегрузке вызовов функций. Он снимает необходимость заворачивать аргументы перегруженной функции в кортеж.
На ночных сборках Cargo включает по умолчанию параметр, уменьшающий каталог сборки. Для крупных проектов разница заметная — у Cargo самого каталог в профиле выпуска сжимается примерно на треть.
Методы нахождения минимума и максимума в итераторе больше не реализованы через варианты «найти по ключу». Они вызывают переопределённые реализации сравнения, если тип их переопределяет.
У обоих видов отложенной инициализации появился конструктор, который сразу вызывает замыкание для создания значения. Раньше замыкание можно было передать только отдельно, вызвав конструктор без значения.
Реализовано предложение: начиная с редакции 2024 член воркспейса может переопределить признаки по умолчанию у зависимости, объявленной на уровне всего воркспейса.
В Cargo появился встроенный профиль отладочной сборки. Он концептуально наследует профиль разработки, но оформлен отдельным именем и выбирается явно.
Принято предложение, позволяющее крейту объявить, что его стоит собирать с оптимизацией по умолчанию. Проект, который использует этот крейт, может переопределить подсказку одной строкой.
Пять команд проекта приняли правила о том, как можно и нельзя использовать большие языковые модели при участии в репозитории компилятора. Это не официальная позиция проекта и правило действует не везде.
При проверке реализации трейта чтения из потоков теперь достаточно переопределить один метод из пары, а не оба. Компилятор проверяет это отдельной аннотацией и сам выдаёт понятное сообщение, если не реализован ни один.
Операции над атомарными типами стали константными. Тот же код с тем же типом теперь годится и для вычислений на этапе компиляции, и для работы во время выполнения.
Функция копирования данных между потоками ввода-вывода переехала из std в alloc. То есть она стала доступна в коде, работающем без стандартной библиотеки.
Система сборки Cookbook получила редактор рецептов в терминале с поддержкой мыши, поддержку зеркал бинарных пакетов, обновление всех собранных пакетов одной командой и выгрузку списка пакетов в CSV.