баровардани асбобхои монтажкунии кушод , ки аз ҷониби муҳандисони 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" (истифодаи калидҳои ҳашнашаванда),
"--incompatible_remove_native_maven_jar" ва "--incompatible_prohibit_aapt1". Дигар тағйиротҳо дар бар мегиранд:
- Дар команда дастгирии таҷрибавӣ барои версияи нави формати баромади "прото" (--output=proto) илова карда шудааст, ки айни замон бо нобаёнӣ ғайрифаъол аст (--incompatible_proto_output_v2) ва муаррифии бештари маълумотро таъмин мекунад;
- Иловаи парчами "--incompatible_remove_enabled_toolchain_types" барои нест кардани майдони PlatformConfiguration.enabled_toolchain_types;
- Муҳофизати иловашуда аз боркунии бастаҳое, ки ҳангоми васеъ кардани роҳҳо истинодҳои рамзии даврашаклро истифода мебаранд;
- Имконияти истифодаи парчами "--disk_cache" бо кэшҳои берунии gRPC амалӣ карда шуд;
- Дар баста барои Debian ва насбкунандаи дуӣ қабати такмилёфтаеро дар бар мегирад, ки файлҳои ~/.bazelversion ва тағирёбандаи муҳити $USE_BAZEL_VERSION-ро коркард мекунад;
- Ҳангоми омодагӣ ба бекор кардани файлҳои иҷро бо манифестҳо, парчами "--experimental_skip_runfiles_manifests" илова карда шудааст.
Дар байни хусусиятҳои фарқкунандаи Bazel суръати баланд, эътимоднокӣ ва такроршавандагии раванди васлкунӣ мебошанд. Барои ноил шудан ба суръати баланди сохтмон, Bazel усулҳои кэш ва параллелизатсияро барои раванди сохтмон фаъолона истифода мебарад. Файлҳои BUILD бояд ҳама вобастагиҳоро пурра муайян кунанд, ки дар асоси онҳо қарорҳо барои аз нав сохтани ҷузъҳо пас аз ворид кардани тағирот (танҳо файлҳои тағирёфта аз нав сохта мешаванд) ва параллелизатсияи раванди васлкунӣ қабул карда мешаванд. Асбоб инчунин васлкунии такроршавандаро таъмин мекунад, яъне. натиҷаи сохтани лоиҳа дар мошини таҳиягар комилан бо сохташуда дар системаҳои тарафи сеюм, ба монанди серверҳои муттаҳидсозии пайваста шабеҳ хоҳад буд.
Баръакси Make ва Ninja, Bazel барои сохтани қоидаҳои васлкунӣ як равиши сатҳи баландтарро истифода мебарад, ки дар он ба ҷои муайян кардани пайванди фармонҳо ба файлҳои сохташаванда, блокҳои абстрактии тайёр бештар истифода мешаванд, ба монанди "сохтани файли иҷрошаванда дар C++”, “сохтани китобхона дар C++” ё “гузаронидани санҷиш барои C++”, инчунин муайян кардани ҳадаф ва сохтани платформаҳо. Дар файли матнии BUILD ҷузъҳои лоиҳа ҳамчун як маҷмӯи китобхонаҳо, файлҳои иҷрошаванда ва санҷишҳо бидуни тафсилот дар сатҳи файлҳои инфиродӣ ва фармонҳои даъвати компилятор тавсиф карда мешаванд. Функсияи иловагӣ тавассути механизми пайваст кардани васеъшавӣ амалӣ карда мешавад.
Истифодаи файлҳои сохтаи ягона барои платформаҳо ва меъмории гуногун дастгирӣ карда мешавад. Масалан, як файли сохта метавонад ҳам барои системаи сервер ва ҳам дастгоҳи мобилӣ бетағйир истифода шавад. Системаи сохтан аз ибтидо то ба таври оптималӣ сохтани лоиҳаҳои Google тарҳрезӣ шудааст, аз ҷумла лоиҳаҳои хеле калон ва лоиҳаҳое, ки дорои кодҳо бо забонҳои барномасозӣ мебошанд, санҷиши васеъро талаб мекунанд ва барои платформаҳои гуногун сохта мешаванд.
Манбаъ: opennet.ru
