Buck2, sistemi i ri i ndërtimit të Facebook

Zero

Buck2, sistemi i ri i krijimit me burim të hapur të Facebook

Facebook prezantoi kohët e fundit ka lëshuar një sistem të ri ndërtimi të quajtur "Buck2", i cili vëren se është fokusuar në ndërtimin e projekteve nga depot shumë të mëdha që përfshijnë kode në gjuhë të ndryshme programimi.

Dallimet ndërmjet implementimit të ri dhe sistemit dollar të përdorur më parë Me facebook po përdorin gjuhën Rust në vend të Java dhe një rritje të konsiderueshme në efikasitetin dhe performancën e procesit të montimit (në testet e brendshme në të njëjtën infrastrukturë, Buck2 kryen detyrat e montimit dy herë më shpejt se Buck).

Sistemet e ndërtimit qëndrojnë midis një zhvilluesi dhe kodit të tij që ekzekutohet, kështu që çdo gjë që mund të bëjmë për ta bërë përvojën më të shpejtë ose më produktive, ndikon drejtpërdrejt se sa efektiv mund të jetë një zhvillues. Qëllimi për Buck2 ishte të ruanim atë që na pëlqente te Buck1 (bazat dhe rrjedhat e punës), të frymëzoheshim nga risitë pas Buck1 (përfshirë Bazel, Adapton dhe Shake) dhe të përqendroheshim në shpejtësinë dhe mundësimin e përvojave të reja.

Rreth Buck2

Theksohet se sistemi nuk është i lidhur me krijimin e kodit në gjuhë të veçanta dhe jashtë kutisë, ai mbështet projektet ndërtuese të shkruara në C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell dhe OCaml të përdorura nga Facebook.

Gjuha Starlark, e bazuar në Python (si në Bazel), përdoret për të dizajnuar shtojca, për të krijuar skripta dhe rregulla. Starlark ju lejon të zgjeroni aftësitë e sistemit të ndërtimit dhe të abstraktoni nga gjuhët specifike të përdorura në projektet që po ndërtohen.

Përmendet se performanca e lartë arrihet duke ruajtur rezultatet në memorie, paralelizimi i punës dhe mbështetje për ekzekutimin e detyrave në distancë (Remote Build Execution).

Mjedisi i ndërtimit përdor konceptin e "hermeticitetit": kodi i përpiluar shkëputet nga bota e jashtme, asgjë nuk ngarkohet nga jashtë gjatë procesit të ndërtimit dhe ekzekutimi i përsëritur i punës në sisteme të ndryshme çon në të njëjtin rezultat (ndërtime të përsëritura, për shembull, rezultati i përpilimit të një projekti në makina nga zhvilluesi do të jetë saktësisht e njëjtë me ndërtimin në serverin e integrimit të vazhdueshëm). Situata e mungesës së varësisë perceptohet në Buck2 si një gabim.

Nga ana e Karakteristikat kryesore të Buck2, bien në sy:

  • Rregullat për mbështetjen e gjuhëve të programimit dhe sistemin bazë të ndërtimit janë plotësisht të ndara. Rregullat janë shkruar në gjuhën Starlark, dhe paketa e veglave Starlark dhe zbatimi janë shkruar në Rust.
  • Sistemi i ndërtimit përdor një grafik të vetëm rritjeje të varësisë (pa skedim), i cili ju lejon të rritni thellësinë e paralelizimit të punës në krahasim me Buck dhe Bazel dhe të shmangni shumë lloje defektesh.
  • Kodi i Buck2 i postuar në GitHub dhe rregullat e mbështetjes së gjuhës së programimit janë pothuajse identike me versionin e brendshëm të përdorur në infrastrukturën e Facebook (ndryshimet e vetme janë në lidhjen me botimet e përpiluesit dhe ndërtimin e serverëve të përdorur nga Facebook). ).
  • Sistemi i ndërtimit është krijuar për t'u integruar me sistemet e ekzekutimit të punëve në distancë që ju lejojnë të ekzekutoni punë në serverë në distancë. API-ja e ekzekutimit në distancë është e përputhshme me Bazel dhe është testuar për pajtueshmëri me Buildbarn dhe EngFlow.
  • Ofrohet integrimi me sistemet e skedarëve virtualë, në të cilin paraqitet përmbajtja e të gjithë depove, por në fakt, puna kryhet me pjesën reale lokale të një pjese të depove (zhvilluesi sheh të gjithë depon, por vetëm atë që kërkohet) skedarët e aksesuar merren nga depoja). Mbështeten VFS dhe Git LFS me bazë EdenFS, të cilat përdoren nga Sapling.

Së fundi, për ata që janë të interesuar të jenë në gjendje të mësojnë më shumë rreth tij, ata duhet të dinë se kodi shpërndahet nën licencën Apache 2.0 dhe ata mund të konsultohen me detajet Në lidhjen vijuese.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.