Buck2, hệ thống xây dựng Facebook mới

Buck2-Anh hùng

Buck2, hệ thống xây dựng mã nguồn mở mới của Facebook

Facebook giới thiệu gần đây đã phát hành một hệ thống xây dựng mới có tên "Buck2", lưu ý rằng đó là tập trung vào việc xây dựng các dự án từ các kho lưu trữ muy những cái lớn bao gồm mã bằng các ngôn ngữ khác nhau lập trình.

Sự khác biệt giữa việc triển khai mới và hệ thống tiền đã qua sử dụng Bằng Facebook đang sử dụng ngôn ngữ Rust thay vì Java và tăng đáng kể hiệu quả và hiệu suất của quy trình lắp ráp (trong các thử nghiệm nội bộ trên cùng cơ sở hạ tầng, Buck2 thực hiện các tác vụ lắp ráp nhanh gấp đôi so với Buck).

Hệ thống bản dựng đứng giữa nhà phát triển và mã của họ đang chạy, vì vậy, bất cứ điều gì chúng tôi có thể làm để làm cho trải nghiệm nhanh hơn hoặc hiệu quả hơn đều ảnh hưởng trực tiếp đến mức độ hiệu quả của nhà phát triển. Mục tiêu của Buck2 là giữ lại những gì chúng tôi yêu thích về Buck1 (điều cơ bản và quy trình làm việc), lấy cảm hứng từ những đổi mới sau Buck1 (bao gồm Bazel, Adapton và Shake), đồng thời tập trung vào tốc độ và mang lại trải nghiệm mới.

Về Buck2

Nó được nhấn mạnh rằng hệ thống không bị ràng buộc với việc tạo mã bằng các ngôn ngữ cụ thể và ngoài hộp, nó hỗ trợ các dự án trình tạo được viết bằng C ++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell và OCaml được Facebook sử dụng.

Ngôn ngữ Starlark, dựa trên Python (như trong Bazel), được sử dụng để thiết kế plugin, tạo tập lệnh và quy tắc. Starlark cho phép bạn mở rộng khả năng của hệ thống xây dựng và trừu tượng hóa từ các ngôn ngữ cụ thể được sử dụng trong các dự án đang được xây dựng.

Nó được đề cập rằng hiệu suất cao đạt được bằng cách lưu trữ kết quả, song song hóa công việc và hỗ trợ thực thi tác vụ từ xa (Thực thi bản dựng từ xa).

Môi trường xây dựng sử dụng khái niệm "độ kín": mã đã biên dịch được tách ra khỏi thế giới bên ngoài, không có gì được tải từ bên ngoài trong quá trình xây dựng và việc thực hiện lặp lại công việc trên các hệ thống khác nhau dẫn đến cùng một kết quả (ví dụ: các bản dựng lặp lại, kết quả của việc biên dịch một dự án trên máy từ nhà phát triển sẽ hoàn toàn giống với bản dựng trên máy chủ tích hợp liên tục). Tình trạng thiếu phụ thuộc được Buck2 coi là một lỗi.

Về phần Các tính năng chính của Buck2, điểm nổi bật sau:

  • Các quy tắc hỗ trợ ngôn ngữ lập trình và hệ thống xây dựng cốt lõi là hoàn toàn riêng biệt. Các quy tắc được viết bằng ngôn ngữ Starlark, bộ công cụ Starlark và việc triển khai được viết bằng Rust.
  • Hệ thống xây dựng sử dụng một biểu đồ phụ thuộc gia tăng duy nhất (không có dàn dựng), cho phép bạn tăng độ sâu của việc song song hóa công việc so với Buck và Bazel và tránh được nhiều loại lỗi.
  • Mã của Buck2 được đăng trên GitHub và các quy tắc hỗ trợ ngôn ngữ lập trình gần giống với phiên bản nội bộ được sử dụng trong cơ sở hạ tầng của Facebook (sự khác biệt duy nhất là ở liên kết đến phiên bản trình biên dịch và máy chủ xây dựng được Facebook sử dụng).
  • Hệ thống xây dựng được thiết kế để tích hợp với các hệ thống thực thi công việc từ xa cho phép bạn chạy các công việc trên các máy chủ từ xa. API thực thi từ xa tương thích với Bazel và đã được thử nghiệm về khả năng tương thích với Buildbarn và EngFlow.
  • Tích hợp với các hệ thống tệp ảo được cung cấp, trong đó nội dung của toàn bộ kho lưu trữ được trình bày, nhưng trên thực tế, công việc được thực hiện với phần cục bộ thực của một phần kho lưu trữ (nhà phát triển nhìn thấy toàn bộ kho lưu trữ, nhưng chỉ những gì là bắt buộc) các tệp được truy cập được lấy từ kho lưu trữ). VFS và Git LFS dựa trên EdenFS được hỗ trợ, được Sapling sử dụng.

Cuối cùng, đối với những người quan tâm đến việc có thể tìm hiểu thêm về nó, họ nên biết rằng mã được phân phối theo giấy phép Apache 2.0 và họ có thể tham khảo chi tiết Trong liên kết sau đây.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.