Twórcy projektu NGINX przedstawili zestaw narzędzi ngx-rust, umożliwiający tworzenie modułów dla serwera http oraz wieloprotokołowego proxy NGINX w języku programowania Rust. Kod ngx-rust jest dystrybuowany na licencji Apache 2.0 i obecnie znajduje się w fazie beta.
Początkowo zestaw narzędzi był rozwijany jako projekt mający na celu przyspieszenie opracowania zgodnego z Istio Service mesh dla platformy Kubernetes, działającego na bazie NGINX. Produkt nie wyszedł poza stadium prototypu i przez kilka lat pozostawał w stagnacji, ale opublikowane podczas tworzenia prototypu przykłady powiązań zostały wykorzystane przez społeczność w zewnętrznych projektach do rozszerzenia możliwości NGINX w języku Rust.
Po pewnym czasie firma F5 potrzebowała stworzenia specjalistycznego modułu do NGINX, aby chronić swoje usługi, z zamiarem użycia języka Rust w celu zredukowania ryzyka błędów związanych z zarządzaniem pamięcią. Do rozwiązania tego zadania zaangażowano autora ngx-rust, któremu powierzono opracowanie nowego i ulepszonego zestawu narzędzi do tworzenia modułów do NGINX w języku Rust.
Zestaw narzędzi obejmuje dwa pakiety crate:
- nginx-sys — generator powiązań na podstawie kodu źródłowego NGINX. Narzędzie ładuje kod NGINX oraz wszystkie związane z nim zależności, a następnie używa bindgen do tworzenia obwiązań nad oryginalnymi funkcjami (FFI, foreign function interface).
- ngx — warstwa do wywoływania funkcji C z kodu Rust, API oraz system reeksportu powiązań stworzonych za pomocą nginx-sys.
Źródło: opennet.ru
