Starlark Yol Haritası

Sorun bildir Kaynağı göster Nightly · 8.0 · 7.4 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Son doğrulama tarihi: 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 okumak, yazmak, güncellemek, hata ayıklamak ve test etmek için daha iyi araçlar sunar.

2020 2. Çeyrek

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

  • P0. Adsız makrolardan kaçının ve adların benzersiz dize değişmezleri olduğundan emin olun. Bu çalışma Google kod tabanına odaklansa da 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'ı, önemsiz ifadeleri satır içi olarak yerleştirmeyi önerecek şekilde güncelleyin.
  • P2. native.existing_rules için kullanım alanlarını inceleyin ve alternatifler önerin.
  • P2. Giriş dosyası için 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. Yerel sembolleri @bazel_tools altında Starlark'a taşıma özelliğini ekleyin.
  • P1. Eski işaretleri silin (bazı işaretler Google'da hâlâ kullanıldığı için önce kod tabanını temizlememiz gerekir): 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'ta aşağıdaki işaretlerin 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 temizliği, Bazel'den ayrılma).
  • P2. Bazel'in Java paketlerinde yapılan basit bir düzenlemenin derleme ve test gecikmesini% 50 azaltın.

Topluluk:

  • rules_python etkin ve topluluk tarafından iyi yönetiliyor.
  • rules_jvm_external için sürekli destek (beklemedeki pull isteği yok, sorun öncelikleri belirlenmiyor, sürüm yayınlama yapılmıyor).
  • Bazel doküman altyapısını sürdürme: bazel-website, bazel-blog ve dokümanlar genelinde CSS stillerini merkezileştirip standart hale getirme
  • Bazel dokümanları: Geriye gidişleri önlemek için e2e doküman sitesi derlemesi için CI testleri ekleyin.

2020 1. Çeyrek

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

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

Performans:

  • Bazel'in kendi Java tabanlı testlerini 2 kat daha hızlı hale getirin.
  • Starlark CPU profil aracını uygulayın.

Teknik borç azaltma:

  • 8 uyumlu olmayan işareti kaldırın (döndürdükten sonra).
  • lib.syntax temizleme çalışmasını tamamlayın (bağımlılıklara son verin).
  • Starlark optimizasyonu: düz ortam, bayt kodu derleme
  • Mümkünse analiz aşamasından tüm serileştirmeleri silin.
  • lib.packages'i basitleştirme/optimize etme planı oluşturun

Topluluk:

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