NGINX նախագիծը հրապարակել է Rust լեզվով մոդուլներ մշակելու գործիքակազմ

NGINX նախագծի մշակողները ներկայացրել են ngx-rust գործիքակազմը, որը թույլ է տալիս Rust ծրագրավորման լեզվով մոդուլներ ստեղծել NGINX http սերվերի և բազմապրոտոկոլի պրոքսիի համար։ ngx-rust կոդը տարածվում է Apache 2.0 լիցենզիայի ներքո և ներկայումս բետա տարբերակում է:

Սկզբում գործիքակազմը մշակվել էր որպես նախագիծ՝ արագացնելու Istio-ի հետ համատեղելի ծառայության ցանցի մշակումը Kubernetes պլատֆորմի համար, որն աշխատում է NGINX-ի վերևում: Արտադրանքը երբեք չի անցել նախատիպից այն կողմ և մի քանի տարի լճացել է, սակայն նախատիպի գործընթացում հրապարակված օրինակելի կապանքները համայնքի կողմից օգտագործվել են երրորդ կողմի նախագծերում՝ Rust-ում NGINX-ի հնարավորությունները ընդլայնելու համար:

Որոշ ժամանակ անց F5 ընկերությունը պետք է գրեր մասնագիտացված մոդուլ NGINX-ի համար՝ իր ծառայությունները պաշտպանելու համար, որում ցանկանում էր օգտագործել Rust լեզուն՝ հիշողության հետ աշխատելիս սխալների ռիսկը նվազեցնելու համար: Խնդիրը լուծելու համար բերվեց ngx-rust-ի հեղինակը, ում հանձնարարվեց մշակել նոր և կատարելագործված գործիքներ NGINX-ի համար Rust լեզվով մոդուլներ ստեղծելու համար։

Գործիքների հավաքածուն ներառում է տուփի երկու փաթեթ.

  • nginx-sys - Պարտադիր գեներատոր, որը հիմնված է NGINX աղբյուրի կոդի վրա: Կոմունալը բեռնում է NGINX կոդը և դրա հետ կապված բոլոր կախվածությունները, այնուհետև օգտագործում է bindgen՝ սկզբնական գործառույթների վրա կապեր ստեղծելու համար (FFI, օտարերկրյա ֆունկցիայի միջերես):
  • ngx - շերտ՝ Rust կոդից C ֆունկցիաներին մուտք գործելու համար, API-ից և nginx-sys-ի միջոցով ստեղծված կապերի վերաարտահանման համակարգ:

Source: opennet.ru

Добавить комментарий