Facebook Buck2 బిల్డ్ సిస్టమ్‌ను ప్రచురించింది

Facebook కొత్త బిల్డ్ సిస్టమ్, Buck2ను ప్రవేశపెట్టింది, వివిధ ప్రోగ్రామింగ్ భాషలలో కోడ్‌ను కలిగి ఉన్న చాలా పెద్ద రిపోజిటరీల నుండి ప్రాజెక్ట్‌లను నిర్మించడంపై దృష్టి సారించింది. ఫేస్‌బుక్ గతంలో ఉపయోగించిన కొత్త ఇంప్లిమెంటేషన్ మరియు బక్ సిస్టమ్‌కు మధ్య ఉన్న ముఖ్యమైన తేడాలు జావాకు బదులుగా రస్ట్ లాంగ్వేజ్‌ని ఉపయోగించడం మరియు అసెంబ్లీ ప్రక్రియ యొక్క సామర్థ్యం మరియు పనితీరులో గణనీయమైన పెరుగుదల (అదే అవస్థాపనలో అంతర్గత పరీక్షలలో, బక్2 అసెంబ్లీని నిర్వహిస్తుంది. బక్ కంటే రెండు రెట్లు వేగంగా పనులు). కోడ్ Apache 2.0 లైసెన్స్ క్రింద పంపిణీ చేయబడింది.

సిస్టమ్ నిర్దిష్ట భాషలలో బిల్డింగ్ కోడ్‌తో ముడిపడి లేదు మరియు Facebook ఉపయోగించే C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell మరియు OCamlలలో వ్రాసిన బిల్డింగ్ ప్రాజెక్ట్‌లకు బాక్స్ వెలుపల మద్దతు ఇస్తుంది. పైథాన్‌పై ఆధారపడిన స్టార్‌లార్క్ భాష (బాజెల్‌లో వలె) యాడ్-ఆన్‌లను రూపొందించడానికి, స్క్రిప్ట్‌లు మరియు నియమాలను రూపొందించడానికి ఉపయోగించబడుతుంది. స్టార్లార్క్ బిల్డ్ సిస్టమ్ యొక్క సామర్థ్యాలను విస్తరించడానికి మరియు నిర్మించబడుతున్న ప్రాజెక్ట్‌లలో ఉపయోగించే నిర్దిష్ట భాషల నుండి సంగ్రహించడానికి మిమ్మల్ని అనుమతిస్తుంది.

ఫలితాల కాషింగ్, పని యొక్క సమాంతరీకరణ మరియు టాస్క్‌ల రిమోట్ ఎగ్జిక్యూషన్‌కు మద్దతు (రిమోట్ బిల్డ్ ఎగ్జిక్యూషన్) ద్వారా అధిక పనితీరు సాధించబడుతుంది. బిల్డ్ ఎన్విరాన్‌మెంట్‌లో, "బిగుతు" అనే భావన ఉపయోగించబడుతుంది - సంకలనం చేయబడిన కోడ్ బయటి ప్రపంచం నుండి కత్తిరించబడుతుంది, నిర్మాణ ప్రక్రియలో బయటి నుండి ఏమీ లోడ్ చేయబడదు మరియు వివిధ సిస్టమ్‌లలో పనిని పదేపదే అమలు చేయడం అదే ఫలితానికి దారితీస్తుంది ( పునరావృత బిల్డ్‌లు, ఉదాహరణకు, డెవలపర్ మెషీన్‌లో ప్రాజెక్ట్‌ను నిర్మించడం వల్ల వచ్చే ఫలితం నిరంతర ఇంటిగ్రేషన్ సర్వర్‌పై బిల్డ్ వలె ఉంటుంది). ఆధారపడటం లేకపోవడం యొక్క పరిస్థితి Buck2 లో పొరపాటుగా గుర్తించబడింది.

Buck2 ముఖ్య లక్షణాలు:

  • ప్రోగ్రామింగ్ భాషలకు మద్దతు ఇచ్చే నియమాలు మరియు బిల్డ్ సిస్టమ్ యొక్క కోర్ పూర్తిగా వేరు చేయబడ్డాయి. నియమాలు స్టార్‌లార్క్ భాషలో వ్రాయబడ్డాయి మరియు స్టార్‌లార్క్ టూల్‌కిట్ మరియు అమలు రస్ట్‌లో వ్రాయబడ్డాయి.
  • బిల్డ్ సిస్టమ్ ఒకే ఇంక్రిమెంటల్ డిపెండెన్సీ గ్రాఫ్‌ను (దశలుగా విభజించకుండా) ఉపయోగిస్తుంది, ఇది బక్ మరియు బాజెల్‌తో పోలిస్తే పని యొక్క సమాంతరీకరణ యొక్క లోతును పెంచడానికి మరియు అనేక రకాల లోపాలను నివారించడానికి మిమ్మల్ని అనుమతిస్తుంది.
  • GitHubలో ప్రచురించబడిన Buck2 కోడ్ మరియు ప్రోగ్రామింగ్ లాంగ్వేజ్ సపోర్ట్ రూల్స్ Facebook ఇన్‌ఫ్రాస్ట్రక్చర్‌లో ఉపయోగించిన అంతర్గత సంస్కరణకు దాదాపు సమానంగా ఉంటాయి (ఫేస్‌బుక్ ఉపయోగించే కంపైలర్ ఎడిషన్‌లు మరియు బిల్డ్ సర్వర్‌లకు మాత్రమే తేడాలు ఉంటాయి).
  • బిల్డ్ సిస్టమ్ రిమోట్ సర్వర్‌లలో ఉద్యోగాలను అమలు చేయడానికి మిమ్మల్ని అనుమతించే రిమోట్ జాబ్ ఎగ్జిక్యూషన్ సిస్టమ్‌లతో ఏకీకరణను దృష్టిలో ఉంచుకుని రూపొందించబడింది. రిమోట్ ఎగ్జిక్యూషన్ API Bazelకి అనుకూలంగా ఉంది మరియు Buildbarn మరియు EngFlowతో అనుకూలత కోసం పరీక్షించబడింది.
  • వర్చువల్ ఫైల్ సిస్టమ్‌లతో ఇంటిగ్రేషన్ అందించబడింది, దీనిలో మొత్తం రిపోజిటరీ యొక్క కంటెంట్‌లు ప్రదర్శించబడతాయి, అయితే వాస్తవానికి, రిపోజిటరీలోని కొంత భాగం యొక్క వాస్తవ స్థానిక స్లైస్‌తో పని జరుగుతుంది (డెవలపర్ మొత్తం రిపోజిటరీని చూస్తాడు, కానీ అవసరమైనది మాత్రమే యాక్సెస్ చేయబడిన ఫైల్‌లు రిపోజిటరీ నుండి తిరిగి పొందబడతాయి). సప్లింగ్ ద్వారా ఉపయోగించబడే EdenFS మరియు Git LFS ఆధారంగా VFSకి మద్దతు ఉంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి