Dezvoltatorii proiectului NGINX au prezentat setul de instrumente ngx-rust, care vă permite să creați module pentru serverul http NGINX și proxy multi-protocol în limbajul de programare Rust. Codul ngx-rust este distribuit sub licența Apache 2.0 și este în prezent în versiune beta.
Inițial, setul de instrumente a fost dezvoltat ca un proiect pentru a accelera dezvoltarea unei rețele de servicii compatibile Istio pentru platforma Kubernetes care rulează pe NGINX. Produsul nu a mers niciodată dincolo de prototip și a stagnat timp de câțiva ani, dar exemplele de legături publicate în timpul procesului de prototip au fost folosite de comunitate în proiecte terțe pentru a extinde capacitățile NGINX în Rust.
După ceva timp, compania F5 a trebuit să scrie un modul specializat pentru NGINX pentru a-și proteja serviciile, în care dorea să folosească limbajul Rust pentru a reduce riscul de erori atunci când lucrează cu memorie. Pentru a rezolva problema, a fost adus autorul cărții ngx-rust, care a fost însărcinat cu dezvoltarea unor instrumente noi și îmbunătățite pentru crearea de module pentru NGINX în limbajul Rust.
Setul de instrumente include două pachete de cutii:
- nginx-sys - Generator de legături bazat pe codul sursă NGINX. Utilitarul încarcă codul NGINX și toate dependențele asociate acestuia, apoi folosește bindgen pentru a crea legături peste funcțiile originale (FFI, interfață de funcție străină).
- ngx - un strat pentru accesarea funcțiilor C din codul Rust, un API și un sistem de reexportare a legăturilor create folosind nginx-sys.
Sursa: opennet.ru
