Roadmap Starlark

Laporkan masalah Lihat sumber {/18/}{/1/}

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

Kontak (POC): laurentlb

Sasaran

Tujuan kita adalah membuat Bazel bisa diperluas. Pengguna harus dapat dengan mudah menerapkan aturan mereka sendiri, serta mendukung bahasa dan alat baru. Kami ingin meningkatkan pengalaman penulisan dan mempertahankan aturan tersebut.

Kami berfokus pada dua area:

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

Kuartal 2 2020

Membangun kondisi dan Praktik terbaik:

  • P0. Mencegah makro yang tidak memiliki nama, dan memastikan namanya adalah literal string yang unik. Pekerjaan ini berfokus pada codebase Google, tetapi dapat memengaruhi alat yang tersedia untuk publik.
  • P0. Membuat perintah Buildozer andal terkait pemilihan dan variabel.
  • P1. Buat Buildifier menghapus duplikat dalam daftar yang tidak kita urutkan karena komentar.
  • P1. Mengupdate linter Buildifier untuk merekomendasikan menyisipkan ekspresi trivial.
  • P2. Pelajari kasus penggunaan native.existing_rules dan usulkan alternatifnya.
  • P2. Mempelajari kasus penggunaan untuk {i>file<i} pendahuluan dan mengusulkan alternatifnya.

Performa

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

Pengurangan utang teknis:

  • P0. Tambahkan kemampuan untuk mem-port 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 tanda berikut 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. Selesaikan pekerjaan lib.syntax (pembersihan API, pemisahan dari Bazel).
  • P2. Mengurangi hingga 50% latensi build+test dari pengeditan sederhana pada paket Java Bazel.

Komunitas:

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

Kuartal 1 2020

Membangun kondisi dan Praktik terbaik:

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

Performa

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

Pengurangan utang teknis:

  • Hapus 8 tanda yang tidak kompatibel (setelah membaliknya).
  • Selesaikan pekerjaan pembersihan lib.syntax (dependensi jeda).
  • 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 spesifik Bazel