Gli sviluppatori del progetto NGINX hanno presentato il toolkit ngx-rust, che consente di creare moduli per il server http e il proxy multi-protocollo NGINX in linguaggio di programmazione Rust. Il codice di ngx-rust è distribuito con licenza Apache 2.0 ed è attualmente in fase beta.
Inizialmente, il toolkit è stato sviluppato come progetto per accelerare lo sviluppo di un Service mesh compatibile con Istio per la piattaforma Kubernetes, funzionante sopra NGINX. Il prodotto non è mai uscito dalla fase prototipale ed è rimasto stagnante per diversi anni, ma gli esempi di binding pubblicati durante la creazione del prototipo sono stati utilizzati dalla comunità in progetti di terze parti per ampliare le capacità di NGINX in linguaggio Rust.
Dopo un po' di tempo, l'azienda F5 ha richiesto la scrittura di un modulo specializzato per NGINX per proteggere i propri servizi, nel quale si desiderava utilizzare il linguaggio Rust per ridurre il rischio di errori nella gestione della memoria. Per affrontare il compito è stato coinvolto l'autore di ngx-rust, a cui è stato affidato lo sviluppo di un nuovo e migliorato toolkit per la creazione di moduli per NGINX in linguaggio Rust.
Il toolkit include due pacchetti crate:
- nginx-sys — un generatore di binding basato sul codice sorgente di NGINX. Lo strumento carica il codice di NGINX e tutte le relative dipendenze, quindi utilizza bindgen per creare i binding sopra le funzioni originali (FFI, interfaccia di funzione straniera).
- ngx — un'interfaccia per accedere alle funzioni C dal codice Rust, API e sistema di riesportazione dei binding creati con nginx-sys.
Fonte: opennet.ru
