باك (برنامج)

Buck هو نظام بناء متعدد اللغات، طوّرته وتستخدمه شركة Meta Platforms . صُمم لإنشاء وحدات صغيرة قابلة لإعادة الاستخدام، تتألف من التعليمات البرمجية والموارد، ضمن مستودع واحد (monorepo) . [ 5 ] يدعم Buck العديد من لغات البرمجة ، بما في ذلك C++ و Swift و Unix Shell و Java و Kotlin و Python و Lua و OCaml و Rust و Go . ويمكنه إنتاج مخرجات ثنائية لمجموعة متنوعة من المنصات المستهدفة، بما في ذلك iOS و Android و. NET وأنظمة تشغيل Java Virtual Machine (VM) . يخضع ترخيص Buck1 لرخصة Apache 2.0، بينما يخضع ترخيص Buck2 إما لرخصة MIT أو Apache 2.0. [ 3 ] [ 4 ]

يتطلب Buck تحديد التبعيات بشكل صريح. ولأن جميع التبعيات محددة بوضوح، ولأن Buck يمتلك رسمًا بيانيًا موجهًا غير دوري لجميع ملفات المصدر وأهداف البناء، فإنه يستطيع إجراء إعادة تجميع تدريجية، حيث يعيد بناء الأهداف التي تلي الملفات التي تغيرت فقط. يحسب Buck مفتاحًا لكل هدف، وهو عبارة عن تجزئة لمحتويات الملفات التي يعتمد عليها. ويخزن ربطًا بين هذا المفتاح وهدف البناء في ذاكرة تخزين مؤقتة خاصة بالبناء.

تاريخ

في عام 2013، تم إصدار Buck1. ومن بين الميزات الرئيسية القدرة على مشاركة نتائج البناء بين العديد من المطورين والتكامل المستمر (CI)، حيث يدعم Buck1 واجهة برمجة تطبيقات HTTP Cache.

في عام 2023، تم إصدار Buck2، مع ادعاء أن عمليات البناء أسرع بمرتين مقارنةً بـ Buck1. ومن أبرز التغييرات عن Buck1 أن النواة مكتوبة بلغة Rust بدلاً من Java ، وأن القواعد مكتوبة خارج النواة بلغة Starlark (اللغة المستخدمة في نظام بناء Bazel ). [ 6 ]

انظر أيضاً

مراجع

  1. بولين، مايكل (14 مايو 2013). "باك: كيف نبني تطبيقات أندرويد في فيسبوك" . ملاحظات. فيسبوك . هندسة فيسبوك . تم الاسترجاع في 16 يوليو 2019 .
  2. "الإصدارات: facebook/buck" . GitHub .
  3. 1 2 "buck/license-mit" . GitHub . 1 ديسمبر 2022. تم الاسترجاع في 19 أبريل 2023 .
  4. 1 2 "buck/license-apache" . GitHub . 1 ديسمبر 2022. تم الاسترجاع في 19 أبريل 2023 .
  5. "نظرة عامة" . باك: أداة بناء . تم الاسترجاع في 16 يوليو 2018. صُممت باك لبناء عدة مخرجات من مستودع واحد - أي مستودع أحادي - بدلاً من مستودعات متعددة .
  6. كريل، بول (2023-04-06). "ميتا مفتوحة المصدر تُطلق نظام بناء أسرع بشكل ملحوظ" . إنفوورلد . تم الاسترجاع في 2023-06-06 .