Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
У типа строки появился метод копирования в неё значения той же длины. Это аналог уже существующего метода для срезов.
В модуле ячеек памяти появилась вариация изменяемой ячейки, в которой время жизни вложенного значения считается сокращённым. Методы возвращают сырой ненулевой указатель вместо ссылки.
Две правки в relibc починили connect для unix-сокетов: вызов перестал зависать при относительном пути и стал работать для сокетов, созданных вне корневой файловой системы.
В relibc исправлена ошибка безопасности в openat: сбой раскрутки стека приводил к аварийному завершению программы. Правка касается обработки исключений при разборе аргументов вызова.
Две правки устранили зависания и падения вокруг poll в Redox: переполнение размера очереди в событиях и каналах в ядре, а также аварийное завершение в самом poll при истечении таймаута.
Трейт генератора случайных чисел реализован для ссылок на генераторы и для изменяемых ссылок. Помечено как нестабильное.
В динамическом линкере Redox исправлен порядок релокаций PLT: они теперь выполняются до проверки, принадлежит ли символ самому загружаемому объекту. Из-за прежнего порядка динамически связанные программы могли получать неверные адреса.
В ядре Redox исправлено использование futex в разделяемой памяти: страницы copy-on-write теперь корректируются до трансляции адресов. Из-за прежнего порядка синхронизация в процессах, разделяющих память, работала неверно.
У очереди на обоих концах появился метод, оставляющий только элементы заданного диапазона позиций. Пока помечен как нестабильный.
На страницах крейтов в crates.io появилась вкладка с исходным кодом. Через неё можно смотреть содержимое конкретной опубликованной версии прямо на сайте — то есть ровно те файлы, которые Cargo скачает при добавлении зависимости.
Появился маркерный трейт, который делает аллокатор пригодным для назначения глобальным. Реализации стандартного трейта для таких типов появились автоматически.
Схемы serio, irq и display.vesa стали недоступны непривилегированным пользователям. Программы, полагавшиеся на прямой доступ к последовательному порту, линиям прерываний и кадровому буферу VGA, теперь получат отказ.
У символа появился метод получения его кодового значения как беззнакового числа. Раньше для этого использовалось приведение к целому типу.
У очереди на обоих концах появилась обрезка с начала до заданной длины. Метод стабилен и работает за постоянное время для простых типов элементов.
В relibc появились реализации tcdrain, tcflow и tcsendbreak — трёх функций termios, которых на Redox до этого не было. Программы на Rust, работающие с последовательным портом или псевдотерминалом, получают полный набор управления потоком.