Новости
Значительные события: релизы, анонсы компаний, RFC, инженерные события вокруг Rust.
Грегори Курцер, основатель дистрибутивов CentOS и Rocky Linux, представил проект Ginux — ядро операционной системы на Rust, нацеленное на совместимость с ядром Linux. Опубликованный исследовательский прототип уже загружает системное окружение Alpine с BusyBox и Rocky Linux 10 с systemd в многопользовательском консольном режиме. Код распространяется под Apache 2.0, поддерживается x86-64.
Команда Redox подвела итоги работы над поддержкой кольцевых буферов на уровне системных задач — первого шага к общению между приложением и большинством системных служб через кольцевые буферы, по образцу io_uring. Работа завершена в сентябре.
В системный менеджер systemd принято изменение, добавляющее возможность создавать компоненты на языке Rust. Rust намерены использовать только для новых компонентов — существующий код на C переписывать не планируют. Пакетный менеджер cargo в сборке не применяется, остаётся только система Meson. Rust-код идёт в режиме no_std: разрешены лишь core, alloc и libc.
Rust 1.99.1 — точечный выпуск с исправлением регрессий предыдущих версий. Обновление ставится штатно: rustup update stable. Исправлено три регрессии.
Вышел выпуск Asterinas 0.19 — ядра, написанного на Rust и предоставляющего ABI, совместимый с ядром Linux, поэтому его можно применять вместо Linux без пересборки приложений. Проект развивается с 2022 года под лицензией MPL; параллельно развивается дистрибутив Asterinas NixOS. Выпуск — 13 октября 2026 года.
Принят RFC 3983, добавляющий в стандартную библиотеку тип f16b для 16-битного формата Brain Floating Point (bfloat16): знак, 8 бит экспоненты и 7 бит мантиссы. Поначалу тип предназначен для хранения, SIMD и FFI — скалярная арифметика не входит в первую версию.
В Rust 1.100.0 цели для 32-битной Windows теряют инструменты для собственной сборки. Сборка стандартной библиотеки продолжит поставляться и проверяться в CI, но компилятор под эти цели выпускаться не будет: собирать придётся кросс-компиляцией с 64-битной Windows.
Вышел Rust 1.99.0. Главное в релизе — язык научился объявлять функции с переменным числом аргументов в интерфейсе C и C-unwind: их больше не нужно писать на ассемблере. Также стабилизированы способы узнать размер и выравнивание значения по сырому указателю.
В ядре Redox реализована техника прямого переключения контекста: когда приложение вызывает системную службу, планировщик пропускается, если это возможно. Планировщик в Redox использует BTreeMap для приоритизации процессов, и эта структура достаточно дорога. Обход планировщика в типовых случаях снизил задержку межпроцессного взаимодействия на 24% и ускорил ввод-вывод на 5% при малых буферах.
Джереми Соллер и bjorn3 реализовали поддержку горячего подключения внешних дисплеев в драйвере Intel GPU для поколения Tiger Lake. Многие ноутбуки и десктопы с графикой Intel теперь могут подключать внешние мониторы без перезагрузки системы. По умолчанию Orbital расширяет рабочий стол на все подключённые дисплеи.
Ван Мубарок реализовал в Redox обработку страницочных ошибок, что позволяет корректно обрабатывать падения программ с помощью POSIX-сигналов. Сразу после реализации возможность была использована, чтобы обнаружить и исправить поддержку JIT в LLVM и других компиляторах, вызванную неверным вычислением инициализации TLS.
В сентябрьской сводке Redox отмечено несколько инфраструктурных улучшений сразу.
В сводке Redox за сентябрь — два изменения, упрощающих жизнь приложений.
Cloudflare открыла первый публичный экспериментальный предпросмотр поддержки таргета wasm32-unknown-emscripten в wasm-bindgen. Это снимает ограничение на крейты, которым был нужен C, и позволяет запускать на Workers нативные приложения на Tokio — вплоть до Minecraft-сервера внутри Durable Object.
В конфигурацию Cargo добавлены build.profile и install.profile. Первый позволяет перейти на профиль debug по умолчанию, второй — задать отдельный профиль для устанавливаемых инструментов, не влияя на остальную разработку.