Buck2 ، نظام إنشاء Facebook الجديد

باك2-البطل

Buck2 ، نظام البناء الجديد مفتوح المصدر الخاص بـ Facebook

قدم الفيسبوك أطلق مؤخرًا نظام بناء جديد يسمى "Buck2" ، والذي يشير إلى أنه كذلك ركز على بناء المشاريع من المستودعات جدا الكبيرة التي تتضمن رمزًا بلغات مختلفة برمجة.

الاختلافات بين التطبيق الجديد والنظام باك المستخدمة سابقا عن طريق الفيس بوك يستخدمون لغة Rust بدلاً من Java وزيادة كبيرة في كفاءة وأداء عملية التجميع (في الاختبارات الداخلية على نفس البنية التحتية ، تؤدي Buck2 مهام التجميع أسرع مرتين من Buck).

تقف أنظمة البناء بين المطور وتشغيل الكود الخاص به ، لذا فإن أي شيء يمكننا القيام به لجعل التجربة أسرع أو أكثر إنتاجية يؤثر بشكل مباشر على مدى فعالية المطور. كان الهدف من Buck2 هو الحفاظ على ما أحببناه في Buck1 (الأساسيات وسير العمل) ، والاستلهام من ابتكارات ما بعد Buck1 (بما في ذلك Bazel و Adapton و Shake) والتركيز على السرعة وتمكين التجارب الجديدة.

حول Buck2

يبرز أن النظام غير مرتبط بإنشاء كود بلغات معينة وخارج الصندوق ، يدعم مشاريع البناء المكتوبة بلغة C ++ و Python و Rust و Kotlin و Erlang و Swift و Objective-C و Haskell و OCaml التي يستخدمها Facebook.

تُستخدم لغة Starlark ، المستندة إلى Python (كما في Bazel) ، لتصميم المكونات الإضافية وإنشاء البرامج النصية والقواعد. يسمح لك Starlark بتوسيع إمكانيات نظام البناء والتلخيص من اللغات المحددة المستخدمة في المشاريع التي يتم بناؤها.

يذكر أن يتم تحقيق الأداء العالي عن طريق تخزين النتائج مؤقتًا، موازاة العمل ودعم التنفيذ عن بعد للمهام (تنفيذ البناء عن بعد).

بيئة البناء يستخدم مفهوم "الإحكام": يتم فصل الكود المترجم عن العالم الخارجي ، ولا يتم تحميل أي شيء من الخارج أثناء عملية الإنشاء ، ويؤدي التنفيذ المتكرر للمهمة على أنظمة مختلفة إلى نفس النتيجة (الإنشاءات المتكررة ، على سبيل المثال ، نتيجة تجميع مشروع على سيكون الجهاز من المطور هو نفسه تمامًا مثل الإنشاء على خادم التكامل المستمر). يُنظر إلى عدم وجود حالة التبعية في Buck2 على أنه خطأ.

من جانب الميزات الرئيسية Buck2، يبرز ما يلي:

  • قواعد دعم لغات البرمجة ونظام البناء الأساسي منفصلان تمامًا. القواعد مكتوبة بلغة Starlark ، ومجموعة أدوات Starlark والتنفيذ مكتوبة في Rust.
  • يستخدم نظام الإنشاء مخطط تبعية تزايدي واحد (بدون مراحل) ، مما يسمح لك بزيادة عمق موازاة العمل مقارنةً بـ Buck و Bazel وتجنب العديد من أنواع الأخطاء.
  • رمز Buck2 المنشور على GitHub وقواعد دعم لغة البرمجة متطابقة تقريبًا مع الإصدار الداخلي المستخدم في البنية التحتية لفيسبوك (الاختلافات الوحيدة هي في رابط إصدارات المجمّع وبناء الخوادم التي يستخدمها Facebook).
  • تم تصميم نظام الإنشاء للتكامل مع أنظمة تنفيذ المهام عن بُعد التي تتيح لك تشغيل المهام على الخوادم البعيدة. تتوافق واجهة برمجة تطبيقات التنفيذ عن بُعد مع Bazel وتم اختبارها للتوافق مع Buildbarn و EngFlow.
  • يتم توفير التكامل مع أنظمة الملفات الافتراضية ، حيث يتم تقديم محتويات المستودع بالكامل ، ولكن في الواقع ، يتم تنفيذ العمل مع الجزء المحلي الحقيقي لجزء من المستودع (يرى المطور المستودع بأكمله ، ولكن فقط ماذا مطلوب) يتم استرداد الملفات التي تم الوصول إليها من المستودع). يتم دعم VFS و Git LFS المستندة إلى EdenFS ، والتي تستخدمها Sapling.

أخيرًا ، بالنسبة للمهتمين بمعرفة المزيد عنها ، يجب أن يعلموا أن الكود يتم توزيعه بموجب ترخيص Apache 2.0 ويمكنهم الرجوع إلى التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.