Zig 0.15.1 Memberikan Peningkatan Kelajuan Kompilasi yang Besar Walaupun Masih Menggunakan LLVM

Pasukan Komuniti BigGo
Zig 0.15.1 Memberikan Peningkatan Kelajuan Kompilasi yang Besar Walaupun Masih Menggunakan LLVM

Bahasa pengaturcaraan Zig telah membuat kemajuan yang ketara dalam mencapai salah satu matlamat terasnya: masa kompilasi yang lebih pantas. Ujian dunia sebenar dengan projek emulator terminal Ghostty menunjukkan peningkatan kelajuan yang besar dalam Zig 0.15.1, walaupun kebanyakan binaan masih bergantung pada LLVM berbanding backend kendiri Zig.

Prestasi Skrip Binaan Menunjukkan Keuntungan Dramatik

Peningkatan yang paling menarik datang daripada kompilasi skrip binaan, yang menurun daripada lebih 7 saat dalam Zig 0.14 kepada hanya 1.7 saat dalam versi 0.15.1. Ini mewakili peningkatan kelajuan kira-kira 76% untuk langkah kompilasi awal yang mesti diselesaikan oleh setiap binaan baharu. Walaupun pembangun yang bekerja pada projek yang telah sedia ada mungkin tidak menyedari ini setiap hari, ia memberi kesan yang ketara kepada pengguna kali pertama yang membina daripada sumber.

Binaan Aplikasi Penuh Melihat Pengurangan yang Bermakna

Binaan Ghostty yang lengkap bertambah baik daripada 41 saat kepada 32 saat, pengurangan 22% dalam jumlah masa binaan. Perbincangan komuniti mendedahkan pendapat bercampur tentang sama ada peningkatan sedemikian penting dalam amalan. Sesetengah pembangun berhujah bahawa masa kompilasi adalah kecil berbanding masa yang dihabiskan untuk menulis dan berfikir tentang kod, manakala yang lain menekankan bahawa kitaran lelaran yang lebih pantas meningkatkan produktiviti dan mengekalkan keadaan aliran semasa pembangunan.

Sebarang kelewatan antara menulis kod dan melihat hasilnya adalah ruang kosong dalam fikiran saya di mana gangguan boleh masuk.

Perbandingan Masa Pembinaan Zig 0.14 vs 0.15.1

Jenis Pembinaan Zig 0.14 Zig 0.15.1 Penambahbaikan
Kompilasi Skrip Pembinaan 7saat 167ms 1saat 702ms ~76% lebih pantas
Binari Ghostty Penuh Tanpa Cache 41saat 32saat 22% lebih pantas
Pembinaan Tambahan ( Ghostty Executable ) 19saat 16saat 16% lebih pantas
Pembinaan Tambahan (libghostty-vt) 2saat 884ms 975ms 66% lebih pantas

Nota: libghostty-vt menggunakan backend x86_64 self-hosted Zig , manakala pembinaan lain masih menggunakan LLVM

Backend Kendiri Menunjukkan Janji untuk Keuntungan Masa Depan

Keputusan yang paling menjanjikan datang daripada komponen yang boleh menggunakan backend x86_64 kendiri Zig berbanding LLVM. Masa pembinaan semula perpustakaan libghostty-vt menurun daripada hampir 3 saat kepada bawah 1 saat apabila menggunakan backend asli. Masa binaan sub-saat ini mewakili arah yang dituju oleh Zig semasa pengkompil kendirinya matang.

Ahli komuniti menyatakan bahawa pendekatan ini berbeza daripada bahasa seperti Rust, yang telah mencapai binaan tambahan yang pantas melalui sistem caching yang canggih. Strategi Zig memberi tumpuan kepada menjadikan pengkompil itu sendiri lebih pantas secara asasnya berbanding bergantung terutamanya pada caching artifak binaan.

Strategi Backend Pengkompil Mencetuskan Perdebatan Teknikal

Perbincangan mengenai penggunaan LLVM mendedahkan perspektif industri yang lebih luas mengenai reka bentuk pengkompil. Sesetengah ahli komuniti melihat LLVM sebagai perangkap yang menyediakan faedah bootstrapping dan pengoptimuman yang pantas tetapi mengehadkan keupayaan penalaan prestasi jangka panjang. Yang lain menunjuk kepada contoh yang berjaya seperti Go, yang membina penjanaan kodnya sendiri dari awal, dan TCC (Tiny C Compiler), yang kekal tiada tandingan untuk kelajuan kompilasi tulen.

Perbualan itu juga menyentuh backend alternatif seperti Cranelift, yang digunakan dalam beberapa projek Rust, walaupun perbandingan prestasi menunjukkan ia biasanya menghasilkan kod 24% lebih perlahan daripada output yang dioptimumkan LLVM. Ini menyerlahkan pertukaran antara kelajuan kompilasi dan prestasi runtime yang mesti dinavigasi oleh pereka bentuk pengkompil.

Peningkatan ini dalam Zig 0.15.1 mewakili hanya permulaan perjalanan kelajuan kompilasi bahasa tersebut. Semasa backend kendiri stabil dan ciri kompilasi tambahan matang, pasukan pembangunan menjangkakan peningkatan yang lebih dramatik dalam tahun-tahun akan datang.

Rujukan: Zig Builds Are Getting Faster