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 ve 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.

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. Prelüd 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 küçük 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 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 getirin.
  • Starlark CPU profili oluşturucuyu uygulayın.

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.