ngx-rust, позволяющий создавать модули к http-серверу и многопротокольному прокси NGINX на языке программирования Rust. Код ngx-rust распространяется под лицензией Apache 2.0 и пока находится в состоянии бета-версии.
Изначально инструментарий развивался как проект для форсирования разработки Istio-совместимого Service mesh для платформы Kubernetes, работающего поверх NGINX. Продукт не вышел за рамки прототипа и несколько лет находился в стагнации, но опубликованные в процессе создания прототипа примеры привязок были использованы сообществом в сторонних проектах для расширения возможностей NGINX на языке Rust.
Через какое-то время компании F5 потребовалось написание специализированного модуля к NGINX для защиты своих сервисов, в котором хотелось использовать язык Rust для снижения риска ошибок при работе с памятью. Для решения задачи был привлечён автор ngx-rust, которому было поручено разработать новый и улучшенный инструментарий для создания модулей к NGINX на языке Rust.
Инструментарий включает два crate-пакета:
- nginx-sys — генератор привязок на основе исходных текстов NGINX. Утилита загружает код NGINX и все связанные с ним зависимости, после чего использует bindgen для формирования обвязок над оригинальными функциями (FFI, foreign function interface).
- ngx — прослойка для обращения к Си-функциям из кода Rust, API и система реэкспорта обвязок, созданных при помощи nginx-sys.
Источник: http://www.opennet.ru/opennews/art.shtml?num=59923