Roadmap Starlark

Terakhir diverifikasi: 21-04-2020 (histori update)

Kontak (POC): laurentlb

Sasaran

Tujuan kami adalah membuat Bazel lebih fleksibel. Pengguna harus dapat menerapkan aturan mereka sendiri dengan mudah, serta mendukung bahasa dan alat baru. Kami ingin meningkatkan pengalaman penulisan dan pemeliharaan aturan tersebut.

Kami berfokus pada dua bidang:

  • Buat bahasa dan API yang sederhana, tetapi andal.
  • Menyediakan alat yang lebih baik untuk membaca, menulis, mengupdate, men-debug, dan menguji kode.

Kuartal 2 2020

Membangun respons dan Praktik terbaik:

  • P0. Cegah makro tanpa memiliki nama, dan pastikan nama tersebut adalah literal string yang unik. Pekerjaan ini berfokus pada codebase Google, tetapi mungkin memengaruhi alat yang tersedia untuk publik.
  • P0. Membuat perintah Buildozer andal terkait pilihan dan variabel.
  • P1. Membuat Buildifier menghapus duplikat dalam daftar yang tidak kami urutkan karena komentar.
  • P1. Update linter Buildifier untuk merekomendasikan penyisipan ekspresi yang sederhana.
  • P2. Pelajari kasus penggunaan untuk native.mengefisienkan_aturans dan mengusulkan alternatif.
  • P2. Mempelajari kasus penggunaan untuk file pendahuluan dan mengusulkan alternatif.

Performa:

  • P1. Mengoptimalkan penafsir Starlark menggunakan lingkungan datar dan kompilasi bytecode.

Pengurangan utang teknis:

  • P0. Tambahkan kemampuan untuk mentransfer simbol native ke Starlark di bawah @bazel_tools.
  • P1. Hapus flag yang tidak digunakan lagi (beberapa di antaranya masih digunakan di Google, jadi kita perlu membersihkan codebase terlebih dahulu): incompatible_always_check_depset_elements, incompatible_disable_deprecated_attr_params, incompatible_no_support_tools_in_action_inputs, incompatible_new_actions_api.
  • P1. Pastikan flag berikutnya dapat dibalik di Bazel 4.0: incompatible_disable_depset_items, incompatible_no_implicit_file_export, incompatible_run_shell_command_string, incompatible_restrict_string_escapes.
  • P1. Menyelesaikan pekerjaan lib.syntax (pembersihan API, pemisahan dari Bazel).
  • P2. Mengurangi hingga 50% latensi build+pengujian dari pengeditan sederhana pada paket Java Bazel.

Komunitas:

  • rules_python aktif dan dipelihara dengan baik oleh komunitas.
  • Dukungan berkelanjutan untuk rules_jvm_external (tidak ada permintaan pull yang belum diselesaikan, triase masalah, pembuatan rilis).
  • Mengelola infrastruktur dokumentasi Bazel: memusatkan dan mengkanonikalisasi gaya CSS di seluruh situs bazel, bazel-blog, dokumen
  • Dokumen Bazel: menambahkan pengujian CI untuk build situs dokumen e2e guna mencegah regresi.

Kuartal 1 2020

Membangun respons dan Praktik terbaik:

  • Mengizinkan target melacak stack panggilan makronya, untuk diekspor melalui bazel query
  • Mengimplementasikan --incompatible_no_implicit_file_export
  • Menghapus API depset yang tidak digunakan lagi (#5817, #10313, #9017).
  • Tambahkan analyzer lintas file di Buildifier, terapkan pemeriksaan untuk fungsi yang tidak digunakan lagi.

Performa:

  • Membuat pengujian berbasis Java milik Bazel 2x lebih cepat.
  • Mengimplementasikan CPU profiler Starlark.

Pengurangan utang teknis:

  • Hapus 8 tanda yang tidak kompatibel (setelah membaliknya).
  • Menyelesaikan pekerjaan pembersihan lib.syntax (memutuskan dependensi).
  • Pengoptimalan Starlark: lingkungan datar, kompilasi bytecode
  • Hapus semua serialisasi dari fase analisis, jika memungkinkan
  • Membuat rencana untuk menyederhanakan/mengoptimalkan lib.packages

Komunitas:

  • Publikasikan Glosarium yang berisi definisi untuk semua istilah khusus Bazel