Dezvoltatorii proiectului NGINX au prezentat un instrument numit ngx-rust, care permite crearea de module pentru serverul http și proxy-ul multiprotocol NGINX folosind limbajul de programare Rust. Codul ngx-rust este distribuit sub licența Apache 2.0 și se află momentan în versiune beta.
Inițial, instrumentul a fost dezvoltat ca un proiect pentru accelerarea dezvoltării unui Service mesh compatibil cu Istio pentru platforma Kubernetes, funcționând pe baza NGINX. Produsul nu a depășit stadiul de prototip și a rămas în stagnare timp de câțiva ani, însă exemplele publicate în timpul creării prototipului au fost utilizate de comunitate în proiecte externe pentru a extinde capabilitățile NGINX în limbajul Rust.
După o perioadă, compania F5 a avut nevoie de scrierea unui modul specializat pentru NGINX pentru a proteja serviciile sale, în care dorea să folosească limbajul Rust pentru a reduce riscul de erori legate de memorie. Pentru a rezolva problema, a fost implicat autorul ngx-rust, căruia i s-a încredințat sarcina de a dezvolta un instrument nou și îmbunătățit pentru crearea modulelor pentru NGINX în limbajul Rust.
Instrumentul include două pachete crate:
- nginx-sys — un generator de legături bazat pe codul sursă NGINX. Utilitarul încarcă codul NGINX și toate dependențele sale asociate, după care utilizează bindgen pentru a crea legături pentru funcțiile originale (FFI, foreign function interface).
- ngx — un strat pentru a accesa funcțiile C din codul Rust, API-ul și sistemul de re-exportare a legăturilor create cu ajutorul nginx-sys.
Sursa: opennet.ro
