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.

Odaklandığımız iki alan vardır:

  • 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

2020 2. Çeyrek

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. Eskimiş 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 önemsiz 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 önceliklendirmesi, yayın oluşturma).
  • Bazel doküman altyapısını koruma: CSS stillerini bazel-website, bazel-blog ve dokümanlar arasında merkezileştirme ve kanonikleştirme
  • Bazel dokümanları: Regresyonları önlemek için uçtan uca doküman sitesi derlemesiyle ilgili CI testleri ekleyin.

2020 1. Çeyrek

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

  • Hedeflerin, bazel query üzerinden dışa aktarmak 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 getirme
  • Starlark CPU profili oluşturucuyu uygulama.

Teknik borç azaltma:

  • 8 uyumsuz işareti kaldırın (çevirdikten sonra).
  • 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.