Buck2, nauja „Facebook“ kūrimo sistema

Buck2-Herojus

Buck2, nauja Facebook atvirojo kodo kūrimo sistema

Facebook pristatė neseniai išleido naują kūrimo sistemą pavadinimu „Buck2“, kuri pažymi, kad taip yra orientuota į statybos projektus iš saugyklų labai dideli, kuriuose yra kodas skirtingomis kalbomis programavimas.

Skirtumai tarp naujojo diegimo ir sistemos anksčiau naudotas bakas „Facebook“ tinkle naudoja Rust kalbą, o ne Java ir reikšmingas surinkimo proceso efektyvumo ir našumo padidėjimas (vidiniuose bandymuose toje pačioje infrastruktūroje „Buck2“ surinkimo užduotis atlieka dvigubai greičiau nei „Buck“).

Sukūrimo sistemos yra tarp kūrėjo ir jo vykdomo kodo, todėl viskas, ką galime padaryti, kad patirtis būtų greitesnė ar produktyvesnė, tiesiogiai veikia kūrėjo efektyvumą. „Buck2“ tikslas buvo išlaikyti tai, kas mums patiko „Buck1“ (pagrindai ir darbo eigos), pasisemti įkvėpimo iš naujovių po „Buck1“ (įskaitant „Bazel“, „Adapton“ ir „Shake“) ir sutelkti dėmesį į greitį bei naujų patirčių suteikimą.

Apie Buck2

Tai pabrėžiama sistema nėra susieta su kodo kūrimu konkrečiomis kalbomis ir iš dėžutės, jis palaiko kūrėjų projektus, parašytus C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell ir OCaml, kuriuos naudoja Facebook.

„Starlark“ kalba, pagrįsta Python (kaip ir „Bazel“), naudojama kuriant papildinius, kurti scenarijus ir taisykles. „Starlark“ leidžia išplėsti kūrimo sistemos galimybes ir atsiriboti nuo konkrečių kalbų, naudojamų kuriamuose projektuose.

Minima, kad didelis našumas pasiekiamas talpinant rezultatus, darbo lygiagretinimas ir nuotolinio užduočių vykdymo palaikymas (Remote Build Execution).

Statybos aplinka vartoja „hermetiškumo“ sąvoką: sukompiliuotas kodas yra atskirtas nuo išorinio pasaulio, kūrimo proceso metu niekas neįkeliamas iš išorės, o pakartotinis užduoties vykdymas skirtingose ​​sistemose duoda tą patį rezultatą (pakartotinis statymas, pavyzdžiui, projekto kompiliavimo rezultatas Kūrėjo sukurta mašina bus lygiai tokia pati kaip nuolatinio integravimo serverio kūrimas). Priklausomybės nebuvimas Buck2 suvokiamas kaip klaida.

Iš dalies „Buck2“ pagrindinės savybės, išsiskiria:

  • Programavimo kalbų ir pagrindinės kūrimo sistemos palaikymo taisyklės yra visiškai atskiros. Taisyklės parašytos Starlark kalba, o Starlark įrankių rinkinys ir įgyvendinimas parašyti Rust.
  • Sukūrimo sistema naudoja vieną laipsnišką priklausomybės grafiką (be pakopų), kuris leidžia padidinti darbo lygiagretumo gylį, palyginti su „Buck“ ir „Bazel“, ir išvengti daugybės klaidų.
  • „GitHub“ paskelbtas „Buck2“ kodas ir programavimo kalbos palaikymo taisyklės yra beveik identiškos „Facebook“ infrastruktūroje naudojamai vidinei versijai (skirtumai yra tik nuorodoje į kompiliatorių leidimus ir „Facebook“ naudojamus serverius).
  • Sukūrimo sistema skirta integruoti su nuotolinio užduočių vykdymo sistemomis, kurios leidžia vykdyti užduotis nuotoliniuose serveriuose. Nuotolinio vykdymo API suderinama su „Bazel“ ir buvo patikrinta, ar suderinama su „Buildbarn“ ir „EngFlow“.
  • Suteikiama integracija su virtualiomis failų sistemomis, kuriose pateikiamas visos saugyklos turinys, tačiau iš tikrųjų darbas atliekamas su realia vietos saugyklos dalimi (kūrėjas mato visą saugyklą, bet tik tai, kas būtina) failai, prie kurių buvo pasiekiami, yra paimami iš saugyklos). Palaikomos EdenFS pagrindu sukurtos VFS ir Git LFS, kurias naudoja „Sapling“.

Galiausiai, norintys sužinoti daugiau apie tai, jie turėtų žinoti, kad kodas platinamas pagal Apache 2.0 licenciją, ir jie gali peržiūrėti išsamią informaciją. Šioje nuorodoje.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.