Vývojári projektu NGINX predstavili nástroj ngx-rust, ktorý umožňuje vytvárať moduly pre http server a viacprotokolový proxy NGINX v programovacom jazyku Rust. Kód ngx-rust je distribuovaný pod licenciou Apache 2.0 a momentálne sa nachádza v beta verzii.
Nástroj sa pôvodne vyvíjal ako projekt na urýchlenie vývoja Service mesh kompatibilného s Istio pre platformu Kubernetes, ktorý fungoval na NGINX. Produkt sa nedostal za rámec prototypu a niekoľko rokov bol v stagnácii, ale príklady väzieb z procesu vytvárania prototypu boli použité komunitou v externých projektoch na rozšírenie možností NGINX pomocou jazyka Rust.
Po nejakom čase spoločnosti F5 vznikla potreba napísať špecializovaný modul pre NGINX na ochranu svojich služieb, v ktorom sa chcel využiť jazyk Rust na zníženie rizika chýb pri práci s pamäťou. Na riešenie úlohy bol prizvaný autor ngx-rust, ktorému bola zverená úloha vyvinúť nový a vylepšený nástroj na vytváranie modulov pre NGINX v jazyku Rust.
Nástroj zahŕňa dva crate balíky:
- nginx-sys — generátor väzieb na základe zdrojových textov NGINX. Nástroj načítava kód NGINX a všetky s ním súvisiace závislosti, po čom používa bindgen na vytvorenie obálok nad pôvodnými funkciami (FFI, foreign function interface).
- ngx — medzičlánok pre volanie C funkcií z kódu Rust, API a systém zreexportovania obálok, vytvorených pomocou nginx-sys.
Zdroj: opennet.ru
