Facebook pibliye sistèm konstriksyon Buck2 la

Facebook te entwodui yon nouvo sistèm bati, Buck2, ki vize a òganize bati pwojè ki soti nan depo gwo anpil, ki gen ladan kòd nan diferan lang pwogramasyon. Diferans kle ant nouvo aplikasyon an ak sistèm Buck te itilize deja nan Facebook yo se itilizasyon lang Rust olye de Java ak yon ogmantasyon siyifikatif nan efikasite ak pwodiktivite pwosesis asanble a (nan tès entèn nan menm enfrastrikti a, Buck2 fè asanblaj). travay de fwa pi vit ke Buck). Kòd la distribye anba lisans Apache 2.0.

Sistèm nan pa mare nan asanble kòd nan lang espesifik ak soti nan bwat la sipòte asanble a nan pwojè ekri nan lang C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell ak OCaml. , itilize pa Facebook. Lang Starlark, ki baze sou Python (tankou nan Bazel), yo itilize pou konsepsyon adisyon, bati scripts ak règ. Starlark pèmèt ou elaji kapasite sistèm asanble a ak abstrè nan lang espesifik yo itilize nan pwojè yo reyini.

Se gwo pèfòmans reyalize nan kachèt rezilta yo, paralelizasyon travay ak sipò pou ekzekisyon aleka nan travay (Remote Build Execution). Nan anviwònman asanble a, yo itilize konsèp nan "hermeticity" - kòd la rasanble koupe soti nan mond lan deyò, pa gen anyen ki chaje soti nan deyò a pandan pwosesis asanble a, ak ekzekisyon repete nan travay sou diferan sistèm mennen nan menm rezilta a ( repete asanble, pou egzanp, rezilta a nan rasanble yon pwojè sou machin pwomotè a pral konplètman ki idantik ak bati a sou sèvè a entegrasyon kontinyèl). Se sitiyasyon an nan mank depandans pèrsu kòm yon erè nan Buck2.

Karakteristik kle nan Buck2:

  • Règ yo pou sipòte langaj pwogramasyon ak nwayo a nan sistèm asanble a yo konplètman separe. Règ yo sèvi ak lang Starlark, ak zouti Starlark ak aplikasyon an ekri nan Rust.
  • Sistèm asanble a sèvi ak yon sèl graf depandans incrémentielle (san divizyon an etap), ki pèmèt ogmante pwofondè paralelizasyon travay konpare ak Buck ak Bazel epi evite plizyè kalite erè.
  • Kòd Buck2 pibliye sou GitHub ak règ yo pou sipòte langaj pwogramasyon yo prèske idantik ak vèsyon entèn yo itilize nan enfrastrikti Facebook la (diferans yo sèlman yo se an relasyon ak edisyon yo nan konpilateur ak sèvè asanble yo itilize nan Facebook).
  • Se sistèm nan asanble ki fèt ak yon je nan entegrasyon ak sistèm ekzekisyon travay aleka ki pèmèt ou kouri travay sou serveurs aleka. API ekzekisyon aleka a konpatib ak Bazel epi li teste pou konpatibilite ak Buildbarn ak EngFlow.
  • Yo bay entegrasyon ak sistèm dosye vityèl, kote sa ki nan depo tout antye yo prezante, men an reyalite, travay yo te pote soti ak yon tranch aktyèl lokal nan yon pati nan depo a (pwomotè a wè tout depo a, men se sèlman fichye obligatwa yo. ki jwenn aksè yo ekstrè soti nan depo a). VFS ki baze sou EdenFS ak Git LFS, ki itilize nan Sapling, yo sipòte.

Sous: opennet.ru

Add nouvo kòmantè