توسعه دهندگان پروژه NGINX جعبه ابزار ngx-rust را ارائه کردند که به شما امکان می دهد ماژول هایی برای سرور http NGINX و پروکسی چند پروتکل در زبان برنامه نویسی Rust ایجاد کنید. کد ngx-rust تحت مجوز Apache 2.0 توزیع شده است و در حال حاضر در نسخه بتا است.
در ابتدا، این جعبه ابزار به عنوان پروژه ای برای سرعت بخشیدن به توسعه یک مش سرویس سازگار با Istio برای پلت فرم Kubernetes که در بالای NGINX اجرا می شود، توسعه یافت. این محصول هرگز فراتر از نمونه اولیه نرفت و چندین سال راکد ماند، اما نمونهبندیهای نمونه منتشر شده در طول فرآیند نمونه اولیه توسط جامعه در پروژههای شخص ثالث برای گسترش قابلیتهای NGINX در Rust استفاده شد.
پس از مدتی، شرکت F5 برای محافظت از خدمات خود نیاز به نوشتن یک ماژول تخصصی برای NGINX داشت که در آن می خواست از زبان Rust برای کاهش خطر خطا در هنگام کار با حافظه استفاده کند. برای حل این مشکل، نویسنده ngx-rust آورده شد که وظیفه توسعه ابزارهای جدید و بهبود یافته برای ایجاد ماژول برای NGINX در زبان Rust را بر عهده داشت.
جعبه ابزار شامل دو بسته جعبه است:
- nginx-sys - مولد اتصال بر اساس کد منبع NGINX. ابزار، کد NGINX و تمام وابستگیهای مرتبط با آن را بارگیری میکند و سپس از bindgen برای ایجاد اتصالات روی توابع اصلی (FFI، رابط تابع خارجی) استفاده میکند.
- ngx - یک لایه برای دسترسی به توابع C از کد Rust، یک API و یک سیستم برای صادرات مجدد پیوندهای ایجاد شده با استفاده از nginx-sys.
منبع: opennet.ru