Udviklerne af NGINX-projektet har præsenteret værktøjet ngx-rust, som gør det muligt at oprette moduler til HTTP-serveren og multi-protokol proxyen NGINX med programmeringssproget Rust. Koden til ngx-rust distribueres under Apache 2.0-licensen og er stadig i beta-version.
Oprindeligt blev værktøjet udviklet som et projekt til at fremme udviklingen af Istio-kompatible Service meshes til Kubernetes-platformen, der kører oven på NGINX. Produktet forblev på prototypeniveau og var i stagnation i flere år, men de offentliggjorte eksempler på bindinger, der blev udviklet i løbet af prototypens skabelse, blev brugt af fællesskabet i tredjepartsprojekter til at udvide NGINX's muligheder med Rust.
Efter et stykke tid havde F5 brug for at skrive et specialmodul til NGINX for at beskytte deres tjenester, hvor de ønskede at bruge Rust til at reducere risikoen for hukommelsesfejl. For at løse opgaven blev forfatteren af ngx-rust involveret, og der blev givet dem ansvaret for at udvikle et nyt og forbedret værktøj til at skabe moduler til NGINX i Rust.
Værktøjet omfatter to crate-pakker:
- nginx-sys — en bindegenerator baseret på NGINX's kildekode. Værktøjet indlæser NGINX-koden og alle relaterede afhængigheder, hvorefter det bruger bindgen til at generere bindings til de originale funktioner (FFI, foreign function interface).
- ngx — et lag til at få adgang til C-funktioner fra Rust-koden, API'et og systemet til geneksport af bindinger, der er oprettet ved hjælp af nginx-sys.
Kilde: opennet.ru
