새로운 Facebook 빌드 시스템인 Buck2

Buck2-영웅

Facebook의 새로운 오픈 소스 빌드 시스템인 Buck2

페이스북 도입 최근에 "Buck2"라는 새로운 빌드 시스템을 출시했습니다. 리포지토리에서 프로젝트를 구축하는 데 중점을 둡니다. 루이 다른 언어로 된 코드를 포함하는 큰 것 프로그램 작성.

차이점들 새로운 구현과 시스템 사이 이전에 사용한 벅 페이스 북 Java 대신 Rust 언어를 사용하고 있습니다. 조립 프로세스의 효율성과 성능이 크게 향상되었습니다(동일한 인프라에 대한 내부 테스트에서 Buck2는 Buck보다 두 배 빠르게 조립 작업을 수행함).

빌드 시스템은 개발자와 코드 실행 사이에 있으므로 경험을 더 빠르고 생산적으로 만들기 위해 우리가 할 수 있는 모든 것은 개발자의 효율성에 직접적인 영향을 미칩니다. Buck2의 목표는 Buck1(기본 및 워크플로)에 대해 우리가 좋아하는 것을 유지하고, Buck1 이후의 혁신(Bazel, Adapton 및 Shake 포함)에서 영감을 얻고, 속도와 새로운 경험을 가능하게 하는 데 집중하는 것이었습니다.

Buck2 소개

강조됩니다 시스템이 특정 언어로 된 코드 생성에 얽매이지 않음 기본적으로 Facebook에서 사용하는 C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell 및 OCaml로 작성된 빌더 프로젝트를 지원합니다.

Python(Bazel에서와 같이)을 기반으로 하는 Starlark 언어는 플러그인을 디자인하고 스크립트 및 규칙을 만드는 데 사용됩니다. Starlark를 사용하면 빌드 시스템의 기능을 확장하고 빌드 중인 프로젝트에서 사용되는 특정 언어를 추상화할 수 있습니다.

언급된다 결과를 캐싱하여 고성능 달성, 작업의 병렬화 및 작업의 원격 실행 지원(원격 빌드 실행).

빌드 환경 "밀폐성"의 개념을 사용합니다. 컴파일된 코드는 외부 세계에서 분리되고, 빌드 프로세스 중에 외부에서 아무것도 로드되지 않으며, 다른 시스템에서 작업을 반복 실행하면 동일한 결과가 나타납니다(예: 개발자의 컴퓨터는 지속적 통합 서버의 빌드와 정확히 동일합니다). 종속성 부족 상황은 Buck2에서 버그로 인식됩니다.

측에서는 Buck2 주요 기능, 다음이 두드러집니다.

  • 프로그래밍 언어와 핵심 빌드 시스템을 지원하는 규칙은 완전히 별개입니다. 규칙은 Starlark 언어로 작성되었으며 Starlark 툴킷 및 구현은 Rust로 작성되었습니다.
  • 빌드 시스템은 단일 증분 종속성 그래프(스테이징 없음)를 사용하므로 Buck 및 Bazel에 비해 작업의 병렬화 깊이를 높이고 많은 종류의 버그를 피할 수 있습니다.
  • GitHub에 게시된 Buck2의 코드와 프로그래밍 언어 지원 규칙은 Facebook의 인프라에서 사용되는 내부 버전과 거의 동일합니다(단지 차이점은 Facebook에서 사용하는 컴파일러 에디션 및 빌드 서버에 대한 링크입니다).
  • 빌드 시스템은 원격 서버에서 작업을 실행할 수 있는 원격 작업 실행 시스템과 통합되도록 설계되었습니다. 원격 실행 API는 Bazel과 호환되며 Buildbarn 및 EngFlow와의 호환성 테스트를 거쳤습니다.
  • 전체 리포지토리의 내용이 표시되는 가상 파일 시스템과의 통합이 제공되지만 실제로 작업은 리포지토리 일부의 실제 로컬 부분에서 수행됩니다(개발자는 전체 리포지토리를 볼 수 있지만 필수) 액세스된 파일은 리포지토리에서 검색됨). Sapling에서 사용하는 EdenFS 기반의 VFS와 Git LFS를 지원합니다.

마지막으로, 그것에 대해 더 알고 싶은 사람들은 코드가 Apache 2.0 라이선스에 따라 배포되며 세부 정보를 참조할 수 있다는 것을 알아야 합니다. 다음 링크에서.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.