Мининовости
Мелкие изменения: стабилизация API, новые методы и impl, правки Cargo.
Стабилизирован признак vector для платформы s390x и макрос обнаружения таких инструкций. Название платформы намекает на происхождение: это архитектура мейнфреймов IBM.
Обработчик события в ядре Redox теперь может зарегистрировать новое событие в той же очереди, из которой его вызвали. Это снимает ограничение, на которое упирался асинхронный код.
На Redox портирован пример композитора Smallvil из фреймворка Smithay — набора крейтов для Wayland, написанных на Rust, — а также GTK3 с Wayland-бэкендом. Производительность пока недостаточная.
У VecDeque появился метод extract_if: он удаляет элементы, удовлетворяющие условию, и позволяет прервать обход. Для вектора и хеш-коллекций такой метод давно был стабилен, для очереди на обоих концах — нет.
У VecDeque появились методы, копирующие часть самой очереди в её конец или в её начало. Промежуточный срез при этом не создаётся.
В upstream Rust 32-битные цели для x86 переименованы из i686 в i586, потому что в реальном мире встречаются процессоры без инструкций, появившихся в Pentium Pro. Redox обновила цель, систему сборки и документацию.
Браузерный движок Servo, написанный на Rust, запущен на Redox. Пока он падает при открытии второго сайта и не реагирует на ввод с клавиатуры, но сам факт запуска — проверка всей системы на прочность.
Скрипты системы пакетов Redox Cookbook переписаны с командной оболочки на Rust. Появился терминальный интерфейс для наблюдения за сборкой, возможность пропустить, повторить или отменить рецепт при ошибке и параллельная загрузка исходников.
9 сентября принят RFC 3849 с целями проекта на вторую половину 2025 года. Впервые вместо отдельных целей выделены четыре флагманские темы, каждая покрывает группу более частных задач. Ничего из перечисленного не работает в стабильной версии сегодня — это карта ближайших изменений.
Бэкенд git, работающий через внешнюю команду git, научился делать поверхностную загрузку. То есть он забирает только последний коммит, а не всю историю.
На Redox портирован rustysd — портативный менеджер сервисов, написанный на Rust и понимающий systemd-подобные файлы конфигурации. В варианте server-demo через него при загрузке стартуют nginx и демон OpenSSH.
Сервис документации crates.io сменил список платформ по умолчанию. Вместо x86_64-apple-darwin теперь используется aarch64-apple-darwin, а вместо i686-unknown-linux-gnu — aarch64-unknown-linux-gnu.
В cargo tree опция --depth public заменена на --edges public. Фильтр стал работать по публичности рёбер дерева зависимостей, а не по глубине.
При добавлении зависимости cargo add теперь учитывает публичные зависимости уже присутствующих в проекте крейтов. Если вы зависите от foo, а foo публично зависит от bar 1.0, будет выбрана именно bar 1.0, даже если доступна bar 2.0.
У изменяемой ячейки Cell появился метод get_cloned: он возвращает копию содержимого даже для типов, которые нельзя просто скопировать. Для этого введён отдельный типаж, задающий такое поведение.