Ngôn ngữ lập trình Zig đã có những bước tiến đáng kể trong việc đạt được một trong những mục tiêu cốt lõi của mình: thời gian biên dịch nhanh hơn. Thử nghiệm thực tế với dự án terminal emulator Ghostty cho thấy những cải thiện đáng kể về tốc độ trong Zig 0.15.1, mặc dù hầu hết các bản build vẫn dựa vào LLVM thay vì backend tự phát triển của Zig.
Hiệu Suất Build Script Cho Thấy Những Cải Tiến Ấn Tượng
Cải tiến nổi bật nhất đến từ việc biên dịch build script, giảm từ hơn 7 giây trong Zig 0.14 xuống chỉ 1.7 giây trong phiên bản 0.15.1. Điều này thể hiện mức tăng tốc độ khoảng 76% cho bước biên dịch ban đầu mà mọi fresh build đều phải hoàn thành. Trong khi các developer làm việc trên những dự án đã thành lập có thể không nhận thấy điều này hàng ngày, nó tác động đáng kể đến những người dùng lần đầu build từ source code.
Build Ứng Dụng Đầy Đủ Có Những Cải Thiện Đáng Kể
Các build Ghostty hoàn chỉnh được cải thiện từ 41 giây xuống 32 giây, giảm 22% tổng thời gian build. Thảo luận cộng đồng cho thấy những ý kiến trái chiều về việc liệu những cải tiến như vậy có thực sự quan trọng trong thực tế hay không. Một số developer cho rằng thời gian biên dịch nhỏ bé so với thời gian dành để viết và suy nghĩ về code, trong khi những người khác nhấn mạnh rằng chu kỳ lặp nhanh hơn giúp tăng năng suất và duy trì trạng thái tập trung trong quá trình phát triển.
Bất kỳ độ trễ nào giữa việc viết code và xem kết quả đều là khoảng trống trong tâm trí tôi, nơi mà sự phân tâm có thể xâm nhập.
So sánh Thời gian Build giữa Zig 0.14 và 0.15.1
| Loại Build | Zig 0.14 | Zig 0.15.1 | Cải thiện |
|---|---|---|---|
| Biên dịch Build Script | 7 giây 167ms | 1 giây 702ms | Nhanh hơn ~76% |
| Full Uncached Ghostty Binary | 41 giây | 32 giây | Nhanh hơn 22% |
| Incremental Build ( Ghostty Executable ) | 19 giây | 16 giây | Nhanh hơn 16% |
| Incremental Build ( libghostty-vt ) | 2 giây 884ms | 975ms | Nhanh hơn 66% |
Lưu ý: libghostty-vt sử dụng self-hosted x86_64 backend của Zig , trong khi các build khác vẫn sử dụng LLVM
Backend Tự Phát Triển Cho Thấy Tiềm Năng Cho Những Cải Tiến Tương Lai
Kết quả hứa hẹn nhất đến từ những thành phần có thể sử dụng backend x86_64 tự phát triển của Zig thay vì LLVM. Thời gian rebuild thư viện libghostty-vt giảm từ gần 3 giây xuống dưới 1 giây khi sử dụng native backend. Thời gian build dưới một giây này thể hiện hướng đi mà Zig đang theo đuổi khi compiler tự phát triển của nó trưởng thành.
Các thành viên cộng đồng lưu ý rằng cách tiếp cận này khác với những ngôn ngữ như Rust, đã đạt được incremental build nhanh thông qua các hệ thống caching phức tạp. Chiến lược của Zig tập trung vào việc làm cho chính compiler nhanh hơn về cơ bản thay vì chủ yếu dựa vào việc cache build artifact.
Chiến Lược Compiler Backend Khơi Mào Cuộc Tranh Luận Kỹ Thuật
Cuộc thảo luận xung quanh việc sử dụng LLVM tiết lộ những quan điểm rộng hơn của ngành công nghiệp về thiết kế compiler. Một số thành viên cộng đồng xem LLVM như một cái bẫy cung cấp lợi ích bootstrapping nhanh chóng và tối ưu hóa nhưng hạn chế khả năng tinh chỉnh hiệu suất dài hạn. Những người khác chỉ ra những ví dụ thành công như Go, đã xây dựng code generation riêng từ đầu, và TCC (Tiny C Compiler), vẫn không có đối thủ về tốc độ biên dịch thuần túy.
Cuộc trò chuyện cũng đề cập đến những backend thay thế như Cranelift, được sử dụng trong một số dự án Rust, mặc dù so sánh hiệu suất cho thấy nó thường tạo ra code chậm hơn 24% so với output được tối ưu hóa của LLVM. Điều này làm nổi bật sự đánh đổi giữa tốc độ biên dịch và hiệu suất runtime mà các nhà thiết kế compiler phải điều hướng.
Những cải tiến này trong Zig 0.15.1 chỉ thể hiện khởi đầu của hành trình tốc độ biên dịch của ngôn ngữ này. Khi backend tự phát triển ổn định và các tính năng incremental compilation trưởng thành, nhóm phát triển kỳ vọng những cải tiến thậm chí còn ấn tượng hơn trong những năm tới.
Tham khảo: Zig Builds Are Getting Faster
