Buck2, det nya Facebook-byggsystemet

Buck2-Hjälte

Buck2, Facebooks nya byggsystem med öppen källkod

Facebook infördes släppte nyligen ett nytt byggsystem som heter "Buck2", vilket konstaterar att det är det fokuserat på att bygga projekt från förvar muy stora som innehåller kod på olika språk programmering.

Skillnaderna mellan den nya implementeringen och systemet tidigare använd bock Av facebook använder språket Rust istället för Java och en betydande ökning av effektiviteten och prestandan för monteringsprocessen (i interna tester på samma infrastruktur utför Buck2 monteringsuppgifter dubbelt så snabbt som Buck).

Byggsystem står mellan en utvecklare och deras kod som körs, så allt vi kan göra för att göra upplevelsen snabbare eller mer produktiv påverkar direkt hur effektiv en utvecklare kan vara. Målet för Buck2 var att behålla det vi älskade med Buck1 (grunderna och arbetsflödena), ta inspiration från innovationer efter Buck1 (inklusive Bazel, Adapton och Shake) och fokusera på hastighet och möjliggöra nya upplevelser.

Om Buck2

Det lyfts fram det systemet är inte bundet till skapandet av kod på specifika språk och ur lådan stöder den byggprojekt skrivna i C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell och OCaml som används av Facebook.

Starlark-språket, baserat på Python (som i Bazel), används för att designa plugins, skapa skript och regler. Starlark låter dig utöka kapaciteten hos byggsystemet och abstrahera från de specifika språk som används i de projekt som byggs.

Det nämns det hög prestanda uppnås genom att cachelagra resultaten, parallellisering av arbete och stöd för fjärrutförande av uppgifter (Remote Build Execution).

Byggmiljön använder begreppet "hermeticitet": den kompilerade koden lösgörs från omvärlden, ingenting laddas från utsidan under byggprocessen, och upprepad körning av jobbet på olika system leder till samma resultat (upprepade konstruktioner, till exempel resultatet av att kompilera ett projekt på maskin från utvecklaren kommer att vara exakt densamma som konstruktionen på den kontinuerliga integrationsservern). Avsaknaden av beroendesituation uppfattas i Buck2 som en bugg.

Från den Buck2 Nyckelfunktioner, följande sticker ut:

  • Reglerna för att stödja programmeringsspråk och kärnbyggsystemet är helt separata. Reglerna är skrivna på Starlark-språket, och Starlark-verktygslådan och implementeringen är skrivna i Rust.
  • Byggsystemet använder en enda inkrementell beroendegraf (ingen iscensättning), vilket gör att du kan öka djupet av parallellisering av arbetet jämfört med Buck och Bazel och undvika många typer av buggar.
  • Buck2s kod publicerad på GitHub och reglerna för programmeringsspråksstöd är nästan identiska med den interna versionen som används i Facebooks infrastruktur (de enda skillnaderna är i länken till kompilatorutgåvor och byggservrar som används av Facebook).
  • Byggsystemet är utformat för att integreras med system för exekvering av fjärrjobb som låter dig köra jobb på fjärrservrar. Fjärrexekverings-API:et är kompatibelt med Bazel och har testats för kompatibilitet med Buildbarn och EngFlow.
  • Integration med virtuella filsystem tillhandahålls, där innehållet i hela förvaret presenteras, men i själva verket utförs arbetet med den verkliga lokala delen av en del av förvaret (utvecklaren ser hela förvaret, men bara vad krävs) filer som nås hämtas från förvaret). EdenFS-baserade VFS och Git LFS stöds, som används av Sapling.

Slutligen, för de som är intresserade av att kunna lära sig mer om det, bör de veta att koden distribueras under Apache 2.0-licensen och de kan konsultera detaljerna I följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.