Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
У целочисленных типов появились методы расширения и усечения до другой разрядности. Приведение по умолчанию и явное преобразование теперь различаются в сигнатуре метода.
Принят RFC, определяющий, как компилятор применяет смягчающие преобразования при взаимодействии с C-кодом.
Динамический линкер relibc научился хранить уже загруженные исполняемые файлы в сегменте общей памяти. При повторном запуске программа берётся из кэша, и инициализация GCC на Redox сокращается примерно вдвое.
В relibc реализованы pthread_rwlock_clockrdlock и pthread_rwlock_clockwrlock, а обработка таймаутов в блокировках чтения-записи переведена на часы реального времени вместо системного времени процесса.
Вышел точечный релиз Rust 1.94.1 с исправлением трёх регрессий 1.94.0, среди которых — ошибка проверки сертификатов на FreeBSD и обновление стороннего крейта, закрывающее две уязвимости.
В relibc реализован recvmsg — приём данных вместе со служебными сведениями, включая адрес отправителя и дескрипторы. recvfrom переписан через него, и зависание в нём устранено.
Добавлен набор операций для работы с титульным регистром: преобразование в эту форму и обратно, для строк и символов. Пока помечены как нестабильные.
У отправителя и получателя каналов появилась проверка, жив ли ещё собеседник. Для канала с общей памятью она сразу стабильна, для обычного — пока за флагом.
Принят RFC с атрибутом export_ordinal(n).
При публикации пакета из воркспейса с циклическими зависимостями сборщик теперь сразу выдаёт понятную ошибку. Раньше попытка молча зависала.
Команда Cargo приглашает попробовать nightly-флаг cargo -Zbuild-dir-new-layout и сообщить о проблемах. Раскладка каталога сборки внутренняя, но многие проекты вынужденно опираются на её недокументированные детали. Crater-прогон уже прошёл, однако нужна помощь в поиске инструментов и процессов, завязанных на старую раскладку.
В ядре Redox создание и уничтожение контекстов CPU разрешено из нескольких потоков одновременно. Это убрало зависания при переключении контекста и снизило конкуренцию за блокировку.
Сборщик пакетов начал сообщать терминалу о ходе сборки через стандартную последовательность, которую терминал показывает в виде индикатора на вкладке. Работает в Ptyxis версии 48 и новее.
В ядре Redox добавлен счётчик спин-блокировок с порогом срабатывания: при его превышении ядро останавливается, и висящий участок кода можно поймать сразу. Параллельно упорядоченные блокировки расставлены почти везде, где используются мьютексы и блокировки чтения-записи.
Проверка неиспользуемых зависимостей больше не сообщает о крейтах стандартной библиотеки, которые передаются автоматически. Раньше это давало ложные предупреждения в каждом проекте, собирающем стандартную библиотеку вручную.