Starlark 로드맵

문제 신고 소스 보기

최종 확인: 2020년 4월 21일(업데이트 기록)

담당자: łrentlb

목표

Google의 목표는 Bazel을 더 확장 가능하게 만드는 것입니다. 사용자는 자신의 규칙을 쉽게 구현하고 새로운 언어 및 도구를 지원할 수 있어야 합니다. 이러한 규칙을 작성하고 유지관리하는 환경을 개선하고자 합니다.

Google에서는 다음 두 가지 영역에 집중합니다.

  • 단순하면서도 강력한 언어와 API를 만드세요.
  • 코드 읽기, 작성, 업데이트, 디버깅, 테스트에 더 나은 도구를 제공합니다.

2020년 2분기

빌드 상태 및 권장사항:

  • P0. 이름이 없는 매크로는 사용하지 않도록 설정하고 이름은 고유한 문자열 리터럴이어야 합니다. 이 작업은 Google 코드베이스에 중점을 두지만 공개적으로 사용 가능한 도구에 영향을 미칠 수 있습니다.
  • P0. 선택 및 변수와 관련하여 Buildozer 명령어를 안정적으로 만듭니다.
  • P1. 주석으로 인해 정렬되지 않는 목록에 중복된 항목이 있으면 Buildifier가 삭제됩니다.
  • P1. 빌드 도구 린터를 업데이트하여 사소한 표현식 인라인을 추천했습니다.
  • P2. native.existing_rules 사용 사례를 연구하고 대안을 제안합니다.
  • P2. 전제 파일에 관한 사용 사례를 연구하고 대안을 제안합니다.

실적:

  • P1. 플랫 환경과 바이트 코드 컴파일을 사용하여 Starlark 인터프리터를 최적화합니다.

기술 부채 감소:

  • P0. 네이티브 기호를 @bazel_tools 아래에 Starlark로 포팅하는 기능이 추가되었습니다.
  • P1. 더 이상 사용되지 않는 플래그 (일부는 여전히 Google에서 사용되므로 코드베이스를 먼저 삭제해야 함)를 삭제합니다. incompatible_always_check_depset_elements, incompatible_disable_deprecated_attr_params, incompatible_no_support_tools_in_action_inputs, incompatible_new_actions_api
  • P1. Bazel 4.0에서 다음 플래그를 뒤집을 수 있는지 확인합니다. incompatible_disable_depset_items, incompatible_no_implicit_file_export, incompatible_run_shell_command_string, incompatible_restrict_string_escapes.
  • P1. lib.syntax 작업 (API 정리, Bazel과의 분리)을 완료합니다.
  • P2. Bazel의 자바 패키지에 대한 사소한 수정의 빌드+테스트 지연 시간이 50% 감소됩니다.

커뮤니티:

  • rules_python은(는) 활발히 운영되고 커뮤니티가 관리합니다.
  • rules_jvm_external에 대한 지속적인 지원 (미해결 pull 요청, 문제 분류, 출시 없음)
  • Bazel 문서 인프라 유지관리: bazel-website, bazel-blog, 문서 전반에서 CSS 스타일을 중앙화하고 표준화합니다.
  • Bazel 문서: 회귀 방지를 위한 e2e 문서 사이트 빌드용 CI 테스트 추가

2020년 1분기

빌드 상태 및 권장사항:

  • bazel query를 통해 내보내기 위해 대상이 매크로 호출 스택을 추적하도록 허용
  • --incompatible_no_implicit_file_export 구현
  • 지원 중단된 depset API를 삭제했습니다 (#5817, #10313, #9017).
  • Buildifier에 교차 파일 분석기를 추가하고 지원 중단된 함수 검사를 구현합니다.

실적:

  • Bazel의 자체 자바 기반 테스트를 2배 더 빠르게 진행하세요.
  • Starlark CPU 프로파일러 구현

기술 부채 감소:

  • 뒤집은 후 호환되지 않는 플래그 8개를 삭제합니다.
  • lib.syntax 정리 작업 (종속 항목 중단)을 완료합니다.
  • Starlark 최적화: 플랫 환경, 바이트 코드 컴파일
  • 가능한 경우 분석 단계에서 모든 직렬화를 삭제합니다.
  • lib.packages 간소화/최적화를 위한 계획 수립

커뮤니티:

  • 모든 Bazel 관련 용어에 대한 정의를 포함하는 용어집을 게시합니다.