NGINX projekti arendajad on tutvustanud ngx-rust tööriistakomplekti, mis võimaldab luua mooduleid NGINX-i HTTP-serverile ja mitme protokolliga pöördproksi Rust programmeerimiskeeles. ngx-rusti kood on litsentsitud Apache 2.0 all ning praegu on see beetaversioonis.
Alguses arendati tööriistakomplekti Istio ühilduva teenuse võrgu (Service mesh) arendamise kiirendamiseks Kubernetes platvormile, toimides NGINX-i peal. Toode ei jõudnud kunagi prototüübist kaugemale ja oli mitu aastat seiskunud, kuid prototüübi loomise käigus avaldatud näidis sidumised on kogukonna poolt kasutatud kolmandate isikute projektides NGINX-i võimaluste laiendamiseks Rust keeles.
Mööda aega vajas ettevõte F5 NGINX-i jaoks spetsialiseeritud mooduli kirjutamist, kus sooviti kasutada Rust-i keelt, et vähendada mälu haldamisega seotud vigu. Probleemi lahendamiseks kaasati ngx-rust autori, kellele anti ülesanne arendada uus ja täiustatud tööriistakomplekt NGINX-i moodulite loomiseks Rust keeles.
Tööriistakomplekt sisaldab kahte crate-paketti:
- nginx-sys — NGINX-i allika tekstidest põhinev sidumis generaator. Tööriist laadib NGINX-i koodi ja kõik sellega seotud sõltuvused ning seejärel kasutab bindgen'i, et luua originaalsete funktsioonide (FFI, foreign function interface) ümbrised.
- ngx — kiht, mis võimaldab pääseda C-funktsioonidele Rusti koodist, API ja süsteem ümber eksportimiseks sidumistele, mis on loodud nginx-sys abil.
Allikas: opennet.ru
