Wydanie systemu kompilacji Bazel 1.0

Przesłane przez udostępnienie otwartych narzędzi montażowych Bazel 1.0, opracowany przez inżynierów z Google i używany do montażu większości wewnętrznych projektów firmy. Wersja 1.0 oznaczała przejście na wersjonowanie wersji semantycznej i wyróżniała się także wprowadzeniem dużej liczby zmian, które złamały kompatybilność wsteczną. Kod projektu dystrybuowane przez na licencji Apache 2.0.

Bazel buduje projekt uruchamiając niezbędne kompilatory i testy. System kompilacji został zaprojektowany od podstaw, aby optymalnie budować projekty Google, w tym bardzo duże projekty i projekty zawierające kod w wielu językach programowania, wymagające szeroko zakrojonych testów i tworzone dla wielu platform. Obsługuje budowanie i testowanie kodu w językach Java, C++, Objective-C, Python, Rust, Go i wielu innych, a także budowanie aplikacji mobilnych na Androida i iOS. Obsługiwane jest użycie pojedynczych plików zestawu dla różnych platform i architektur; na przykład jeden plik zestawu bez zmian może być używany zarówno dla systemu serwerowego, jak i urządzenia mobilnego.

Do wyróżniających cech Bazela należy duża szybkość, niezawodność i powtarzalność procesu montażu. Aby osiągnąć dużą szybkość kompilacji, Bazel aktywnie wykorzystuje techniki buforowania i równoległości w procesie kompilacji. Pliki BUILD muszą w pełni definiować wszystkie zależności, na podstawie których podejmowane są decyzje o przebudowie komponentów po dokonaniu zmian (przebudowywane są tylko zmienione pliki) i zrównoleglać proces montażu. Oprzyrządowanie zapewnia także powtarzalność montażu, tj. wynik zbudowania projektu na maszynie dewelopera będzie całkowicie identyczny z kompilacją na systemach innych firm, takich jak serwery ciągłej integracji.

W przeciwieństwie do Make i Ninja, Bazel stosuje podejście wyższego poziomu do budowania reguł asemblera, w którym zamiast definiować powiązanie poleceń z budowanymi plikami, używane są bardziej abstrakcyjne, gotowe bloki, takie jak „budowanie pliku wykonywalnego w C++”, „budowanie biblioteki w C++” czy „uruchamianie testu dla C++”, a także identyfikacja platform docelowych i kompilacji. W pliku tekstowym BUILD komponenty projektu są opisane jako zbiór bibliotek, plików wykonywalnych i testów, bez opisywania szczegółów na poziomie poszczególnych plików i poleceń wywołania kompilatora. Dodatkowa funkcjonalność realizowana jest poprzez mechanizm łączenia rozszerzeń.

Źródło: opennet.ru

Dodaj komentarz