Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
Форматирование чисел в printf в relibc научилось понимать long double. Раньше значения повышенной точности выводились неверно.
Набор тестов os-test впервые отработал на нескольких ядрах QEMU без единого зависания. Раньше многопроцессорная конфигурация стабильно выявляла ошибки ядра.
Сборка компилятора Rust на Redox переведена на штатные рецепты Cookbook. Это дало кэширование через sccache, линковку с разделяемыми библиотеками LLVM вместо статической, а также rustdoc и линкер rust-lld на самой Redox.
В relibc реализована побайтовая блокировка файлов: семейство F_SETLK и F_SETLKW, а также открытые дескрипторные F_OFD_SETLK и F_OFD_GETLK, которые не снимаются при закрытии дескриптора и не конфликтуют после fork.
У вектора появились варианты сжатия памяти, которые возвращают ошибку вместо аварийного завершения. Пока помечены как нестабильные.
Файловая система RedoxFS научилась корректно разбирать относительные пути, включая переход вверх по дереву каталогов. Раньше такие пути разрешались неверно.
В ядре Redox устранена порча данных при перемаппинге анонимной памяти с правом записи: обработчик помечал страницы доступными на запись, не выполняя copy-on-write для приватной памяти.
Загрузка динамических библиотек в relibc сделана независимой от адреса: базовый адрес образа стал частью e_entry, а для исполняемых файлов введён режим FIXED_NOREPLACE и обновлена нижняя граница отображений памяти.
Демон разделяемой памяти Redox теперь выделяет сегмент даже тогда, когда в физической памяти нет одного непрерывного свободного куска нужного размера. Раньше такая попытка заканчивалась отказом.
Для всех типов с плавающей точкой добавлены две константы: наибольшее и наименьшее целое значения, представимые точно.
В наборе внутренних операций появилось умножение без переносов: перемножение многочленов по модулю два. Пока помечено как нестабильное.
Вышел точечный релиз Rust 1.93.1 с исправлением трёх регрессий, внесённых в 1.93.0. Первая приводила к падению самого компилятора и особенно мешала rustfmt.
У кучи появился способ создать её из данных, уже расположенных в нужном порядке, без затрат на перестроение. Пока помечен как нестабильный.
В relibc приведены в соответствие со спецификацией несколько типов: исправлена раскладка sched_param, timespec стал экспортироваться с правильным time_t, починен тип размера блока, добавлен предел PTHREAD_STACK_MIN.
В верхний уровень модуля путей вынесены методы нормализации пути. Они работают без обращения к диску и не разыменовывают символические ссылки.