Buck2, das neue Facebook-Build-System

Buck2-Hero

Buck2, das neue Open-Source-Build-System von Facebook

Facebook eingeführt kürzlich ein neues Build-System namens "Buck2" veröffentlicht, das darauf hinweist, dass es so ist konzentrierte sich auf Bauprojekte aus Endlagern sehr große, die Code in verschiedenen Sprachen enthalten Programmierung.

Die Unterschiede zwischen der neuen Implementierung und dem System zuvor verwendeter Bock Von Facebook verwenden die Sprache Rust anstelle von Java und eine signifikante Steigerung der Effizienz und Leistung des Montageprozesses (in internen Tests auf derselben Infrastruktur führt Buck2 Montageaufgaben doppelt so schnell aus wie Buck).

Build-Systeme stehen zwischen einem Entwickler und seinem ausgeführten Code. Alles, was wir tun können, um die Erfahrung schneller oder produktiver zu machen, wirkt sich also direkt darauf aus, wie effektiv ein Entwickler sein kann. Das Ziel von Buck2 war es, das beizubehalten, was wir an Buck1 geliebt haben (die Grundlagen und Arbeitsabläufe), sich von Innovationen nach Buck1 (einschließlich Bazel, Adapton und Shake) inspirieren zu lassen und sich auf Geschwindigkeit und die Ermöglichung neuer Erfahrungen zu konzentrieren.

Über Buck2

Es wird hervorgehoben, dass Das System ist nicht an die Erstellung von Code in bestimmten Sprachen gebunden und standardmäßig unterstützt es Builder-Projekte, die in C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell und OCaml geschrieben sind und von Facebook verwendet werden.

Die Starlark-Sprache, basierend auf Python (wie in Bazel), wird verwendet, um Plugins zu entwerfen, Skripte und Regeln zu erstellen. Mit Starlark können Sie die Fähigkeiten des Build-Systems erweitern und von den spezifischen Sprachen abstrahieren, die in den zu erstellenden Projekten verwendet werden.

Es wird das erwähnt Durch das Zwischenspeichern der Ergebnisse wird eine hohe Leistung erzielt, Parallelisierung der Arbeit und Unterstützung der Remote-Ausführung von Aufgaben (Remote Build Execution).

Die Build-Umgebung verwendet das Konzept der "Hermetizität": der kompilierte Code von der Außenwelt abgekoppelt ist, während des Build-Prozesses nichts von außen geladen wird und die wiederholte Ausführung des Jobs auf verschiedenen Systemen zum gleichen Ergebnis führt (wiederholte Builds beispielsweise das Ergebnis der Kompilierung eines Projekts auf der Maschine des Entwicklers genau derselbe ist wie der Build auf dem Continuous-Integration-Server). Die fehlende Abhängigkeitssituation wird in Buck2 als Bug empfunden.

Auf Seiten der Hauptmerkmale von Buck2, die folgenden fallen auf:

  • Die Regeln für die Unterstützung von Programmiersprachen und das Core-Build-System sind völlig getrennt. Die Regeln sind in der Starlark-Sprache geschrieben, und das Starlark-Toolkit und die Implementierung sind in Rust geschrieben.
  • Das Build-System verwendet ein einzelnes inkrementelles Abhängigkeitsdiagramm (kein Staging), mit dem Sie die Parallelisierungstiefe der Arbeit im Vergleich zu Buck und Bazel erhöhen und viele Arten von Fehlern vermeiden können.
  • Der auf GitHub veröffentlichte Code von Buck2 und die Regeln zur Unterstützung der Programmiersprache sind fast identisch mit der internen Version, die in der Infrastruktur von Facebook verwendet wird (die einzigen Unterschiede bestehen im Link zu Compiler-Editionen und Build-Servern, die von Facebook verwendet werden). ).
  • Das Build-System ist für die Integration mit Remote-Job-Ausführungssystemen konzipiert, die es Ihnen ermöglichen, Jobs auf Remote-Servern auszuführen. Die Remote-Ausführungs-API ist mit Bazel kompatibel und wurde auf Kompatibilität mit Buildbarn und EngFlow getestet.
  • Die Integration mit virtuellen Dateisystemen wird bereitgestellt, in denen der Inhalt des gesamten Repositorys präsentiert wird, aber tatsächlich wird die Arbeit mit dem realen lokalen Teil eines Teils des Repositorys ausgeführt (der Entwickler sieht das gesamte Repository, aber nur das, was ist erforderlich) Dateien, auf die zugegriffen wird, werden aus dem Repository abgerufen). EdenFS-basiertes VFS und Git LFS werden unterstützt, die von Sapling verwendet werden.

Schließlich sollten diejenigen, die daran interessiert sind, mehr darüber zu erfahren, wissen, dass der Code unter der Apache 2.0-Lizenz vertrieben wird, und sie können die Details einsehen im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.