I-Facebook yethule uhlelo olusha lokwakha, i-Buck2, okuhloswe ngayo ukuhlela ukwakhiwa kwamaphrojekthi kusuka kumakhosombe amakhulu kakhulu, kufaka phakathi ikhodi ngezilimi zokuhlela ezahlukahlukene. Umehluko oyinhloko phakathi kokuqaliswa okusha nohlelo lwe-Buck olwalusetshenziswa ngaphambilini ku-Facebook ukusetshenziswa kolimi lwe-Rust esikhundleni se-Java kanye nokwanda okukhulu ekusebenzeni kahle nasekukhiqizeni inqubo yokuhlanganisa (ekuhlolweni kwangaphakathi kwingqalasizinda efanayo, i-Buck2 yenza umhlangano. imisebenzi kabili ngokushesha njengoBuck). Ikhodi isatshalaliswa ngaphansi kwelayisensi ye-Apache 2.0.
Uhlelo aluboshelwe ekuhlanganisweni kwekhodi ngezilimi ezithile futhi ngaphandle kwebhokisi kusekela ukuhlanganiswa kwamaphrojekthi abhalwe ngezilimi C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell kanye ne-OCaml , esetshenziswa yi-Facebook. Ulimi lwe-Starlark, olusekelwe ku-Python (njengase-Bazel), lusetshenziselwa ukuklama izengezo, ukwakha imibhalo nemithetho. I-Starlark ikuvumela ukuthi unwebe amandla esistimu yokuhlanganisa futhi ucabangele ezilimini ezithile ezisetshenziswa kumaphrojekthi ahlanganisiwe.
Ukusebenza okuphezulu kutholakala ngokugcinwa kwemininingwane, ukuhambisana, kanye nokusekelwa kokwenziwa kokwakhiwa okude. Indawo yokwakha isebenzisa umqondo "wokungaguquguquki"—ikhodi eyakhiwe ihlukanisiwe nezwe langaphandle, akukho lutho olulayishwa ngaphandle ngesikhathi senqubo yokwakha, futhi ukwenziwa okuphindaphindiwe kwemisebenzi ezinhlelweni ezahlukene kukhiqiza umphumela ofanayo (isibonelo, ngokwakhiwa okuphindaphindiwe, umphumela wokwakhiwa kwephrojekthi emshinini wonjiniyela uzofana ngokuphelele nokwakhiwa okukuyo. iseva ukuhlanganiswa okuqhubekayo). Ukungabikho kokuthembela kubhekwa njengephutha ku-Buck2.
Izici ezibalulekile ze-Buck2:
- Imithetho yokusekela izilimi zokuhlela kanye nomnyombo wesistimu yokuhlanganisa ihluke ngokuphelele. Imithetho isebenzisa ulimi lwe-Starlark, kanye nekhithi yamathuluzi ye-Starlark nokusebenzisa kubhalwe nge-Rust.
- Isistimu yokuhlanganisa isebenzisa igrafu eyodwa yokuncika okukhuphukayo (ngaphandle kokuhlukaniswa ngezigaba), okuvumela ukukhulisa ukujula kokuhambisana komsebenzi uma kuqhathaniswa no-Buck no-Bazel nokugwema izinhlobo eziningi zamaphutha.
- Ikhodi ye-Buck2 eshicilelwe ku-GitHub kanye nemithetho yokusekela izilimi zokuhlela icishe ifane nenguqulo yangaphakathi esetshenziswe kungqalasizinda ye-Facebook (umehluko kuphela ohlobene nezinhlelo zabadidiyeli namaseva wokuhlanganisa asetshenziswa ku-Facebook).
- Uhlelo lokuhlanganisa lwakhiwe ngenhloso yokuhlanganiswa nezinhlelo zokwenza imisebenzi ekude, okuvumela umsebenzi ukuthi uqaliswe kude amasevaI-remote execution API iyahambisana ne-Bazel futhi ihlolwe ukuthi iyahambisana ne-Buildbarn kanye ne-EngFlow.
- Ukuhlanganiswa nezinhlelo zefayela ezibonakalayo kunikezwa, lapho okuqukethwe kwenqolobane yonke kuvezwa, kodwa empeleni, umsebenzi wenziwa ngocezu lwamanje lwengxenye yendawo yokugcina (umthuthukisi ubona yonke inqolobane, kodwa amafayela adingekayo kuphela. ezifinyelelwe zikhishwa kunqolobane). I-VFS esekelwe ku-EdenFS ne-Git LFS, esetshenziswa ku-Sapling, iyasekelwa.
Source: opennet.ru
