- Cranelift adalah backend pembuatan kode berlisensi Apache-2.0, yang dikembangkan sebagai bagian dari runtime Wasmtime untuk WebAssembly
- Pada Oktober 2023, proyek Rust mulai menyediakan Cranelift sebagai komponen opsional dalam toolchain nightly
- Pengguna kini dapat memakai Cranelift sebagai backend pembuatan kode untuk debug build proyek yang ditulis dengan Rust
- Cranelift bersaing dengan compiler yang sudah ada, dan menghasilkan kode lebih cepat dengan desain yang disederhanakan yang memprioritaskan hanya optimisasi penting
Pentingnya waktu kompilasi
- Pengguna bahasa pemrograman menginginkan waktu kompilasi yang cepat
- Rust, seperti bahasa lain yang menggunakan LLVM, juga menghadapi keluhan soal waktu kompilasi
- Compiler yang dapat menghasilkan kode dengan cukup cepat bisa lebih menguntungkan daripada menggunakan interpreter
- Compiler yang berfokus pada kecepatan kompilasi dapat memiliki nilai tersendiri
Optimisasi Cranelift
- Cranelift melakukan optimisasi dalam berbagai cara saat menghasilkan kode
- Pipeline optimisasinya berbasis E-graphs, yaitu struktur data yang merepresentasikan himpunan representasi antara secara efisien
- Dalam compiler tradisional, urutan optimisasi sangat memengaruhi kualitas kode yang dihasilkan
- Cranelift menggunakan E-graph agar urutan optimisasi tidak memengaruhi hasil
- Mengekstrak representasi akhir dari E-graph adalah masalah NP-complete, tetapi Cranelift menggunakan heuristik untuk mengekstrak representasi yang cukup baik dengan cepat
Cranelift untuk Rust
- Upaya untuk menggunakan Cranelift sebagai backend Rust cukup besar
- Compiler Rust menggunakan mid-level IR untuk merepresentasikan program yang telah melalui type checking
- Untuk menggunakan Cranelift, dibutuhkan pustaka yang mengonversi mid-level IR ke CLIF
- Pustaka ini sebagian besar ditulis oleh anggota tim compiler Rust, "bjorn3"
- Pengguna dapat mencoba backend Cranelift menggunakan rustup dan cargo.
Pendapat GN⁺
- Adopsi Cranelift dapat dilihat sebagai respons terhadap permintaan berkelanjutan di komunitas Rust untuk mengurangi waktu kompilasi. Ini dapat membantu meningkatkan produktivitas developer.
- Pendekatan Cranelift yang menggunakan E-graphs untuk menyelesaikan masalah urutan optimisasi menghadirkan paradigma baru dalam desain compiler. Ini dapat membuka arah baru dalam riset dan pengembangan compiler.
- Dari sudut pandang kritis, seberapa stabil dan efisien Cranelift dibandingkan LLVM masih perlu divalidasi lewat lebih banyak kasus penggunaan di dunia nyata.
- Backend compiler lain yang menawarkan fungsi serupa dengan Cranelift mencakup libgccjit milik GCC, dan melalui perbandingan dengan alternatif-alternatif ini, kelebihan dan kekurangan Cranelift bisa dipahami dengan lebih jelas.
- Developer yang mengadopsi Cranelift perlu mempertimbangkan kompatibilitas dengan infrastruktur berbasis LLVM yang ada serta biaya transisinya, dan harus mengevaluasi performa serta stabilitas Cranelift dengan cermat.
1 komentar
Komentar Hacker News