Starlark 로드맵

<ph type="x-smartling-placeholder"></ph> 문제 신고 소스 보기 1박 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

담당자: laurentlb

목표

Google의 목표는 Bazel의 확장성을 높이는 것입니다. 사용자가 쉽게 자체 규칙을 구현하고, 새로운 언어와 도구를 지원할 수 있습니다. 우리는 규칙을 작성하고 관리하는 경험을 개선할 수 있습니다.

YouTube는 다음 두 가지 영역에 중점을 두고 있습니다.

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

2020년 2분기

빌드 상태 및 권장사항:

  • P0 매크로에 이름이 없는 것은 권장하지 않으며 이름은 고유한지 확인해야 합니다. 문자열 리터럴입니다. 이 작업은 Google 코드베이스에 중점을 두고 있지만 공개적으로 사용할 수 있습니다
  • P0 선택 및 변수와 관련하여 Buildozer 명령어를 안정적으로 만듭니다.
  • P1. Buildifier가 정렬하지 않는 목록에서 중복 항목을 삭제하도록 합니다. 있습니다.
  • P1. 사소한 표현식의 인라인 처리를 권장하도록 Buildifier 린터를 업데이트했습니다.
  • P2. native.existing_rules 사용 사례를 연구하고 대안 제안
  • P2. 전도 파일의 사용 사례를 연구하고 대안을 제안합니다.

성능:

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

기술 부채 감축:

  • P0 @bazel_tools 아래의 Starlark에 네이티브 기호를 포팅하는 기능을 추가합니다.
  • P1. 더 이상 사용되지 않는 플래그 삭제 (일부는 Google에서 계속 사용되므로 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 Java 패키지 사소한 편집의 빌드+테스트 지연 시간을 50% 줄입니다.

커뮤니티:

  • rules_python은(는) 커뮤니티에서 활발하게 운영되고 잘 관리되고 있습니다.
  • Rules_jvm_external에 대한 지속적인 지원 (미해결된 pull 요청 없음, 문제) 분류, 발표 등).
  • Bazel 문서 인프라 유지관리: CSS 중앙 집중화 및 정규화 bazel-website, bazel-blog, 문서 전체의 스타일
  • Bazel 문서: 회귀를 방지하기 위해 e2e 문서 사이트 빌드용 CI 테스트를 추가합니다.

2020년 1분기

빌드 상태 및 권장사항:

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

성능:

  • Bazel의 자체 Java 기반 테스트 속도가 2배 더 빨라집니다.
  • Starlark CPU 프로파일러를 구현합니다.

기술 부채 감축:

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

커뮤니티:

  • 모든 Bazel 관련 용어의 정의가 포함된 용어집 게시