하위 호환성

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
문제 신고 소스 보기

이 페이지에서는 한 버전에서 다른 버전으로 이전하는 등 이전 버전과의 호환성을 처리하는 방법 및 호환되지 않는 변경사항을 전달하는 방법에 관한 정보를 제공합니다.

Bazel은 진화하고 있습니다. LTS 메이저 버전의 일부로 출시된 부 버전은 완전히 하위 호환됩니다. 주요 LTS 출시 버전 간의 변경사항에는 일부 이전 작업이 필요한 호환되지 않는 변경사항이 포함될 수 있습니다. Bazel 출시 주기 작동 방식에 대한 자세한 내용은 Bazel 장기 지원 (LTS) 출시 발표를 참조하세요.

요약

  1. 브레이킹 체인지에 --incompatible_* 플래그를 사용하는 것이 좋습니다.
  2. GitHub 문제에서는 모든 --incompatible_* 플래그에 동작 변경사항을 설명하고 이전 레시피를 제공하는 것을 목표로 합니다.
  3. --experimental_* 플래그로 보호되는 API 및 동작은 언제든지 변경될 수 있습니다.
  4. --experimental_* 또는 --incompatible_* 플래그를 사용하여 프로덕션 빌드를 실행하면 안 됩니다.

정책 준수 방법

안정적인 기능이란 무엇인가요?

일반적으로 Bazel에서 --experimental_... 플래그가 없는 API 또는 동작은 안정적인 지원 기능으로 간주됩니다.

여기에는 다음이 포함됩니다.

  • Starlark 언어 및 API
  • Bazel과 함께 번들로 제공되는 규칙
  • 원격 실행 API 또는 빌드 이벤트 프로토콜과 같은 Bazel API
  • 플래그 및 시맨틱스

호환되지 않는 변경사항 및 이전 레시피

새 버전에서 호환되지 않는 모든 변경사항에 대해 Bazel팀은 사용자의 코드 업데이트에 도움이 되는 이전 레시피(BUILD.bzl 파일, 스크립트의 Bazel 사용, Bazel API 사용 등)를 제공하는 것을 목표로 합니다.

호환되지 않는 변경사항에는 연결된 --incompatible_* 플래그와 이에 상응하는 GitHub 문제가 있어야 합니다.

호환되지 않는 변경사항 전달

호환되지 않는 변경사항에 관한 정보의 주요 출처는 'incompatible-change' 라벨로 표시된 GitHub 문제입니다.

호환되지 않는 모든 변경사항에는 다음 사항이 명시되어 있습니다.

  • 호환되지 않는 변경사항을 제어하는 플래그의 이름입니다.
  • 변경된 기능에 대한 설명
  • 마이그레이션 레시피

호환되지 않는 변경사항이 HEAD에서 Bazel을 사용하여 마이그레이션할 준비가 되면 (따라서 다음 Bazel 롤링 출시에도) migration-ready 라벨로 표시되어야 합니다. 호환되지 않는 플래그가 HEAD에서 뒤집히면 호환되지 않는 변경 문제가 종료됩니다.