Разработчиците на проекта NGINX представиха инструмента ngx-rust, който позволява създаването на модули за http-сървъра и многопротоколния прокси NGINX на програмния език Rust. Кодът на ngx-rust се разпространява под лицензия Apache 2.0 и в момента е в бета-версия.
Първоначално инструментът се развиваше като проект за ускоряване на разработката на Service mesh, съвместим с Istio, за платформата Kubernetes, функционираща над NGINX. Продуктът не излезе извън рамките на прототипа и няколко години беше в застой, но публикуваните по време на създаването на прототипа примери за свързване бяха използвани от общността в третостранни проекти за разширяване на възможностите на NGINX на езика Rust.
След време на компанията F5 искаше създаването на специализиран модул за NGINX за защита на своите услуги, в който искаха да се използва езикът Rust, за да се намали рискът от грешки при работа с паметта. За решаването на задачата беше привлечен авторът на ngx-rust, който получи задачата да разработи нов и подобрен инструментarium за създаване на модули за NGINX на езика Rust.
Инструментариумът включва два crate-пакета:
- nginx-sys — генератор на привязки на базата на изходните текстове на NGINX. Утилитата зарежда кода на NGINX и всички свързани с него зависимости, след което използва bindgen за формиране на обвивки над оригиналните функции (FFI, foreign function interface).
- ngx — междинен слой за достъп до C-функции от кода на Rust, API и система за реекспортиране на обвивките, създадени с помощта на nginx-sys.
Източник: opennet.ru
