Az NGINX projekt fejlesztői bemutatták az ngx-rust eszközkészletet, amely lehetővé teszi a Rust programozási nyelv használatával készülő modulok létrehozását az NGINX HTTP szerverhez és a sokprotokollos proxyhoz. Az ngx-rust kódja Apache 2.0 licensz alatt terjesztett és jelenleg béta verzióban érhető el.
A kezdeti időszakban az eszközkészlet az Istio-kompatibilis szolgáltatásmesh fejlesztésére irányuló projektként fejlődött a Kubernetes platformon, amely az NGINX fölött működött. A termék nem lépte át a prototípus szintjét, és több évig stagnált, de a prototípus készítése során közzétett példa megoldásokat a közösség felhasználta harmadik fél projekteken az NGINX Rust alapú képességeinek bővítésére.
Néhány idő elteltével az F5 vállalatnak szüksége volt egy speciális NGINX modul írására a szolgáltatásaik védelme érdekében, amelyben szeretnék használni a Rust nyelvet a memória kezelésével kapcsolatos hibák kockázatának csökkentésére. A feladat megoldására az ngx-rust szerzőjét vonták be, akinek az volt a feladata, hogy kidolgozzon egy új és továbbfejlesztett eszközkészletet modulok létrehozásához az NGINX-hez Rust nyelven.
Az eszközkészlet két crate csomagot tartalmaz:
- nginx-sys — a NGINX forráskódja alapján generált kötések készítője. Az eszköz betölti a NGINX kódját és minden kapcsolódó függőséget, majd a bindgen-t használja az eredeti funkciókhoz (FFI, foreign function interface) tartozó kötések létrehozásához.
- ngx — egy réteg, amely lehetővé teszi a C funkciók elérését Rust kódból, API-t és a nginx-sys által létrehozott kötések újraexportálási rendszerét.
Forrás: opennet.ru
