Facebook Buck2 qurma sistemini nəşr etdi

Facebook, müxtəlif proqramlaşdırma dillərində kodu ehtiva edən çox böyük depolardan layihələrin qurulmasını təşkil etməyə yönəlmiş yeni qurma sistemi, Buck2 təqdim etdi. Yeni tətbiqetmə ilə Facebook tərəfindən əvvəllər istifadə edilən Buck sistemi arasındakı əsas fərqlər Java əvəzinə Rust dilinin istifadəsi və montaj prosesinin səmərəliliyinin və performansının əhəmiyyətli dərəcədə artmasıdır (eyni infrastrukturda daxili testlərdə Buck2 montajı həyata keçirir. tapşırıqları Buck-dan iki dəfə tez yerinə yetirir). Kod Apache 2.0 lisenziyası altında paylanır.

Sistem xüsusi dillərdə tikinti kodu ilə əlaqəli deyil və qutudan kənarda Facebook tərəfindən istifadə olunan C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell və OCaml dillərində yazılmış tikinti layihələrini dəstəkləyir. Python-a əsaslanan Starlark dili (Bazeldə olduğu kimi) əlavələr hazırlamaq, skriptlər və qaydalar qurmaq üçün istifadə olunur. Starlark, tikinti sisteminin imkanlarını genişləndirməyə və tikilən layihələrdə istifadə olunan xüsusi dillərdən mücərrədləşdirməyə imkan verir.

Yüksək performans nəticələrin keşləşdirilməsi, işin paralelləşdirilməsi və tapşırıqların uzaqdan icrasına dəstək (Remote Build Execution) vasitəsilə əldə edilir. Quraşdırma mühitində "sıxma" anlayışından istifadə olunur - tərtib edilmiş kod xarici aləmdən kəsilir, qurma prosesində kənardan heç bir şey yüklənmir və müxtəlif sistemlərdə işin təkrar icrası eyni nəticəyə səbəb olur ( təkrarlanan qurğular, məsələn, tərtibatçının maşınında layihənin qurulmasının nəticəsi davamlı inteqrasiya serverində qurulan ilə tam olaraq eyni olacaq). Asılılığın olmaması vəziyyəti Buck2-də səhv kimi qəbul edilir.

Buck2 əsas xüsusiyyətləri:

  • Proqramlaşdırma dillərini dəstəkləmək qaydaları və quruluş sisteminin əsas hissəsi tamamilə ayrılmışdır. Qaydalar Starlark dilində, Starlark alət dəsti və tətbiqi Rust dilində yazılmışdır.
  • Quraşdırma sistemi, Buck və Bazel ilə müqayisədə işin paralelləşdirilməsinin dərinliyini artırmağa və bir çox növ səhvlərdən qaçmağa imkan verən tək artımlı asılılıq qrafikindən (mərhələlərə bölünmədən) istifadə edir.
  • GitHub-da dərc olunan Buck2 kodu və proqramlaşdırma dilinin dəstəklənməsi qaydaları Facebook infrastrukturunda istifadə edilən daxili versiya ilə demək olar ki, eynidir (yalnız fərqlər Facebook tərəfindən istifadə edilən kompilyator nəşrləri və qurmaq serverləri ilə əlaqələndirilməsindədir).
  • Quraşdırma sistemi uzaq serverlərdə işləri yerinə yetirməyə imkan verən uzaqdan işin icrası sistemləri ilə inteqrasiya üçün nəzərdə tutulmuşdur. Uzaqdan icra API-si Bazel ilə uyğun gəlir və Buildbarn və EngFlow ilə uyğunluq üçün sınaqdan keçirilib.
  • Virtual fayl sistemləri ilə inteqrasiya təmin edilir, burada bütün deponun məzmunu təqdim olunur, lakin əslində iş deponun bir hissəsinin faktiki yerli dilimi ilə aparılır (developer bütün deponu görür, ancaq tələb olunan daxil olan fayllar depodan götürülür). Sapling tərəfindən istifadə edilən EdenFS və Git LFS əsasında VFS dəstəklənir.

Mənbə: opennet.ru

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