Buck2, מערכת הבנייה החדשה של פייסבוק

באק2-גיבור

Buck2, מערכת בניית הקוד הפתוח החדשה של פייסבוק

פייסבוק הציג לאחרונה הוציאה מערכת בנייה חדשה בשם "Buck2", שמציינת שכן התמקד בבניית פרויקטים ממאגרים muy גדולים הכוללים קוד בשפות שונות תִכנוּת.

ההבדלים בין היישום החדש למערכת באק בשימוש בעבר מאת פייסבוק משתמשים בשפת Rust במקום Java ועלייה משמעותית ביעילות ובביצועים של תהליך ההרכבה (בבדיקות פנימיות על אותה תשתית, Buck2 מבצעת משימות הרכבה פי שניים מהר יותר מבאק).

בניית מערכות עומדת בין מפתח לבין הקוד שלו הפועל, כך שכל מה שאנחנו יכולים לעשות כדי להפוך את החוויה למהירה יותר או פרודוקטיבית יותר משפיע ישירות על מידת היעילות של מפתח. המטרה של Buck2 הייתה לשמור על מה שאהבנו ב-Buck1 (היסודות וזרימות העבודה), לקחת השראה מחידושים שלאחר Buck1 (כולל Bazel, Adapton ו-Shake), ולהתמקד במהירות ובאפשרות חוויות חדשות.

לגבי באק2

מודגש כי המערכת אינה קשורה ליצירת קוד בשפות ספציפיות ומחוץ לקופסה, הוא תומך בפרויקטי בונה שנכתבו ב-C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell ו-OCaml בשימוש על ידי Facebook.

שפת Starlark, המבוססת על Python (כמו ב-Bazel), משמשת לעיצוב תוספים, יצירת סקריפטים וחוקים. Starlark מאפשרת לך להרחיב את היכולות של מערכת הבנייה ולהתפשט מהשפות הספציפיות המשמשות בפרויקטים הנבנים.

מוזכר ש ביצועים גבוהים מושגים על ידי שמירה במטמון של התוצאות, הקבלה של עבודה ותמיכה בביצוע מרחוק של משימות (Remote Build Execution).

סביבת הבנייה משתמש במושג "הרמטיות": הקוד המהודר מנותק מהעולם החיצון, שום דבר לא נטען מבחוץ במהלך תהליך הבנייה, וביצוע חוזר של העבודה במערכות שונות מוביל לאותה תוצאה (בנייה חוזרת, למשל, תוצאה של קומפילציה של פרויקט על ה- מכונה מהמפתח תהיה זהה לחלוטין למבנה בשרת האינטגרציה הרציף). מצב חוסר התלות נתפס בבאק2 כבאג.

מצד ה Buck2 תכונות עיקריות, בולטים הבאים:

  • הכללים לתמיכה בשפות תכנות ומערכת בניית הליבה נפרדים לחלוטין. הכללים כתובים בשפת Starlark, וערכת הכלים והיישום של Starlark כתובים ב-Rust.
  • מערכת הבנייה משתמשת בגרף תלות מצטבר בודד (ללא שלב), המאפשר לך להגדיל את עומק ההקבלה של העבודה בהשוואה לבאק ובאזל ולהימנע מסוגים רבים של באגים.
  • הקוד של Buck2 שפורסם ב-GitHub וכללי התמיכה בשפת התכנות כמעט זהים לגרסה הפנימית המשמשת בתשתית של פייסבוק (ההבדלים היחידים הם בקישור למהדורות מהדר ובניית שרתים המשמשים את פייסבוק).
  • מערכת ה-build מיועדת להשתלב עם מערכות ביצוע עבודות מרחוק המאפשרות להריץ עבודות בשרתים מרוחקים. ה-API לביצוע מרחוק תואם ל-Bazel ונבדק לגבי תאימות עם Buildbarn ו-EngFlow.
  • ניתנת אינטגרציה עם מערכות קבצים וירטואליות, שבהן מוצג התוכן של המאגר כולו, אך למעשה, העבודה מתבצעת עם החלק המקומי האמיתי של חלק מהמאגר (המפתח רואה את כל המאגר, אך רק מה נדרש) קבצים שניגשו אליהם מאוחזרים מהמאגר). נתמכים ב-VFS ו-Git LFS מבוססי EdenFS, המשמשים את Sapling.

לבסוף, למי שמעוניין להיות מסוגל ללמוד עוד על זה, עליהם לדעת שהקוד מופץ תחת רישיון Apache 2.0 והם יכולים לעיין בפרטים בקישור הבא.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.