Roadmap Starlark

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

Kontak dukungan: laurentlb

Sasaran

Sasaran kami adalah membuat Bazel lebih mudah diperluas. Pengguna harus dapat dengan mudah menerapkan aturan mereka sendiri, dan mendukung bahasa serta alat baru. Kami ingin meningkatkan pengalaman menulis dan mengelola aturan tersebut.

Kami berfokus pada dua area:

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

Kuartal 2 2020

Kesehatan build dan Praktik terbaik:

  • P0. Jangan gunakan makro tanpa nama, dan pastikan nama tersebut adalah literal string unik. Pekerjaan ini berfokus pada codebase Google, tetapi dapat memengaruhi alat yang tersedia secara publik.
  • P0. Membuat perintah Buildozer menjadi andal terkait pilihan dan variabel.
  • P1. Membuat Buildifier menghapus duplikat dalam daftar yang tidak kami urutkan karena komentar.
  • P1. Memperbarui linter Buildifier untuk merekomendasikan ekspresi trivial inlining.
  • P2. Mempelajari kasus penggunaan untuk native.existing_rules dan mengusulkan alternatif.
  • P2. Mempelajari kasus penggunaan untuk file prelude dan mengusulkan alternatif.

Performa:

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

Pengurangan beban teknis:

  • P0. Menambahkan kemampuan untuk mem-port simbol native ke Starlark di bawah @bazel_tools.
  • P1. Menghapus 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. Memastikan flag berikut dapat diaktifkan 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 latensi build+pengujian sebesar 50% untuk pengeditan trivial 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 selesai, triase masalah, membuat rilis).
  • Mengelola infrastruktur dokumentasi Bazel: memusatkan dan mengkanonisasi gaya CSS di seluruh bazel-website, bazel-blog, docs
  • Dokumen Bazel: menambahkan pengujian CI untuk build situs dokumen e2e guna mencegah regresi.

Kuartal 1 2020

Kesehatan build dan Praktik terbaik:

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

Performa:

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

Pengurangan beban teknis:

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

Komunitas:

  • Memublikasikan Glosarium yang berisi definisi untuk semua istilah khusus Bazel