Facebook системаи сохтани Buck2-ро нашр кард

Facebook системаи нави сохтани Buck2-ро муаррифӣ кард, ки ба ташкили сохтани лоиҳаҳо аз анбори хеле калон, аз ҷумла код бо забонҳои гуногуни барномасозӣ нигаронида шудааст. Тафовутҳои калидии татбиқи нав ва системаи Buck, ки қаблан дар Facebook истифода мешуданд, истифодаи забони Rust ба ҷои Java ва афзоиши назарраси самаранокӣ ва маҳсулнокии раванди васлкунӣ мебошанд (дар санҷишҳои дохилӣ дар як инфрасохтор, Buck2 васлкуниро иҷро мекунад. супоришхоро ду баробар тезтар аз Бак). Рамз таҳти иҷозатномаи Apache 2.0 паҳн карда мешавад.

Система ба маҷмӯи кодҳо бо забонҳои мушаххас алоқаманд нест ва берун аз қуттӣ маҷмӯи лоиҳаҳои бо забонҳои C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell ва OCaml навишташударо дастгирӣ мекунад. , аз ҷониби Facebook истифода мешавад. Забони Starlark, ки ба Python асос ёфтааст (ба монанди дар Bazel) барои тарҳрезии изофаҳо, сохтани скриптҳо ва қоидаҳо истифода мешавад. Starlark ба шумо имкон медиҳад, ки имкониятҳои системаи васлкуниро васеъ кунед ва аз забонҳои мушаххасе, ки дар лоиҳаҳои ҷамъшуда истифода мешаванд, реферат кунед.

Маҳсулнокии баланд тавассути кэшкунии натиҷаҳо, параллелизатсияи кор ва дастгирии иҷрои фосилавии супоришҳо (Remote Build Execution) ба даст оварда мешавад. Дар муҳити васлкунӣ мафҳуми «герметикӣ» истифода мешавад - рамзи ҷамъшуда аз ҷаҳони беруна бурида мешавад, дар ҷараёни васлкунӣ ҳеҷ чиз аз берун бор карда намешавад ва иҷрои такрории кор дар системаҳои гуногун ба як натиҷа оварда мерасонад ( маҷлисҳои такрорӣ, масалан, натиҷаи васл кардани лоиҳа дар мошини таҳиякунанда ба сохташуда дар сервери муттаҳидсозии муттасил комилан шабеҳ хоҳад буд). Вазъияти набудани вобастагӣ ҳамчун хато дар Buck2 қабул карда мешавад.

Хусусиятҳои асосии Buck2:

  • Қоидаҳои дастгирии забонҳои барномасозӣ ва асосии системаи ассамблея комилан алоҳидаанд. Қоидаҳо забони Starlark-ро истифода мебаранд ва асбобҳо ва татбиқи Starlark дар Rust навишта шудаанд.
  • Системаи васлкунӣ графики ягонаи вобастагии афзояндаро истифода мебарад (бе тақсимот ба марҳилаҳо), ки имкон медиҳад умқи параллелизатсияи корро нисбат ба Бак ва Базел зиёд кунад ва аз бисёр хатогиҳо канорагирӣ кунад.
  • Рамзи Buck2, ки дар GitHub нашр шудааст ва қоидаҳои дастгирии забонҳои барномасозӣ тақрибан бо версияи дохилие, ки дар инфрасохтори Facebook истифода мешаванд, якхелаанд (танҳо фарқиятҳо дар робита бо нашри компиляторҳо ва серверҳои ассембӣ дар Facebook истифода мешаванд).
  • Системаи васлкунӣ бо назардошти ҳамгироӣ бо системаҳои иҷрои вазифаҳои дурдаст тарҳрезӣ шудааст, ки ба шумо имкон медиҳад корҳоро дар серверҳои дурдаст иҷро кунед. API-и иҷрои дурдаст бо Bazel мувофиқ аст ва барои мутобиқат бо Buildbarn ва EngFlow санҷида шудааст.
  • Интегратсия бо системаҳои файлии виртуалӣ таъмин карда мешавад, ки дар он мундариҷаи тамоми анбор пешниҳод карда мешавад, аммо дар асл, кор бо як буридаи маҳаллии як қисми репозиторий анҷом дода мешавад (таҳиягар тамоми анборро мебинад, аммо танҳо файлҳои заруриро мебинад. ки дастрасанд, аз анбор гирифта мешаванд). VFS дар асоси EdenFS ва Git LFS, ки дар Sapling истифода мешаванд, дастгирӣ карда мешаванд.

Манбаъ: opennet.ru

Илова Эзоҳ