Starlark Yol Haritası

Son doğrulama: 21.04.2020 (güncelleme geçmişi)

İlgili kişi: laurentlb

Hedef

Amacımız, Bazel'i daha genişletilebilir hale getirmektir. Kullanıcılar kendi kurallarını kolayca uygulayabilmeli, yeni dilleri ve araçları destekleyebilmelidir. Bu kuralları yazma ve sürdürme deneyimini iyileştirmek istiyoruz.

İki alana odaklanıyoruz:

  • Dili ve API'yi basit ancak güçlü hale getirin.
  • Kodu okuma, yazma, güncelleme, hata ayıklama ve test etme için daha iyi araçlar sunma.

2. Çeyrek 2020

Sağlıklı bir topluluk oluşturma ve en iyi uygulamalar:

  • P0. Adı olmayan makroları engeller ve adın benzersiz bir dize değişmezi olmasını sağlar. Bu çalışma Google kod tabanına odaklanmıştır ancak herkese açık olarak sunulan araçları etkileyebilir.
  • P0. Buildozer komutlarını seçimler ve değişkenler açısından güvenilir hale getirin.
  • P1. Buildifier'ın, yorumlar nedeniyle sıralamadığımız listelerdeki yinelenenleri kaldırmasını sağlayın.
  • P1. Buildifier linter'ı, basit ifadelerin satır içi olarak eklenmesini önerecek şekilde güncelleyin.
  • P2. native.existing_rules için kullanım alanlarını inceleyin ve alternatifler önerin.
  • P2. Başlangıç dosyasıyla ilgili kullanım alanlarını inceleyin ve alternatifler önerin.

Performans:

  • P1. Düz ortamlar ve bayt kodu derlemesi kullanarak Starlark yorumlayıcısını optimize edin.

Teknik borç azaltma:

  • P0. @bazel_tools altında yerel sembolleri Starlark'a taşıma özelliği eklendi.
  • P1. Eski işaretleri silin (bazıları Google'da hâlâ kullanılıyor. Bu nedenle, önce kod tabanını temizlememiz gerekiyor): incompatible_always_check_depset_elements, incompatible_disable_deprecated_attr_params, incompatible_no_support_tools_in_action_inputs, incompatible_new_actions_api.
  • P1. Aşağıdaki işaretlerin Bazel 4.0'da değiştirilebildiğinden emin olun: incompatible_disable_depset_items, incompatible_no_implicit_file_export, incompatible_run_shell_command_string, incompatible_restrict_string_escapes.
  • P1. lib.syntax çalışmasını tamamlayın (API temizleme, Bazel'den ayırma).
  • P2. Bazel'in Java paketlerinde yapılan basit bir düzenlemenin derleme ve test gecikmesini% 50 azaltır.

Topluluk:

  • rules_python etkin ve topluluk tarafından iyi bir şekilde yönetiliyor.
  • rules_jvm_external için sürekli destek (bekleyen çekme isteği yok, sorun triyajı, yayın oluşturma).
  • Bazel doküman altyapısını koruma: CSS stillerini bazel-website, bazel-blog ve docs'ta merkezileştirme ve kanonikleştirme
  • Bazel dokümanları: Regresyonları önlemek için uçtan uca doküman sitesi derlemesiyle ilgili sürekli entegrasyon testleri ekleyin.

2020 1. Çeyrek

Sağlıklı bir topluluk oluşturma ve en iyi uygulamalar:

  • Hedeflerin, bazel query üzerinden dışa aktarma için makro çağrı yığınlarını izlemesine izin verin.
  • --incompatible_no_implicit_file_export uygulayın
  • Desteği sonlandırılan depset API'lerini kaldırın (#5817, #10313, #9017).
  • Buildifier'a dosyalar arası analiz aracı ekleyin, kullanımdan kaldırılan işlevler için kontrol uygulayın.

Performans:

  • Bazel'in kendi Java tabanlı testlerini 2 kat daha hızlı hale getirin.
  • Starlark CPU profili oluşturucuyu uygulama.

Teknik borç azaltma:

  • 8 uyumsuz işareti (çevirdikten sonra) kaldırın.
  • lib.syntax temizleme çalışmasını tamamlayın (bağımlılıkları kaldırın).
  • Starlark optimizasyonu: düz ortam, bayt kodu derlemesi
  • Mümkünse analiz aşamasındaki tüm serileştirmeyi silin.
  • lib.packages'ı basitleştirme/optimize etme planı yapın

Topluluk:

  • Bazel'e özgü tüm terimlerin tanımlarını içeren bir sözlük yayınlayın.