Roadmap Starlark

Laporkan masalah Lihat sumber Nightly · 8.0 · 7.4 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

Kontak (POC): laurentlb

Sasaran

Sasaran kami adalah membuat Bazel lebih dapat diperluas. Pengguna harus dapat menerapkan aturan mereka sendiri dengan 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 sederhana, tetapi canggih.
  • Memberikan alat yang lebih baik untuk membaca, menulis, mengupdate, 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 andal sehubungan dengan pilihan dan variabel.
  • P1. Membuat Buildifier menghapus duplikat dalam daftar yang tidak kita urutkan karena komentar.
  • P1. Memperbarui lint Buildifier untuk merekomendasikan penyertaan inline ekspresi yang tidak penting.
  • P2. Pelajari kasus penggunaan untuk native.existing_rules dan sarankan alternatif.
  • P2. Pelajari kasus penggunaan untuk file prelude dan sarankan alternatif.

Performa

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

Pengurangan utang 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. 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. Selesaikan pekerjaan lib.syntax (pembersihan API, pemisahan dari Bazel).
  • P2. Mengurangi latensi build+pengujian sebesar 50% dari pengeditan sepele 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, pengelompokan masalah, pembuatan rilis).
  • Mengelola infrastruktur dokumentasi Bazel: memusatkan dan mengonversi gaya CSS di seluruh situs bazel, blog bazel, dokumen
  • Dokumen Bazel: menambahkan pengujian CI untuk build situs dokumen e2e guna mencegah regresi.

K1 2020

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

Performa

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

Pengurangan utang teknis:

  • Menghapus 8 flag yang tidak kompatibel (setelah membalikkannya).
  • Selesaikan pekerjaan pembersihan lib.syntax (putuskan 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