Новости
Значительные события: релизы, анонсы компаний, RFC, инженерные события вокруг Rust.
Открыт RFC, разрешающий в предикатах cfg операции &&, || и !.
Rust 1.85.1 исправляет ошибку, из-за которой в стабильной редакции 2024 совместная компиляция doctest не работала как задумано: rustdoc из-за внутренних ошибок стабильности фич откатывался к «необъединённому» методу, как в прошлых редакциях. Теперь ускорение совместной компиляции doctest работает как задумано.
Ron Williams улучшил системный вызов nanosleep: теперь он возвращает оставшееся время после программного прерывания. В RedoxFS James Matlik исправил утечку узла дерева при удалении файла. В драйверах Alice Shelton исправила инициализацию Intel HD Audio и поддержку тачпадов PS/2 на части ноутбуков.
4lDO2 заменил вызов close() схемы односторонним сообщением и добавил ресурс /sys/fdstat, показывающий долю файловых дескрипторов, разделяемых между процессами. Vincent Berthier добавил /sys/stat — аналог /proc/stat.
Открыт RFC с оператором <=> — «spaceship», — возвращающим результат трёхсравнения.
Редакция Rust 2024 стабильна — вместе с Rust 1.85.0. Это крупнейшая выпущенная редакция: механизм opt-in-изменений, которые иначе ломали бы обратную совместимость. Среди изменений — новые правила захвата времени жизни в RPIT (impl Trait), изменения в unsafe-атрибутах и другое; подробности — в edition guide и инструкции по миграции.
Anhad Singh разбирает, как система загружает и запускает программу (на примере grep и COSMIC Terminal) и чем Redox в этом отличается от Linux. В рамках проекта он починил и улучшил динамический линкер Redox, добавил поддержку динамической линковки в систему сборки и перевёл часть пакетов на динамическую линковку.
Открыт RFC о safe-блоках — конструкции, обратной unsafe.
Jeremy Soller портировал на Redox игровой движок LOVE. Для этого потребовалось портировать библиотеки libmodplug, libtheora и openal-soft и поправить функции в relibc. На Redox запущена игра Balatro.
Anhad Singh сделал динамическую линковку методом сборки по умолчанию для многих рецептов, а новые порты могут задействовать её с небольшими усилиями.
Rust 1.84.1 исправляет несколько регрессий 1.84.0: падение (ICE) в диагностике дублирующихся крейтов, ошибки при пересекающихся impl при инкрементальной пересборке, медленную компиляцию из-за trait solver нового поколения и отладочную информацию при превышении лимита дискриминаторов LLVM.
Очередная редакция, Rust 2024, вошла в beta-канал. В нём она пробудет до 2025-02-20, когда вместе с Rust 1.85 выйдет стабильной.
Принят RFC, разрешающий неоднозначность при поиске методов: если два трейта объявляют одноимённый метод и один является подтрейтом другого, выбирается метод подтрейта вместо ошибки.
В Rust 1.84.0 стабилизирован резолвер зависимостей Cargo с учётом минимальной поддерживаемой версии Rust (MSRV): он предпочитает версии зависимостей, совместимые с заявленным MSRV проекта, избавляя мейнтейнеров от ручного подбора старых версий. Включается в .cargo/config.toml: [resolver] incompatible-rust-versions = "fallback".
В рамках летнего проекта Anhad Singh динамическая линковка на Redox продвинулась: GCC, GNU Binutils, GNU Make и GNU Bash успешно собраны как динамически линкуемые программы, а для тройки Redox реализована поддержка динамической линковки в GCC.