=== Поддержка Rust в ядре (Kernel Rust Support) Ссылки: + link:https://github.com/ayrtonm/freebsd-kpi-rs[Репозиторий KPI для Rust] URL: link:https://github.com/ayrtonm/freebsd-kpi-rs[] + link:https://github.com/ayrtonm/freebsd-src/tree/virtio_snd[Звуковой драйвер virtio на Rust] URL: link:https://github.com/ayrtonm/freebsd-src/tree/virtio_snd[] Контакт: Ayrton Muñoz Я занимаюсь добавлением поддержки использования Rust в ядре и написания драйверов устройств на нём. Rust — хороший инструмент для того, чтобы взять существующие правила использования указателей и обеспечить их соблюдение с помощью системы типов. Эти правила часто неявны в C, что означает дополнительную умственную нагрузку для разработчиков. Rust не предотвратит каждую ошибку, но позволяет разработчикам избегать некоторых из них и больше сосредотачиваться на реализации интересующей их функциональности. KPI для Rust в настоящее время находятся в разработке и не очень стабильны, но нет зависимости от более широкой экосистемы Rust или нестабильных языковых функций/API. Это означает, что в конечном итоге они смогут обеспечивать такую же стабильность, как и эквивалентные KPI на C, а обновление до более новых инструментальных цепочек Rust не должно приводить к ошибкам. Это также обеспечивает такую же прозрачность, как и C, в отношении того, когда происходят выделения памяти, поскольку используется невыделяющее подмножество link:https://doc.rust-lang.org/core/[стандартной библиотеки Rust]. Различные подсистемы ядра потребуют оберток на Rust, но они могут быть построены на основе базовой функциональности, предоставляемой в репозитории KPI для Rust. Я экспериментировал с этим время от времени с конца 2024 года, и разработка в основном происходит в моём репозитории KPI для Rust. Этот репозиторий также содержит make-файлы и корректировки для интеграции с man:config[8]/системой сборки. Самый простой драйвер для разработчиков, чтобы собрать и попробовать самим, — это мой link:https://github.com/ayrtonm/freebsd-src/tree/virtio_snd[звуковой драйвер virtio]. Некоторые интерфейсы, которые он использует, находятся в стадии изменения, но драйвер достаточно функционален для воспроизведения музыки в link:https://www.qemu.org/docs/master/system/devices/virtio/virtio-snd.html[QEMU]. Эта ветка также включает обертки на Rust, которые могут быть повторно использованы для других устройств virtio или звуковых/PCM драйверов. В настоящее время поддерживаются только x86-64 и aarch64. Другие архитектуры, поддерживаемые LLVM, могут быть добавлены, если будет интерес, но я хотел изначально сосредоточиться лишь на нескольких вариантах использования. Помимо QEMU, я также тестировал драйверы на Rust на оборудовании с некоторыми драйверами для link:https://github.com/ayrtonm/freebsd-src/tree/apple[ARM64 машин Apple]. Это был первоначальный вариант использования и включает в себя взятие некоторых незавершённых драйверов, с которыми я начал помогать в 2024 году, и портирование новых частей (greenfield parts) на Rust. Это в основном низкоуровневые драйверы, но также включает драйвер HID DockChannel для клавиатуры на MacBook M2. В какой-то момент в начале 2026 года KPI для Rust должны стать достаточно стабильными, чтобы заинтересованные разработчики могли попробовать писать с их помощью новый код. Они не будут идеальными, но я хочу убедиться, что они работают примерно так, как ожидают существующие драйверы, а также соответствуют ожиданиям разработчиков на Rust, прежде чем запрашивать тестирование. Надеюсь, драйверы для Apple также снова достигнут паритета с первоначальной незавершённой версией на C в первой половине 2026 года. // // The FreeBSD Russian Documentation Project // // Original EN revision (10.01.2026): a27569e15a1f400e2913829fb0cae2b98642cc1e //