فیس بوک سیستم ساخت Buck2 را منتشر کرد

فیس بوک یک سیستم ساخت جدید به نام Buck2 را معرفی کرد که هدف آن سازماندهی ساخت پروژه ها از مخازن بسیار بزرگ، از جمله کد در زبان های برنامه نویسی مختلف بود. تفاوت اصلی بین پیاده سازی جدید و سیستم Buck که قبلا در فیس بوک استفاده می شد، استفاده از زبان Rust به جای جاوا و افزایش قابل توجه کارایی و بهره وری فرآیند اسمبلی است (در تست های داخلی در همان زیرساخت، Buck2 مونتاژ را انجام می دهد. وظایف دو برابر سریعتر از باک). کد تحت مجوز آپاچی 2.0 توزیع شده است.

این سیستم به اسمبلی کد در زبان های خاصی وابسته نیست و خارج از جعبه از مونتاژ پروژه های نوشته شده به زبان های C++، Python، Rust، Kotlin، Erlang، Swift، Objective-C، Haskell و OCaml پشتیبانی می کند. ، استفاده شده توسط فیس بوک. زبان Starlark بر پایه پایتون (مانند Bazel) برای طراحی افزونه ها، ساخت اسکریپت ها و قوانین استفاده می شود. Starlark به شما امکان می دهد قابلیت های سیستم اسمبلی را گسترش دهید و از زبان های خاص مورد استفاده در پروژه های مونتاژ شده انتزاعی بگیرید.

عملکرد بالا از طریق کش کردن نتایج، موازی سازی کار و پشتیبانی از اجرای از راه دور وظایف (Remote Build Execution) به دست می آید. در محیط مونتاژ، از مفهوم "هرمتیک" استفاده می شود - کد مونتاژ شده از دنیای خارج قطع می شود، در طول فرآیند مونتاژ چیزی از بیرون بارگذاری نمی شود، و اجرای مکرر کار در سیستم های مختلف منجر به یک نتیجه می شود ( مجموعه‌های مکرر، برای مثال، نتیجه مونتاژ یک پروژه در ماشین توسعه‌دهنده کاملاً مشابه ساخت روی سرور یکپارچه‌سازی مداوم خواهد بود). وضعیت عدم وابستگی به عنوان یک خطا در Buck2 درک می شود.

ویژگی های کلیدی Buck2:

  • قوانین پشتیبانی از زبان های برنامه نویسی و هسته سیستم اسمبلی کاملاً مجزا هستند. قوانین از زبان Starlark استفاده می کنند و جعبه ابزار Starlark و پیاده سازی آن با Rust نوشته شده است.
  • سیستم مونتاژ از یک نمودار وابستگی افزایشی منفرد (بدون تقسیم به مراحل) استفاده می کند که امکان افزایش عمق موازی کار را در مقایسه با باک و بازل و جلوگیری از بسیاری از انواع خطاها فراهم می کند.
  • کد Buck2 منتشر شده در GitHub و قوانین پشتیبانی از زبان های برنامه نویسی تقریباً مشابه نسخه داخلی مورد استفاده در زیرساخت فیس بوک است (تنها تفاوت ها در رابطه با نسخه های کامپایلرها و سرورهای اسمبلی مورد استفاده در فیس بوک است).
  • سیستم مونتاژ با توجه به ادغام با سیستم های اجرای کار از راه دور طراحی شده است که به شما امکان می دهد کار را بر روی سرورهای راه دور اجرا کنید. API اجرای از راه دور با Bazel سازگار است و برای سازگاری با Buildbarn و EngFlow آزمایش شده است.
  • یکپارچه سازی با سیستم های فایل مجازی ارائه شده است، که در آن محتویات کل مخزن ارائه می شود، اما در واقع، کار با یک برش محلی فعلی از بخشی از مخزن انجام می شود (توسعه دهنده کل مخزن را می بیند، اما فقط فایل های مورد نیاز را می بیند. که قابل دسترسی هستند از مخزن استخراج می شوند). VFS مبتنی بر EdenFS و Git LFS که در Sapling استفاده می شوند، پشتیبانی می شوند.

منبع: opennet.ru

اضافه کردن نظر