Gipatik sa Facebook ang Buck2 build system

Gipaila sa Facebook ang usa ka bag-ong sistema sa pagtukod, ang Buck2, nga naka-focus sa pagtukod sa mga proyekto gikan sa dagkong mga repository nga naglakip sa code sa lain-laing mga programming language. Ang mahinungdanong mga kalainan tali sa bag-ong pagpatuman ug sa Buck system nga gigamit kaniadto sa Facebook mao ang paggamit sa Rust nga pinulongan imbes sa Java ug usa ka mahinungdanon nga pag-uswag sa kahusayan ug paghimo sa proseso sa asembliya (sa internal nga mga pagsulay sa samang imprastraktura, ang Buck2 naghimo sa asembliya. mga buluhaton nga doble ka paspas kay sa Buck). Ang code giapod-apod ubos sa Apache 2.0 nga lisensya.

Ang sistema wala gihigot sa code sa pagtukod sa piho nga mga pinulongan ug sa gawas sa kahon nagsuporta sa mga proyekto sa pagtukod nga gisulat sa C ++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell ug OCaml nga gigamit sa Facebook. Ang Starlark nga pinulongan nga gibase sa Python (sama sa Bazel) gigamit sa pagdesinyo sa mga add-on, paghimo og mga script ug mga lagda. Gitugotan ka sa Starlark nga palapdan ang mga kapabilidad sa sistema sa pagtukod ug abstract gikan sa piho nga mga sinultian nga gigamit sa mga proyekto nga gitukod.

Ang taas nga performance makab-ot pinaagi sa caching sa mga resulta, parallelization sa trabaho ug suporta alang sa hilit nga pagpatuman sa mga buluhaton (Remote Build Execution). Sa palibot sa pagtukod, gigamit ang konsepto sa "hugot" - ang gihugpong nga code giputol gikan sa gawas nga kalibutan, wala’y gikarga gikan sa gawas sa panahon sa proseso sa pagtukod, ug ang balik-balik nga pagpatuman sa trabaho sa lainlaing mga sistema nagdala sa parehas nga sangputanan ( balik-balik nga mga pagtukod, pananglitan, ang resulta sa pagtukod og proyekto sa makina sa developer mao ra gyud ang pagtukod sa padayon nga integration server). Ang kahimtang sa kakulang sa pagsalig gitan-aw sa Buck2 ingon usa ka sayup.

Buck2 yawe nga mga bahin:

  • Ang mga lagda alang sa pagsuporta sa mga programming language ug ang kinauyokan sa sistema sa pagtukod hingpit nga gibulag. Ang mga lagda gisulat sa Starlark nga pinulongan, ug ang Starlark toolkit ug pagpatuman gisulat sa Rust.
  • Ang sistema sa pagtukod naggamit sa usa ka incremental dependency graph (nga walay pagbahin sa mga yugto), nga nagtugot kanimo sa pagdugang sa giladmon sa parallelization sa trabaho kumpara sa Buck ug Bazel ug paglikay sa daghang matang sa mga sayop.
  • Ang Buck2 code nga gipatik sa GitHub ug ang programming language support rules halos parehas sa internal nga bersyon nga gigamit sa imprastraktura sa Facebook (ang mga kalainan lang kay sa paggapos sa mga edisyon sa compiler ug pagtukod og mga server nga gigamit sa Facebook).
  • Ang sistema sa pagtukod gidisenyo nga adunay usa ka mata sa paghiusa sa mga hilit nga sistema sa pagpatuman sa trabaho nga nagtugot kanimo sa pagpadagan sa mga trabaho sa mga hilit nga server. Ang remote execution API kay compatible sa Bazel ug nasulayan na para sa compatibility sa Buildbarn ug EngFlow.
  • Ang panagsama sa virtual file system gihatag, diin ang mga sulud sa tibuuk nga repository gipresentar, apan sa tinuud, ang trabaho gihimo uban ang aktwal nga lokal nga hiwa sa usa ka bahin sa repository (nakita sa developer ang tibuuk nga repositoryo, apan ang gikinahanglan lamang Ang mga file nga na-access makuha gikan sa repository). Gisuportahan ang VFS base sa EdenFS ug Git LFS, nga gigamit ni Sapling.

Source: opennet.ru

Idugang sa usa ka comment