Buck2, το νέο σύστημα δημιουργίας Facebook

Buck2-Ήρωας

Buck2, το νέο σύστημα δημιουργίας ανοιχτού κώδικα του Facebook

Παρουσιάστηκε το Facebook κυκλοφόρησε πρόσφατα ένα νέο σύστημα κατασκευής που ονομάζεται "Buck2", το οποίο σημειώνει ότι είναι επικεντρώθηκε στην κατασκευή έργων από αποθετήρια πολύ μεγάλα που περιλαμβάνουν κώδικα σε διαφορετικές γλώσσες προγραμματισμός.

Οι διαφορές μεταξύ της νέας εφαρμογής και του συστήματος προηγουμένως χρησιμοποιημένο buck Με facebook χρησιμοποιούν τη γλώσσα Rust αντί για Java και σημαντική αύξηση στην αποτελεσματικότητα και την απόδοση της διαδικασίας συναρμολόγησης (σε εσωτερικές δοκιμές στην ίδια υποδομή, το Buck2 εκτελεί εργασίες συναρμολόγησης δύο φορές πιο γρήγορα από το Buck).

Τα συστήματα κατασκευής βρίσκονται ανάμεσα σε έναν προγραμματιστή και τον κώδικα που εκτελείται, οπότε οτιδήποτε μπορούμε να κάνουμε για να κάνουμε την εμπειρία πιο γρήγορη ή πιο παραγωγική επηρεάζει άμεσα το πόσο αποτελεσματικός μπορεί να είναι ένας προγραμματιστής. Ο στόχος για το Buck2 ήταν να διατηρήσουμε ό,τι αγαπήσαμε στο Buck1 (τα βασικά στοιχεία και τις ροές εργασίας), να αντλήσουμε έμπνευση από καινοτομίες μετά το Buck1 (συμπεριλαμβανομένων των Bazel, Adapton και Shake) και να επικεντρωθούμε στην ταχύτητα και στην παροχή νέων εμπειριών.

Σχετικά με το Buck2

Τονίζεται ότι το σύστημα δεν συνδέεται με τη δημιουργία κώδικα σε συγκεκριμένες γλώσσες και από το κουτί, υποστηρίζει έργα δημιουργίας γραμμένων σε C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell και OCaml που χρησιμοποιούνται από το Facebook.

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

Αναφέρεται ότι Η υψηλή απόδοση επιτυγχάνεται με την προσωρινή αποθήκευση των αποτελεσμάτων, παραλληλισμός εργασιών και υποστήριξη απομακρυσμένης εκτέλεσης εργασιών (Remote Build Execution).

Το περιβάλλον κατασκευής χρησιμοποιεί την έννοια της «ερμητικότητας»: ο μεταγλωττισμένος κώδικας αποσπάται από τον έξω κόσμο, τίποτα δεν φορτώνεται από το εξωτερικό κατά τη διαδικασία κατασκευής και η επαναλαμβανόμενη εκτέλεση της εργασίας σε διαφορετικά συστήματα οδηγεί στο ίδιο αποτέλεσμα (επαναλαμβανόμενες εκδόσεις, για παράδειγμα, το αποτέλεσμα της μεταγλώττισης ενός έργου στο μηχάνημα από τον προγραμματιστή θα είναι ακριβώς το ίδιο με το build στον διακομιστή συνεχούς ενοποίησης). Η κατάσταση έλλειψης εξάρτησης γίνεται αντιληπτή στο Buck2 ως σφάλμα.

Από την πλευρά του Buck2 Βασικά Χαρακτηριστικά, ξεχωρίζουν τα ακόλουθα:

  • Οι κανόνες για την υποστήριξη γλωσσών προγραμματισμού και το βασικό σύστημα κατασκευής είναι εντελώς ξεχωριστοί. Οι κανόνες είναι γραμμένοι στη γλώσσα Starlark και το κιτ εργαλείων Starlark και η εφαρμογή είναι γραμμένα σε Rust.
  • Το σύστημα κατασκευής χρησιμοποιεί ένα ενιαίο γράφημα αυξητικής εξάρτησης (χωρίς σταδιοποίηση), το οποίο σας επιτρέπει να αυξήσετε το βάθος της παραλληλοποίησης της εργασίας σε σύγκριση με τον Buck και τον Bazel και να αποφύγετε πολλά είδη σφαλμάτων.
  • Ο κώδικας του Buck2 που δημοσιεύτηκε στο GitHub και οι κανόνες υποστήριξης της γλώσσας προγραμματισμού είναι σχεδόν πανομοιότυποι με την εσωτερική έκδοση που χρησιμοποιείται στην υποδομή του Facebook (οι μόνες διαφορές βρίσκονται στον σύνδεσμο προς τις εκδόσεις μεταγλωττιστή και τους διακομιστές κατασκευής που χρησιμοποιούνται από το Facebook). ).
  • Το σύστημα δημιουργίας έχει σχεδιαστεί για να ενσωματώνεται με συστήματα απομακρυσμένης εκτέλεσης εργασιών που σας επιτρέπουν να εκτελείτε εργασίες σε απομακρυσμένους διακομιστές. Το API απομακρυσμένης εκτέλεσης είναι συμβατό με το Bazel και έχει δοκιμαστεί για συμβατότητα με το Buildbarn και το EngFlow.
  • Παρέχεται ενοποίηση με εικονικά συστήματα αρχείων, στα οποία παρουσιάζονται τα περιεχόμενα ολόκληρου του αποθετηρίου, αλλά στην πραγματικότητα, η εργασία πραγματοποιείται με το πραγματικό τοπικό τμήμα ενός μέρους του αποθετηρίου (ο προγραμματιστής βλέπει ολόκληρο το αποθετήριο, αλλά μόνο αυτό απαιτείται) τα αρχεία στα οποία έχετε πρόσβαση ανακτώνται από το αποθετήριο). Υποστηρίζονται VFS και Git LFS που βασίζονται στο EdenFS, τα οποία χρησιμοποιούνται από τη Sapling.

Τέλος, για όσους ενδιαφέρονται να μάθουν περισσότερα για αυτό, θα πρέπει να γνωρίζουν ότι ο κώδικας διανέμεται με την άδεια Apache 2.0 και μπορούν να συμβουλευτούν τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.