Starlark Yol Haritası

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 getirmek. Kullanıcılar kendi kurallarını kolayca uygulayabilmeli, yeni diller ve araçları destekleyebilmelidir. Bu kuralları yazma ve sürdürme deneyimini iyileştirmek istiyoruz.

İki alana odaklanıyoruz:

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

Ç2 2020

Derleme düzeyi ve en iyi uygulamalar:

  • S0. Makroların adı olmayan makrolardan kaçının ve adın benzersiz bir dize değişmez değeri olduğundan emin olun. Bu çalışma, Google kod tabanına odaklanmaktadır ancak herkese açık araçları etkileyebilir.
  • S0. Buildozer komutlarını seçimler ve değişkenler açısından güvenilir hale getirin.
  • S1. Güncelleyicinin, yorumlar nedeniyle sıralamadığımız listelerdeki kopyaları kaldırmasını sağlayın.
  • S1. Önemsiz ifadeleri satır içine almayı önermek için Büyüteç linter'ını güncelleyin.
  • P2. yerel.mevcut_rule öğelerinin kullanım alanlarını inceleyip alternatifler önerin.
  • P2. Başlangıç dosyası için kullanım alanlarını araştırmak ve alternatifler önermek.

Performans:

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

Teknik borç azaltma:

  • S0. @bazel_tools altında yerel simgeleri Starlark'a taşıma özelliği ekleyin.
  • S1. Eski işaretleri silin (bazıları hâlâ Google'da 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.
  • S1. Bazel 4.0'da şu işaretlerin çevirildiğinden emin olun: incompatible_disable_depset_items, incompatible_no_implicit_file_export, incompatible_run_shell_command_string, incompatible_restrict_string_escapes.
  • S1. lib.syntax işlemini tamamlayın (API temizleme, Bazel'den ayırma).
  • P2. Bazel'in Java paketlerinde yapılan önemsiz bir düzenlemenin derleme+test gecikmesini% 50 oranında azaltın.

Topluluk:

  • rules_python etkin bir topluluktur ve topluluk tarafından iyi bir şekilde yönetilir.
  • rules_jvm_external için sürekli destek (beklenmedik çekme isteği, sorun önceliklendirme, sürüm oluşturma yok).
  • Bazel belge altyapısını koruyun: Bazel web sitesi, bazel-blog ve dokümanlarda CSS stillerini merkezileştirin ve standartlaştırın
  • Bazel belgeleri: Regresyonları önlemek üzere e2e doküman sitesi derlemesi için CI testleri ekleyin.

2020 1. Çeyrek

Derleme düzeyi ve en iyi uygulamalar:

  • Hedeflerin, bazel query üzerinden dışa aktarmak için makro çağrı yığınlarını izlemesine izin ver
  • --incompatible_no_implicit_file_export uygulayın
  • Kullanımdan kaldırılan depset API'lerini (#5817, #10313, #9017) kaldırın.
  • Buzerfier'a bir çapraz dosya analiz aracı ekleyin, kullanımdan kaldırılan işlevler için bir kontrol uygulayın.

Performans:

  • Bazel'ın kendi Java tabanlı testlerini 2 kat hızlandırın.
  • Bir Starlark CPU profil aracı uygulayın.

Teknik borç azaltma:

  • Uyumsuz 8 işareti kaldırın (kapattıktan sonra).
  • lib.syntax temizleme işlemini tamamlayın (bağımlılıkları kaldırın).
  • Starlark optimizasyonu: düz ortam, bayt kodu derlemesi
  • Mümkünse analiz aşamasından tüm serileştirmeyi silin
  • lib.packages'i basitleştirmek/optimize etmek için bir plan yapma

Topluluk:

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