Недавно появилась информация о проекте Kerla, который разрабатывается как ядро операционной системы, написанное на языке Rust. Код распространяется под лицензиями Apache 2.0 и MIT. Проект разрабатывает японский разработчик Сейя Нута, известный создателем микроядерной операционной системы Resea, написанной на языке C.
Новое ядро изначально нацелено на обеспечить совместимость с ядром Linux на уровне ABI, что позволит немодифицированным двоичным файлам, созданным для Linux, работать в среде на основе Kerla.
О Керале
Kerla - это монолитное ядро операционной системы. создан с нуля на Rust. На текущем этапе разработки Kerla может работать только в системах с архитектурой x86_64 и реализует базовые системные вызовы, такие как write, stat, mmap, pipe и poll, поддерживает сигналы, безымянные каналы и переключение контекста. Такие вызовы, как fork, wait4 и execve, обеспечивают управление процессами. Есть поддержка tty и псевдотерминалов (pty). Среди файловых систем initramfs (используемых для монтирования корневой файловой системы) по-прежнему поддерживаются tmpfs и devfs.
Также предоставляется сетевой стек с поддержкой сокетов TCP и UDP, на основе библиотеки smoltcp. Разработчик подготовил загрузочную среду, которая работает в QEMU или Firecracker VM с контроллером virtio-net, к которому уже можно подключиться по SSH. Musl используется как системная библиотека, а BusyBox - как пользовательская утилита.. На основе Docker подготовлена система сборки, позволяющая создавать собственные загрузочные initramfs с ядром Kerla.
Пока что было предоставлено мало подробностей о его новом ядре, но больше всего внимания к функциям Kerla привлекает тот факт, что оно написано на Rust. Так есть ли преимущества у написания его на Rust перед другими языками или существующим кодом? Многие ответили утвердительно на этот вопрос, подчеркнув преимущества языка, обеспечивающие безопасность памяти.
Он также предоставляется при оценке точности доступа к памяти во время выполнения. Более того, Mozilla считает, что Rust предлагает защиту от целочисленных переполнений., требует обязательной инициализации значений переменных перед использованием, по умолчанию принимает концепцию ссылок и неизменяемых переменных, предлагает строгую статическую типизацию для минимизации логических ошибок и упрощает обработку ввода за счет сопоставления шаблонов.
Среди преимуществ выделим интегрированные инструменты для оценки качества кода. и создание модульных тестов, которые можно запускать не только на реальном оборудовании, но и на QEMU. По сути, Mozilla считает, что Rust легче отлаживать, поскольку компилятор отклоняет ошибки. Однако бухты указали на некоторые недостатки Rust.
«Как и в случае с C ++, почти невозможно написать идиоматический Rust без использования шаблонов, поэтому он имеет раздутые двоичные файлы и медленное время компиляции. Все эти проверки во время компиляции также имеют свою цену. Кроме того, если вы что-то переписываете, вы теряете старую зрелую кодовую базу, и вы не можете создать кодовую базу аналогичного качества за разумный промежуток времени; гораздо лучше расширить, чем переписать программу на Rust. Лучше расширить программу, чем переписывать ее на Rust », - говорит инженер-программист.
По словам его создателя, именно по этой причине разработчики Linux, в частности, сам Линус Торвальдс, они отвергли идею переписать все ядро на Rust.
«Поработайте над созданием безопасных ссылок, затем напишите дополнительный код на Rust, и вы все равно сможете наслаждаться этим зрелым кодом. (Это то, что делает Linux, есть попытки добавить возможность писать модуль ядра на Rust) », - добавил он. Разработчики Linux изучали возможности написания определенных новых модулей ядра с использованием языка Rust около трех лет. Это привело к созданию проекта «Rust для Linux».
Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.