Buck2 ระบบสร้างใหม่ของ Facebook

Buck2-ฮีโร่

Buck2 ระบบสร้างโอเพ่นซอร์สใหม่ของ Facebook

เฟสบุ๊คแนะนำ เพิ่งเปิดตัวระบบสร้างใหม่ที่เรียกว่า "Buck2" ซึ่งสังเกตว่าเป็น เน้นการสร้างโครงการจากพื้นที่เก็บข้อมูล มาก ขนาดใหญ่ที่มีรหัสในภาษาต่างๆ การเขียนโปรแกรม

ความแตกต่าง ระหว่างการใช้งานใหม่กับระบบ บัคที่ใช้ก่อนหน้านี้ โดย facebook กำลังใช้ภาษา Rust แทน Java และการเพิ่มประสิทธิภาพและสมรรถนะของกระบวนการประกอบเพิ่มขึ้นอย่างมาก (ในการทดสอบภายในบนโครงสร้างพื้นฐานเดียวกัน Buck2 ปฏิบัติงานประกอบได้เร็วกว่า Buck ถึงสองเท่า)

สร้างระบบระหว่างนักพัฒนาและรหัสของพวกเขาทำงาน ดังนั้นทุกสิ่งที่เราสามารถทำได้เพื่อทำให้ประสบการณ์เร็วขึ้นหรือมีประสิทธิผลมากขึ้นจะส่งผลโดยตรงต่อประสิทธิภาพของนักพัฒนา เป้าหมายของ Buck2 คือการรักษาสิ่งที่เราชอบเกี่ยวกับ Buck1 (พื้นฐานและเวิร์กโฟลว์) รับแรงบันดาลใจจากนวัตกรรมหลัง Buck1 (รวมถึง Bazel, Adapton และ Shake) และมุ่งเน้นไปที่ความเร็วและการเปิดใช้ประสบการณ์ใหม่

เกี่ยวกับบัคทู

เน้นว่า ระบบไม่ได้เชื่อมโยงกับการสร้างรหัสในภาษาใดภาษาหนึ่ง และสนับสนุนโครงการตัวสร้างที่เขียนด้วย C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell และ OCaml ที่ Facebook ใช้

ภาษา Starlark ซึ่งใช้ Python (เช่นเดียวกับ Bazel) นั้นใช้ในการออกแบบปลั๊กอิน สร้างสคริปต์และกฎต่างๆ Starlark ช่วยให้คุณสามารถขยายความสามารถของระบบการสร้างและบทคัดย่อจากภาษาเฉพาะที่ใช้ในโครงการที่กำลังสร้าง

เป็นที่กล่าวขวัญกันว่า ประสิทธิภาพสูงทำได้โดยการแคชผลลัพธ์, การทำให้งานเป็นแบบขนานและรองรับการเรียกใช้งานจากระยะไกล (Remote Build Execution)

สภาพแวดล้อมการสร้าง ใช้แนวคิดของ "ความลึกลับ": โค้ดที่คอมไพล์แยกออกจากโลกภายนอก ไม่มีการโหลดอะไรจากภายนอกในระหว่างกระบวนการสร้าง และการดำเนินการซ้ำของงานบนระบบต่างๆ นำไปสู่ผลลัพธ์เดียวกัน (บิลด์ซ้ำๆ เช่น ผลลัพธ์ของการคอมไพล์โปรเจ็กต์บน เครื่องจากผู้พัฒนาจะเหมือนกันทุกประการกับการสร้างบนเซิร์ฟเวอร์การผสานรวมอย่างต่อเนื่อง) สถานการณ์การขาดการพึ่งพานั้นถูกมองว่าเป็นข้อผิดพลาดใน Buck2

ในส่วนของ คุณสมบัติหลักของ Buck2สิ่งต่อไปนี้โดดเด่น:

  • กฎสำหรับการรองรับภาษาโปรแกรมและระบบการสร้างคอร์แยกจากกันโดยสิ้นเชิง กฎเขียนด้วยภาษา Starlark ส่วนชุดเครื่องมือและการใช้งานของ Starlark เขียนด้วยภาษา Rust
  • ระบบการสร้างใช้กราฟการพึ่งพาที่เพิ่มขึ้นเพียงครั้งเดียว (ไม่มีการจัดเตรียม) ซึ่งช่วยให้คุณเพิ่มความลึกของการขนานของงานเมื่อเทียบกับ Buck และ Bazel และหลีกเลี่ยงข้อบกพร่องหลายประเภท
  • โค้ดของ Buck2 ที่โพสต์บน GitHub และกฎการสนับสนุนภาษาการเขียนโปรแกรมเกือบจะเหมือนกับเวอร์ชันภายในที่ใช้ในโครงสร้างพื้นฐานของ Facebook (ข้อแตกต่างเพียงอย่างเดียวคือในลิงก์ไปยังเวอร์ชันคอมไพเลอร์และบิลด์เซิร์ฟเวอร์ที่ Facebook ใช้)
  • ระบบบิลด์ได้รับการออกแบบให้รวมเข้ากับระบบสั่งงานระยะไกล ซึ่งช่วยให้คุณสามารถเรียกใช้งานบนเซิร์ฟเวอร์ระยะไกลได้ API การดำเนินการระยะไกลเข้ากันได้กับ Bazel และได้รับการทดสอบความเข้ากันได้กับ Buildbarn และ EngFlow
  • มีการรวมเข้ากับระบบไฟล์เสมือนซึ่งนำเสนอเนื้อหาของที่เก็บทั้งหมด แต่ในความเป็นจริงงานจะดำเนินการกับส่วนโลคัลจริงของส่วนหนึ่งของที่เก็บ (ผู้พัฒนาเห็นที่เก็บทั้งหมด แต่เฉพาะสิ่งที่ จำเป็น) ไฟล์ที่เข้าถึงจะถูกดึงมาจากที่เก็บ) รองรับ VFS และ Git LFS ที่ใช้ EdenFS ซึ่งใช้โดย Sapling

สุดท้ายสำหรับผู้ที่สนใจสามารถเรียนรู้เพิ่มเติมเกี่ยวกับมัน พวกเขาควรทราบว่ารหัสนั้นเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 และพวกเขาสามารถดูรายละเอียดได้ ในลิงค์ต่อไปนี้.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา