Facebook huet de Buck2 Build System verëffentlecht

Facebook huet en neie Bausystem, Buck2, agefouert, fir de Bau vu Projeten aus ganz grousse Repositories ze organiséieren, dorënner Code a verschiddene Programméierungssproochen. Déi Schlësselunterscheeder tëscht der neier Implementatioun an dem Buck System, dee virdru bei Facebook benotzt gouf, sinn d'Benotzung vun der Rust Sprooch anstatt Java an eng bedeitend Erhéijung vun der Effizienz an der Produktivitéit vum Montageprozess (an internen Tester an der selwechter Infrastruktur mécht Buck2 Assemblée Aufgaben duebel sou séier wéi Buck). De Code gëtt ënner der Apache 2.0 Lizenz verdeelt.

De System ass net un der Assemblée vum Code a spezifesche Sproochen gebonnen an aus der Këscht ënnerstëtzt d'Assemblée vu Projete geschriwwe an de Sproochen C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell an OCaml , vun Facebook benotzt. D'Starlark Sprooch, baséiert op Python (wéi am Bazel), gëtt benotzt fir Add-ons ze designen, Scripten a Reegelen ze bauen. Starlark erlaabt Iech d'Kapazitéiten vum Versammlungssystem auszebauen an aus de spezifesche Sproochen ze abstrakt, déi an de montéierte Projete benotzt ginn.

Héich Leeschtung gëtt erreecht duerch Cache vu Resultater, Paralleliséierung vun der Aarbecht an Ënnerstëtzung fir Fernausféierung vun Aufgaben (Remote Build Execution). Am Versammlungsëmfeld gëtt d'Konzept vun "Hermetizitéit" benotzt - de versammelt Code gëtt vun der Äussewelt ofgeschnidden, näischt gëtt vu baussen während dem Montageprozess gelueden, a widderholl Ausféierung vun der Aarbecht op verschiddene Systemer féiert zum selwechte Resultat ( widderholl Versammlungen, zum Beispill, d'Resultat vun der Assemblée vum Projet op der Maschinn vum Entwéckler wäert komplett identesch sinn mat dem Bau op de kontinuéierlechen Integratiounsserver). D'Situatioun vum Mangel un Ofhängegkeet gëtt als Feeler am Buck2 ugesinn.

Schlëssel Feature vum Buck2:

  • D'Regele fir d'Ënnerstëtzung vun de Programméierungssproochen an de Kär vum Versammlungssystem si komplett getrennt. D'Regele benotzen d'Starlark Sprooch, an d'Starlark Toolkit an d'Ëmsetzung sinn a Rust geschriwwen.
  • D'Assemblée System benotzt eng eenzeg inkrementell Ofhängegkeet Grafiken (ouni Divisioun an Etappe), déi d'Déift vun parallelization vun Aarbecht Verglach zu Buck an Bazel erlaabt a vill Zorte vu Feeler ze vermeiden.
  • De Buck2 Code publizéiert op GitHub an d'Regele fir d'Programméierungssproochen z'ënnerstëtzen si bal identesch mat der interner Versioun, déi an der Facebook Infrastruktur benotzt gëtt (déi eenzeg Differenzen si par rapport zu den Editiounen vu Compileren a Versammlungsserveren, déi op Facebook benotzt ginn).
  • De Versammlungssystem ass entworf mat engem Auge fir Integratioun mat Remote Task Ausféierung Systemer déi Iech erlaben Aarbecht op Remote Serveren ze lafen. D'Remote Ausféierung API ass kompatibel mat Bazel a getest fir Kompatibilitéit mat Buildbarn an EngFlow.
  • Integratioun mat virtuelle Dateiesystemer gëtt zur Verfügung gestallt, an deenen den Inhalt vum ganze Repository presentéiert gëtt, awer tatsächlech gëtt d'Aarbecht mat engem aktuellen lokale Slice vum Deel vum Repository duerchgefouert (den Entwéckler gesäit de ganze Repository, awer nëmmen déi erfuerderlech Dateien déi zougänglech sinn, ginn aus dem Repository extrahéiert). VFS baséiert op EdenFS a Git LFS, déi am Sapling benotzt ginn, ginn ënnerstëtzt.

Source: opennet.ru

Setzt e Commentaire