Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
В relibc реализован набор недостававших функций: fexecve, _Fork, timespec_get, timespec_getres, clock_getres, tcgetwinsize, tcgetsid и пределы POSIX.
В ядре Redox добавлен вызов syscall6 для системных вызовов с шестью аргументами. В тот же день появился unlinkat, а unlink и rmdir переписаны через него.
У типа SystemTime добавлены константы MIN и MAX — наименьшее и наибольшее представимые значения. Конкретные значения зависят от платформы.
Метод DropGuard::dismiss и связанные с ним реализации трейтов стали константными. То есть отменить регистрацию в guard теперь можно на этапе компиляции.
В файловой системе RedoxFS реализован флаг RENAME_NO_REPLACE: переименование, которое отказывается выполнять, если целевое имя уже занято. Это аналог Linux-флага с тем же именем.
cargo package --list больше не обращается к реестру для проверки прав публикации и не падает, если адрес реестра по умолчанию не задан в настройках пакета.
Появилась новая команда cargo report timings: она строит отчёт в виде веб-страницы по сохранённым логам сборки. Есть флаг --open, чтобы открыть результат в браузере.
Вышел Rust 1.92.0. Два изменения затрагивают поведение компилятора, а не API: линты о совместимости вперёд стали ошибкой компиляции, а таблицы раскрутки теперь генерируются даже при -Cpanic=abort.
В модуле core::hint появились четыре подсказки компилятору о предварительной загрузке: для чтения данных, для записи данных, для чтения инструкций и для записи инструкций.
Открыт RFC с безымянным вариантом перечисления — обобщением Option::None.
У вектора появился конструктор from_fn: он создаёт вектор заданной длины, вычисляя каждое значение замыканием по индексу.
У Option появился метод into_flat_iter: он превращает значение в итератор без вложенности. То есть итератор выдаёт не ссылку на Option, а непосредственно само значение.
С Rust 1.93 все платформы *-linux-musl будут поставляться с musl 1.2.5. Основная причина — крупные улучшения DNS-резолвера, но обновление содержит и ломающее изменение, задевающее крейт libc.
К существующему методу next_if_map добавлен next_if_map_mut — то же самое, но с изменяемой ссылкой на следующий элемент.
В системе сборки Redox появилась секция необязательных компонентов пакета: одна конфигурация может собираться в несколько вариантов. В примере базовый пакет компилятора ужался с 892 МБ до 597 МБ, когда из него убрали поддержку C++.