HeadlinesBriefing HeadlinesBriefing.com

GitHub headstart percepat Rust 54%

Hacker News •
×

Mulai crate dependen sebelum dependensi mereka selesai memeriksa tipe. Setiap crate menunggu crate yang menjadi dependensinya diperiksa sepenuhnya, termasuk badan fungsi, sebelum dimulai. Ia tidak memerlukan badan tersebut untuk memeriksa tipenya sendiri. Ia mengompilasi terhadap antarmuka dependensi, metadata dalam file .rmeta-nya. Headstart membuat rustc menulis file metadata awal segera setelah antarmuka diperiksa, dan membuat cargo memulai dependen berdasarkan file tersebut. Badan setiap crate kemudian diperiksa sementara crate hilir sudah mengompilasi.

cargo check: dependen berjalan hingga selesai pada metadata awal. cargo build: dependen melakukan semua analisis mereka pada metadata awal, lalu menunggu metadata lengkap dependensi sebelum menghasilkan kode. Sambil menunggu, mereka mengembalikan slot pekerjaan mereka. Jika suatu badan memiliki kesalahan, build tetap gagal dengan kesalahan tersebut, dengan diagnostik dan status keluar yang sama seperti hari ini; hanya baris kemajuan dan urutan lintas-crate dari pesan JSON yang dapat berbeda.

Biayanya adalah pekerjaan hilir yang dibuang, kesalahan yang dilaporkan sedikit lebih lambat, dan lebih banyak memori yang digunakan sekaligus (lihat docs/design.md). Pada frontend default rustc, headstart membuat build bersih dari 13 proyek nyata (rust-analyzer, zed, bevy, lemmy, polars dan lainnya) hingga 54% lebih cepat untuk cargo check, dan hingga 42% untuk cargo build. Tidak ada yang lebih lambat. Dengan frontend paralel (-Zthreads=8), yang mencakup sebagian area yang sama, ia menambah hingga 25%. Itu adalah angka 16-inti.

Sumber: Hacker News · Diringkas oleh HeadlinesBriefing