UFacebook upapashe inkqubo yokwakha iBuck2

I-Facebook yazisa inkqubo entsha yokwakha, i-Buck2, ejoliswe ekuququzeleleni ukwakhiwa kweeprojekthi ezivela kwiindawo zokugcina ezinkulu kakhulu, kuquka ikhowudi kwiilwimi ezahlukeneyo zokucwangcisa. Iiyantlukwano eziphambili phakathi kokuphunyezwa okutsha kunye nenkqubo yeBuck eyayisetyenziswa ngaphambili kwi-Facebook kukusetyenziswa kolwimi lweRust endaweni yeJava kunye nokwanda okukhulu kwentsebenzo kunye nemveliso yenkqubo yendibano (kwiimvavanyo zangaphakathi kwisiseko esifanayo, iBuck2 yenza indibano. imisebenzi kabini ngokukhawuleza njengoBuck). Ikhowudi ihanjiswa phantsi kwelayisensi ye-Apache 2.0.

Inkqubo ayibotshwanga kwindibano yekhowudi kwiilwimi ezithile kwaye ngaphandle kwebhokisi ixhasa ukuhlanganiswa kweeprojekthi ezibhalwe ngeelwimi C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell kunye neOCaml. , esetyenziswa nguFacebook. Ulwimi lweStarlark, olusekwe kwiPython (njengaseBazel), lusetyenziselwa ukuyila izongezo, ukwakha izikripthi kunye nemithetho. I-Starlark ikuvumela ukuba wandise amandla enkqubo yendibano kwaye ukhuphe kwiilwimi ezithile ezisetyenziswa kwiiprojekthi ezidibeneyo.

Ukusebenza okuphezulu kufezekiswa ngokugcinwa kweziphumo, ukuhambelana komsebenzi kunye nenkxaso yokwenziwa kwemisebenzi ekude (iRemote Build Execution). Kwindawo yendibano, ingqikelelo ye "hermeticity" isetyenzisiwe - ikhowudi edibeneyo inqunyulwe kwihlabathi langaphandle, akukho nto ilayishwayo ngaphandle ngexesha lendibano, kwaye ukuphunyezwa ngokuphindaphindiweyo komsebenzi kwiinkqubo ezahlukeneyo kukhokelela kwisiphumo esifanayo. iindibano eziphindaphindiweyo, umzekelo, umphumo wokudibanisa iprojekthi kumatshini womphuhlisi uya kufana ngokupheleleyo nokwakhiwa kumncedisi wokudibanisa okuqhubekayo). Imeko yokungabikho kokuxhomekeka ibonwa njengempazamo kwi-Buck2.

Iimpawu eziphambili zeBuck2:

  • Imigaqo yokuxhasa iilwimi zeprogram kunye nondoqo wenkqubo yendibano yahluke ngokupheleleyo. Imigaqo isebenzisa ulwimi lwe-Starlark, kunye ne-Starlark toolkit kunye nokuphunyezwa kubhalwe kwi-Rust.
  • Inkqubo yokudibanisa isebenzisa igrafu yokuxhomekeka okunyukayo (ngaphandle kokwahlula kwizigaba), evumela ukwandisa ubunzulu bokuhambelana komsebenzi xa kuthelekiswa neBuck kunye neBazel kunye nokuphepha ezininzi iintlobo zeempazamo.
  • Ikhowudi ye-Buck2 epapashwe kwi-GitHub kunye nemithetho yokuxhasa iilwimi zeprogram iphantse yafana noguqulelo lwangaphakathi olusetyenziswe kwisiseko se-Facebook (umahluko kuphela unxulumene nokuhlelwa kwabaqulunqi kunye neeseva zendibano ezisetyenziswa kuFacebook).
  • Inkqubo yendibano yenzelwe iliso lokudibanisa kunye neenkqubo ezikude zokwenziwa komsebenzi ezikuvumela ukuba usebenze umsebenzi kwiiseva ezikude. I-API yokubulawa ekude iyahambelana ne-Bazel kwaye ivavanyelwe ukuhambelana ne-Buildbarn kunye ne-EngFlow.
  • Udibaniso kunye neenkqubo zefayile ezibonakalayo zinikezelwa, apho imixholo yendawo yonke yokugcina ibonakaliswe, kodwa eneneni, umsebenzi uqhutywa ngesilayi sangoku sendawo yendawo yokugcina (umphuhlisi ubona yonke indawo yokugcina, kodwa iifayile ezifunekayo kuphela. ezifikelelweyo zitsalwa kwindawo yokugcina). I-VFS esekwe kwi-EdenFS kunye ne-Git LFS, ezisetyenziswa kwiSapling, ziyaxhaswa.

umthombo: opennet.ru

Yongeza izimvo