Bazel با اجرای کامپایلرها و تست های لازم پروژه را می سازد. سیستم ساخت از ابتدا برای ساخت بهینه پروژههای Google طراحی شده است، از جمله پروژههای بسیار بزرگ و پروژههایی که حاوی کد در چندین زبان برنامهنویسی هستند، نیاز به آزمایش گسترده دارند و برای پلتفرمهای متعدد ساخته شدهاند. این برنامه از ساخت و تست کد در جاوا، C++، Objective-C، Python، Rust، Go و بسیاری از زبانهای دیگر و همچنین ساخت اپلیکیشنهای موبایل برای اندروید و iOS پشتیبانی میکند. استفاده از فایل های اسمبلی واحد برای پلتفرم ها و معماری های مختلف پشتیبانی می شود؛ به عنوان مثال، یک فایل اسمبلی بدون تغییر می تواند هم برای یک سیستم سرور و هم برای یک دستگاه تلفن همراه استفاده شود.
از جمله ویژگی های بارز بازل می توان به سرعت بالا، قابلیت اطمینان و تکرارپذیری فرآیند مونتاژ اشاره کرد. برای دستیابی به سرعت ساخت بالا، Bazel به طور فعال از تکنیک های کش و موازی سازی برای فرآیند ساخت استفاده می کند. فایلهای BUILD باید تمام وابستگیها را به طور کامل تعریف کنند، که بر اساس آن تصمیمگیری برای بازسازی مؤلفهها پس از ایجاد تغییرات (فقط فایلهای تغییر یافته بازسازی میشوند) و موازی کردن فرآیند مونتاژ گرفته میشود. ابزارسازی همچنین مونتاژ قابل تکرار را تضمین می کند، یعنی. نتیجه ساخت یک پروژه بر روی ماشین توسعهدهنده کاملاً با ساخت سیستمهای شخص ثالث، مانند سرورهای یکپارچهسازی مداوم، یکسان خواهد بود.
بر خلاف Make و Ninja، Bazel از یک رویکرد سطح بالاتر برای ساخت قوانین اسمبلی استفاده می کند، که در آن، به جای تعریف اتصال دستورات به فایل های در حال ساخت، از بلوک های آماده انتزاعی تر استفاده می شود، مانند "ساخت یک فایل اجرایی در C++»، «ساخت کتابخانه در C++» یا «اجرای آزمایش برای C++» و همچنین شناسایی پلتفرمهای هدف و ساخت. در فایل متنی BUILD، اجزای پروژه بهعنوان مجموعهای از کتابخانهها، فایلهای اجرایی و آزمایشها، بدون جزئیات در سطح فایلهای جداگانه و دستورات فراخوانی کامپایلر، توصیف میشوند. عملکرد اضافی از طریق مکانیسم اتصال افزونه ها اجرا می شود.
منبع: opennet.ru