12 октября 2023 года разработчики из Nginx и F5 представили открытый инструментарий ngx-rust. Проект позволяет создавать модули к http-серверу и многопротокольному прокси Nginx на языке программирования Rust. Исходный код ngx-rust выложен на GitHub под лицензией Apache License, проект находится в состоянии бета-версии.
По данным OpenNET, изначально инструментарий ngx-rust развивался как проект для форсирования разработки Istio-совместимого Service mesh для платформы Kubernetes, работающего поверх Nginx. Продукт не вышел за рамки прототипа и несколько лет находился в стагнации, но опубликованные в процессе создания прототипа примеры привязок были использованы сообществом в сторонних проектах (1, 2) для расширения возможностей Nginx с помощью языка Rust.
Позже в компании F5 (владелец Nginx) появилась необходимость в создании специализированного модуля к Nginx для защиты своих сервисов, в котором предполагалось использовать язык Rust для снижения риска ошибок при работе с памятью. Для решения задачи был привлечён автор ngx-rust, которому было поручено разработать новый и улучшенный инструментарий для создания модулей к Nginx на языке Rust.
В текущей версии инструментарий ngx-rust включает два крейт-пакета:
nginx-sys — генератор привязок на основе исходных текстов Nginx. Утилита загружает код Nginx и все связанные с ним зависимости, после чего использует bindgen для формирования обвязок над оригинальными функциями (FFI, foreign function interface);
ngx — прослойка для обращения к функциям на C из кода Rust, API и система реэкспорта обвязок, созданных при помощи nginx-sys.
Ранее технический директор Azure и разработчик ПО для Windows (SysInternals) Марк Руссинович сообщил, что запущен открытый проект по включению разработки драйверов для ОС Windows на базе языка программирования Rust. Проект получил название windows-drivers-rs и размещён на GitHub с открытыми лицензиями MIT и Apache.