Roadmap Starlark

Laporkan masalah Lihat sumber Per Malam · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

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

Kontak (POC): laurentlb

Sasaran

Tujuan kita adalah membuat Bazel bisa diperluas. Pengguna harus dapat mengakses menerapkan aturan mereka sendiri, dan mendukung alat dan bahasa baru. Kita 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 unik literal string. Pekerjaan ini berfokus pada codebase Google, tetapi dapat memengaruhi tersedia untuk umum.
  • P0. Membuat perintah Buildozer andal terkait pemilihan dan variabel.
  • P1. Membuat 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 bytecode kompilasi.

Pengurangan utang teknis:

  • P0. Tambahkan kemampuan untuk mem-port simbol native ke Starlark di bawah @bazel_tools.
  • P1. Hapus tanda yang sudah tidak digunakan (beberapa di antaranya masih digunakan di Google, jadi kita harus bersihkan 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, masalah menentukan prioritas, membuat rilis).
  • Menjaga infrastruktur dokumentasi Bazel: memusatkan dan melakukan kanonikalisasi CSS gaya di seluruh bazel-website, bazel-blog, docs
  • 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).
  • Menambahkan analyzer lintas file di Buildifier, menerapkan pemeriksaan untuk item yang tidak digunakan lagi fungsi-fungsi lainnya.

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