Новости
Значительные события: релизы, анонсы компаний, RFC, инженерные события вокруг Rust.
Microsoft официально присвоил Rust статус Tier-1 — одного из основных языков для внутренней разработки, наравне с C++, C# и TypeScript. Вместе с этим анонсирован rustc_codegen_utc — альтернативный бэкенд генерации кода для rustc, подключающий компилятор к бэкенду MSVC.
NVIDIA анонсировала инструментарий CUDA Rust для разработки ядер, выполняемых на GPU, на языке Rust. Предложены два инструмента, соответствующие двум моделям разработки параллельно исполняемых ядер.
Вышел точечный релиз Rust 1.98.1, исправляющий неопределённое поведение при генерации таблицы виртуальных методов.
Методы преобразования содержимого смарт-указателя получили стабильный статус. Раньше ими можно было пользоваться только в ночных сборках.
Ибики Омацу и Анхад Сингх реализовали Redox Rings — пользовательский API кольцевых буферов, соответствующий системным вызовам io_uring в Linux. По замерам автора, производительность ввода-вывода у драйвера NVMe, RedoxFS и RAMFS выросла в разы.
Вильдан Мубарок, изучая постепенную деградацию скорости компиляции через GCC, нашёл и исправил утечку памяти в ядре. Из-за неё набор тестов os-test компилировался от двух до десяти часов и завершался ошибкой нехватки памяти; после исправления — около 30 минут.
Риббон и Вильдан Мубарок подтвердили работу QEMU на Redox: серверный вариант проверен в терминальном режиме, настольный — вместе с графической оболочкой на GTK. Аппаратного ускорения пока нет, поэтому производительность может быть низкой.
Вильдан Мубарок доработал поддержку Linux в установщике Redox, чтобы систему можно было поставить в режиме двойной загрузки. В инструкции по установке описаны новые параметры графического установщика.
В Cargo появилась настройка, запрещающая подключать зависимости, опубликованные совсем недавно. Значение задаётся глобально и работает даже в общесистемной конфигурации.
Аадарш реализовал начальную поддержку неоднородной памяти NUMA: по умолчанию данные размещаются в ближайшем узле, а через API libredox появилась возможность менять политику размещения. Акшит Гаур добавил приоритеты процессов и настроил систему приоритетов, что улучшило общую производительность.
Таблица линтов в манифесте пакета и настройки линтов в конфигурации Cargo перестали быть экспериментальными.
Тип, который не имеет ни одного значения, стабилизирован. Написать такую функцию — то есть с результатом этого типа — теперь можно на обычной стабильной сборке.
Луис Фернандо Бешер де Арауджо реализовал поддержку нескольких ядер на AArch64/ARM64 вместе с набором сопутствующих исправлений. По словам автора, масштаб выигрыша в производительности ещё предстоит измерить.
Акшит Гаур перевёл Redox с алгоритма DWRR на EEVDF — тот же подход, которым Linux заменил свой прежний планировщик CFS. По замерам автора, справедливость распределения времени улучшилась в 782 раза, переключение контекста ускорилось на 82%, пропускная способность выросла в 2,6 раза.
В ночных сборках по умолчанию включено новое поколение решателя трейтов. Разработка шла почти четыре года, и это самое крупное единичное изменение компилятора с момента его появления.