Komunitas pemrograman Rust sedang terlibat dalam diskusi sengit tentang performa kompilasi makro menyusul diperkenalkannya derive-deftly, sebuah crate baru yang dirancang untuk menyederhanakan pembuatan makro derive kustom. Meskipun alat ini menjanjikan untuk membuat pengembangan makro lebih mudah diakses, para developer mengemukakan kekhawatiran tentang dampak yang lebih luas dari penggunaan makro terhadap waktu build dan produktivitas.
Fitur Utama derive-deftly:
- Sintaks yang disederhanakan untuk membuat makro derive kustom tanpa kompleksitas makro prosedural
- Dukungan untuk struct, enum, dan union
- Pendekatan berbasis template dengan struktur kontrol
- Tidak dapat memodifikasi definisi tipe asli (seperti makro derive standar)
- Memerlukan sintaks
[derive(Deftly)]
dan[derive_deftly(TemplateName)]
Frustrasi yang Meningkat terhadap Performa Kompilasi Makro
Developer Rust semakin vokal tentang masalah waktu kompilasi yang disebabkan oleh codebase yang banyak menggunakan makro. Beberapa tim telah mulai mengambil langkah drastis untuk mengatasi masalah performa ini. Frustrasi telah mencapai titik di mana seluruh tim pengembangan mempertimbangkan kembali strategi penggunaan makro mereka.
Kami secara bertahap melarang penggunaan makro dari monorepo Rust kami. Dependensi yang banyak menggunakan makro juga akan dipangkas pada akhirnya.
Sentimen ini mencerminkan tren yang berkembang di mana kemudahan makro sedang ditimbang dengan dampaknya terhadap produktivitas developer. Library populer seperti Serde, meskipun dicintai karena fungsionalitasnya, dikutip sebagai kontributor signifikan terhadap waktu build yang lambat yang mengganggu pekerjaan pengembangan sehari-hari.
Kekhawatiran Komunitas:
- Performa Kompilasi: Basis kode yang banyak menggunakan makro menyebabkan peningkatan waktu build yang signifikan
- Integrasi IDE: Sintaks makro yang kompleks menyebabkan masalah pada lingkungan pengembangan
- Manajemen Dependensi: Tim mempertimbangkan untuk menghapus dependensi yang banyak menggunakan makro
- Kesenjangan Tooling: Kebutuhan akan metrik waktu kompilasi di repositori paket
Komunitas Meminta Tooling dan Metrik yang Lebih Baik
Diskusi ini telah memicu seruan untuk tooling yang lebih baik untuk membantu developer membuat keputusan yang tepat tentang penggunaan makro. Developer meminta agar repositori paket menyediakan metrik waktu kompilasi dan statistik penggunaan makro untuk dependensi. Ini akan memungkinkan tim untuk mengevaluasi biaya performa dari menambahkan dependensi baru sebelum mereka berdampak pada pipeline build mereka.
Waktu dari kekhawatiran ini sangat relevan karena Rust terus mengembangkan sistem makronya. Beberapa anggota komunitas menunjuk pada fitur bahasa yang akan datang yang mungkin mengatasi keterbatasan saat ini dalam definisi makro deklaratif untuk makro derive dan atribut.
Menyeimbangkan Kekuatan dan Kompleksitas dalam Desain Makro
Meskipun ada kekhawatiran performa, ada pengakuan bahwa alat seperti derive-deftly melayani tujuan penting dalam ekosistem. Crate ini bertujuan untuk menjembatani kesenjangan antara kekuatan makro prosedural dan hambatan kompleksitas yang mencegah banyak developer dari membuat fungsionalitas derive kustom.
Perdebatan yang sedang berlangsung menyoroti tantangan mendasar dalam pemrograman modern: bagaimana menyediakan abstraksi yang kuat tanpa mengorbankan karakteristik performa yang diandalkan developer untuk alur kerja yang produktif. Saat ekosistem Rust terus berkembang, menemukan keseimbangan yang tepat antara ekspresivitas dan efisiensi tetap menjadi prioritas utama bagi pembuat alat maupun pengguna.
Referensi: Introduction: Using derive-deftly for easy derive macros.