Facebookek Buck2 eraikitzeko sistema argitaratu zuen

Facebook-ek eraikitze-sistema berri bat aurkeztu du, Buck2, programazio-lengoaia ezberdinetako kodea barne hartzen duten biltegi oso handietatik proiektuak eraikitzera bideratuta. Inplementazio berriaren eta Facebook-ek aurretik erabilitako Buck sistemaren arteko desberdintasun nagusiak Javaren ordez Rust lengoaia erabiltzea eta muntaketa-prozesuaren eraginkortasun eta errendimendu nabarmen handitzea dira (azpiegitura bereko barne probetan, Buck2-k muntaia egiten du). zereginak Buck baino bi aldiz azkarrago). Kodea Apache 2.0 lizentziapean banatzen da.

Sistema ez dago hizkuntza espezifikoetako eraikuntza-kodeari lotuta eta kutxatik kanpo Facebook-ek erabiltzen dituen C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell eta OCaml-en idatzitako proiektuak onartzen ditu. Python-en oinarritutako Starlark lengoaia (Bazel-en bezala) gehigarriak diseinatzeko, gidoiak eta arauak eraikitzeko erabiltzen da. Starlark-ek eraikitze-sistemaren gaitasunak zabaltzeko eta eraikitzen ari diren proiektuetan erabiltzen diren hizkuntza espezifikoetatik abstraitzeko aukera ematen du.

Errendimendu handia lortzen da emaitzen cachean, lanaren paralelizazioan eta zereginen urruneko exekuziorako laguntza (Urrutiko Eraikuntza Exekuzioa). Eraikuntza-ingurunean, "estutasuna" kontzeptua erabiltzen da - konpilatutako kodea kanpotik mozten da, eraikuntza-prozesuan ez da ezer kargatzen kanpotik, eta sistema ezberdinetan lan errepikatuz gero emaitza bera dakar ( errepikatutako eraikuntzak, adibidez, proiektu bat garatzailearen makinan eraikitzearen emaitza etengabeko integrazio zerbitzarian eraikitakoaren berdina izango da). Mendekotasun ezaren egoera akats gisa hautematen da Buck2n.

Buck2 ezaugarri nagusiak:

  • Programazio lengoaiak onartzen dituzten arauak eta eraikuntza sistemaren muina guztiz bereizita daude. Arauak Starlark hizkuntzan idatzita daude, eta Starlark tresna eta ezarpena Rust-en idatzita daude.
  • Eraikuntza-sistemak mendekotasun grafiko inkremental bakarra erabiltzen du (etapatan zatitu gabe), eta horrek Buck eta Bazel-ekin alderatuta lanaren paralelizazio sakontasuna areagotu eta akats mota asko saihesteko aukera ematen du.
  • GitHub-en argitaratutako Buck2 kodea eta programazio-lengoaiaren euskarriaren arauak Facebook-en azpiegituran erabiltzen den barne-bertsioaren ia berdinak dira (desberdintasun bakarrak konpiladoreen edizioetara eta Facebook-ek erabiltzen dituen zerbitzariak eraikitzeko lotzean daude).
  • Eraikuntza-sistema urruneko zerbitzarietan lanak exekutatzeko aukera ematen duten urruneko lanak exekutatzeko sistemekin integratzeko diseinatuta dago. Urruneko exekuzio APIa Bazel-ekin bateragarria da eta Buildbarn eta EngFlow-ekin bateragarritasuna probatu da.
  • Fitxategi-sistema birtualekin integrazioa eskaintzen da, eta bertan biltegi osoaren edukia aurkezten da, baina, hain zuzen ere, biltegiaren zati baten benetako tokiko zatiarekin egiten da lana (garatzaileak biltegi osoa ikusten du, baina beharrezkoa dena soilik). atzitzen diren fitxategiak biltegitik berreskuratzen dira). EdenFS eta Git LFSn oinarritutako VFS onartzen dira, Sapling-ek erabiltzen dituena.

Iturria: opennet.ru

Gehitu iruzkin berria