Κυκλοφορία του συστήματος κατασκευής Bazel 1.0

Εισήχθη απελευθέρωση ανοιχτών εργαλείων συναρμολόγησης Bazel 1.0, που αναπτύχθηκε από μηχανικούς της Google και χρησιμοποιήθηκε για τη συναρμολόγηση των περισσότερων εσωτερικών έργων της εταιρείας. Η έκδοση 1.0 σηματοδότησε τη μετάβαση στη σημασιολογική έκδοση έκδοσης και ήταν επίσης αξιοσημείωτη για την εισαγωγή ενός μεγάλου αριθμού αλλαγών που έσπασαν τη συμβατότητα προς τα πίσω. Κωδικός έργου διανέμονται από άδεια σύμφωνα με το Apache 2.0.

Η Bazel δημιουργεί το έργο εκτελώντας τους απαραίτητους μεταγλωττιστές και δοκιμές. Το σύστημα κατασκευής έχει σχεδιαστεί από την αρχή για τη βέλτιστη κατασκευή έργων Google, συμπεριλαμβανομένων πολύ μεγάλων έργων και έργων που περιέχουν κώδικα σε πολλές γλώσσες προγραμματισμού, απαιτούν εκτεταμένες δοκιμές και είναι κατασκευασμένα για πολλές πλατφόρμες. Υποστηρίζει δημιουργία και δοκιμή κώδικα σε Java, C++, Objective-C, Python, Rust, Go και πολλές άλλες γλώσσες, καθώς και δημιουργία εφαρμογών για κινητές συσκευές για Android και iOS. Υποστηρίζεται η χρήση μεμονωμένων αρχείων συναρμολόγησης για διαφορετικές πλατφόρμες και αρχιτεκτονικές· για παράδειγμα, ένα αρχείο συναρμολόγησης χωρίς αλλαγές μπορεί να χρησιμοποιηθεί τόσο για σύστημα διακομιστή όσο και για φορητή συσκευή.

Ανάμεσα στα ιδιαίτερα χαρακτηριστικά του Bazel είναι η υψηλή ταχύτητα, η αξιοπιστία και η επαναληψιμότητα της διαδικασίας συναρμολόγησης. Για να επιτύχει υψηλή ταχύτητα κατασκευής, η Bazel χρησιμοποιεί ενεργά τεχνικές προσωρινής αποθήκευσης και παραλληλοποίησης για τη διαδικασία κατασκευής. Τα αρχεία BUILD πρέπει να ορίζουν πλήρως όλες τις εξαρτήσεις, βάσει των οποίων λαμβάνονται αποφάσεις για την αναδόμηση στοιχείων μετά την πραγματοποίηση αλλαγών (μόνο τα αλλαγμένα αρχεία αναδημιουργούνται) και να παραλληλίζουν τη διαδικασία συναρμολόγησης. Τα εργαλεία εξασφαλίζουν επίσης επαναλαμβανόμενη συναρμολόγηση, π.χ. το αποτέλεσμα της δημιουργίας ενός έργου στο μηχάνημα του προγραμματιστή θα είναι εντελώς πανομοιότυπο με το build σε συστήματα τρίτων, όπως διακομιστές συνεχούς ενοποίησης.

Σε αντίθεση με το Make και το Ninja, το Bazel χρησιμοποιεί μια προσέγγιση υψηλότερου επιπέδου για τους κανόνες συναρμολόγησης κτιρίων, στην οποία, αντί να ορίζεται η σύνδεση των εντολών στα αρχεία που δημιουργούνται, χρησιμοποιούνται πιο αφηρημένα έτοιμα μπλοκ, όπως «δημιουργία εκτελέσιμου αρχείου σε C++», «κατασκευή βιβλιοθήκης σε C++» ή «εκτέλεση δοκιμής για C++», καθώς και αναγνώριση πλατφορμών στόχων και κατασκευής. Στο αρχείο κειμένου BUILD, τα στοιχεία του έργου περιγράφονται ως μια δέσμη βιβλιοθηκών, εκτελέσιμων αρχείων και δοκιμών, χωρίς λεπτομέρειες σε επίπεδο μεμονωμένων αρχείων και εντολών κλήσης μεταγλωττιστή. Πρόσθετη λειτουργικότητα υλοποιείται μέσω του μηχανισμού σύνδεσης επεκτάσεων.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο