ачык монтаждоо куралдарын чыгаруу , Google инженерлери тарабынан иштелип чыккан жана компаниянын ички долбоорлорунун көпчүлүгүн куруу үчүн колдонулат. Bazel долбоорлорду түзүү, керектүү компиляторлорду жана тесттерди иштетүү менен алектенет. Ал Java, C++, Objective-C, Python, Rust, Go жана башка көптөгөн тилдерде код түзүү жана сыноону, ошондой эле мобилдик тиркемелерди түзүү үчүн колдойт. Android жана iOS. Долбоордун коду Apache 2.0 астында лицензияланган.
Маанилүү версия өзгөртүү артка шайкештикти бузган өзгөртүүлөрдү кошууну камтыйт. Bazel 2.0 менен баштап, төмөнкү режимдер демейки боюнча иштетилет: “— incompatible_remap_main_repo” (аты боюнча шилтемелер жана @ аркылуу азыр ошол эле репозиторийге шилтеме), “—incompatible_disallow_dict_lookup”_ (unhashable ачкычтарды колдонуу),
"--incompatible_remove_native_maven_jar" жана "--incompatible_prohibit_aapt1". Башка өзгөрүүлөр кирет:
- Командада эксперименталдык колдоо "прото" чыгаруу форматынын жаңы редакциясы үчүн пайда болду (-output=proto), ал учурда демейки боюнча өчүрүлгөн (-incompatible_proto_output_v2) жана маалыматтардын компакттуу көрсөтүүсүн камсыз кылат;
- PlatformConfiguration.enabled_toolchain_types талаасын алып салуу үчүн "--incompatible_remove_enabled_toolchain_types" желеги кошулду;
- Жолдорду кеңейтүүдө циклдик символикалык шилтемелерди колдонгон жүктөө пакеттерине каршы кошумча коргоо;
- "--disk_cache" желегин тышкы gRPC кэштери менен колдонуу мүмкүнчүлүгү ишке ашырылды;
- Пакетте Debian жана бинардык орноткуч ~/.bazelversion файлдарын жана $USE_BAZEL_VERSION чөйрө өзгөрмөсүн иштеткен жакшыртылган катмарды камтыйт;
- Runfiles манифест файлдарын жокко чыгарууга даярдык көрүү үчүн "--experimental_skip_runfiles_manifests" желекчеси кошулду.
Базелдин айырмалоочу өзгөчөлүктөрүнүн арасында чогултуу процессинин жогорку ылдамдыгы, ишенимдүүлүгү жана кайталануучулугу бар. Жогорку куруу ылдамдыгына жетүү үчүн, Базел куруу процесси үчүн кэштөө жана параллелдөө ыкмаларын активдүү колдонот. BUILD файлдары бардык көз карандылыктарды толук аныкташы керек, анын негизинде өзгөртүүлөр киргизилгенден кийин (өзгөрүлгөн файлдар гана кайра түзүлөт) компоненттерди кайра куруу боюнча чечимдер кабыл алынат жана монтаж процессин параллелдештирүүгө тийиш. Аспаптар дагы кайталануучу монтажды камсыз кылат, б.а. Долбоорду иштеп чыгуучунун машинасында куруунун натыйжасы үзгүлтүксүз интеграция серверлери сыяктуу үчүнчү тараптын системаларындагы курууга толугу менен окшош болот.
Make жана Ninjaдан айырмаланып, Базел монтаждоо эрежелерин курууда жогорку деңгээлдеги ыкманы колдонот, мында курулуп жаткан файлдарга буйруктардын байланышын аныктоонун ордуна абстракттуу даяр блоктор колдонулат, мисалы, “аткалуучу файлды түзүү C++”, “C++ тилинде китепкана куруу” же “C++ үчүн тест жүргүзүү”, ошондой эле максатты аныктоо жана платформаларды куруу. BUILD текст файлында долбоордун компоненттери жеке файлдардын деңгээлинде деталдаштырылбастан жана компиляторду чакыруу командаларынын деталдары жок китепканалар, аткарылуучу файлдар жана тесттер катары сүрөттөлөт. Кошумча функциялар кеңейтүүлөрдү туташтыруу механизми аркылуу ишке ашырылат.
Ар кандай платформалар жана архитектуралар үчүн бирдиктүү монтаждык файлдарды колдонуу колдоого алынат, мисалы, бир монтаж файлы сервердик система үчүн да, мобилдик түзүлүш үчүн да колдонулушу мүмкүн; Куруу системасы башынан баштап Google долбоорлорун оптималдуу куруу үчүн иштелип чыккан, анын ичинде бир нече программалоо тилдериндеги кодду камтыган абдан чоң долбоорлор жана долбоорлор, кеңири тестирлөөнү талап кылат жана бир нече платформалар үчүн курулган.
Source: opennet.ru
