Roadmap Starlark

Laporkan masalah Lihat sumber

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

Kontak (POC): laurentlb

Sasaran

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

Kami berfokus pada dua area:

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

Kuartal 2 2020

Membangun kesehatan dan Praktik terbaik:

  • P0. Usahakan makro tidak memiliki nama, dan pastikan namanya adalah literal string yang unik. Pekerjaan ini berfokus pada codebase Google, tetapi dapat memengaruhi alat yang tersedia untuk publik.
  • P0. Membuat perintah Buildozer dapat diandalkan sehubungan dengan pilihan dan variabel.
  • P1. Buat Buildifier menghapus duplikat dalam daftar yang tidak kita urutkan karena komentar.
  • P1. Mengupdate linter Buildifier untuk merekomendasikan inline ekspresi trivial.
  • P2. Mempelajari kasus penggunaan native.rule_rules dan mengusulkan alternatif.
  • P2. Mempelajari kasus penggunaan untuk file awal dan mengusulkan alternatif.

Performa:

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

Pengurangan utang teknis:

  • P0. Menambahkan kemampuan untuk mentransfer simbol native ke Starlark di bawah @bazel_tools.
  • P1. Hapus tanda yang tidak digunakan lagi (beberapa di antaranya masih digunakan di Google, sehingga 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 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. Menyelesaikan pekerjaan lib.syntax (pembersihan API, pemisahan dari Bazel).
  • P2. Mengurangi 50% latensi build+test dari pengeditan trivial untuk 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, melakukan rilis).
  • Mempertahankan infrastruktur dokumentasi Bazel: memusatkan dan mengkanonikalisasi gaya CSS di seluruh situs bazel, blog bazel, dokumen
  • Dokumen Bazel: menambahkan pengujian CI untuk build situs dokumen e2e untuk mencegah regresi.

Kuartal 1 2020

Membangun kesehatan dan Praktik terbaik:

  • Izinkan target untuk 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).
  • Menambahkan penganalisis lintas file di Buildifier, menerapkan pemeriksaan untuk fungsi yang tidak digunakan lagi.

Performa:

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

Pengurangan utang teknis:

  • Menghapus 8 tanda yang tidak kompatibel (setelah membaliknya).
  • Menyelesaikan 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:

  • Memublikasikan Glosarium yang berisi definisi untuk semua istilah khusus Bazel