Perkembangan Kompiler Rust Berbasis GCC
- gccrs, proyek kompiler Rust berbasis GCC, dimulai pada 2014 dan bertujuan mengimplementasikan kompiler Rust di dalam GNU Compiler Collection (GCC).
- Tujuan gccrs adalah masuk ke rilis GCC 13, tetapi hal itu tidak tercapai dan kini menargetkan untuk disertakan dalam GCC 14 (diperkirakan rilis pada pertengahan 2024).
- gccrs menargetkan Rust versi 1.49, yang merupakan versi terakhir sebelum const generics diperkenalkan.
- Salah satu prinsip penting proyek gccrs adalah tidak membuat "superset" dari Rust, melainkan mereplikasi keluaran rustc apa adanya.
- Pustaka standar Rust terdiri dari beberapa "crate", dan gccrs berfokus mendukung kompilasi crate core dan alloc di antaranya.
- Saat ini gccrs masih belum dapat mengompilasi crate-crate tersebut karena beberapa fitur yang belum ada, dengan masalah utama berupa belum adanya borrow checker dan kurangnya LLVM intrinsics yang tidak didukung di GCC.
Memanfaatkan Keunggulan Ekosistem GCC
- Salah satu alasan utama pengembangan gccrs adalah agar dapat memanfaatkan plugin keamanan GCC.
- gccrs sudah digunakan oleh komunitas homebrew Sega Dreamcast, dan dapat melakukan analisis statis pada kode Rust unsafe dengan menggunakan plugin GCC.
- Melalui upaya gccrs, fitur tambahan untuk spesifikasi Rust dapat ikut disumbangkan, dan proyek ini ingin berpartisipasi dalam penyusunan spesifikasi resmi Rust.
Fitur yang Sedang Dikembangkan
- gccrs masih kekurangan banyak fitur inti, termasuk async/await, LLVM intrinsics yang tidak ada di GCC, dan makro
format_args!().
- Proyek Polonius mengimplementasikan borrow checker yang menghitung lifetime referensi dengan algoritme berbeda untuk mengatasi kekurangan borrow checker rustc saat ini.
- Pengerjaan makro
format_args!() telah dimulai, dan ini diperlukan untuk menyusun argumen yang diteruskan ke makro pemformatan string lainnya.
rustc_codegen_gcc
- rustc_codegen_gcc adalah proyek Rust berbasis GCC lain yang lebih matang dan memiliki cakupan lebih terbatas dibanding gccrs.
- rustc_codegen_gcc menggunakan pustaka libgccjit untuk terhubung ke API backend LLVM milik rustc, dan melakukan kompilasi pada tahap akhir rustc dan GCC.
- Per Oktober 2023, rustc_codegen_gcc dapat mengompilasi Rust for Linux tanpa patch tambahan.
Rust for Linux
- Proyek Rust for Linux menyediakan dokumentasi tentang cara membangun kode Rust untuk kernel menggunakan rustc atau rustc_codegen_gcc.
- gccrs menargetkan dukungan untuk Rust for Linux, tetapi hal itu tampak masih jauh terwujud karena perbedaan besar dengan versi rustc yang saat ini didukung.
Pendapat GN⁺
- Proyek gccrs bertujuan mengimplementasikan kompiler Rust berbasis GCC untuk bahasa Rust, yang dapat memberi keberagaman pada ekosistem Rust dan berpotensi memanfaatkan alat yang sudah ada seperti plugin keamanan GCC.
- Meski gccrs masih belum mampu mengompilasi bagian inti dari pustaka standar Rust, patut dicatat bahwa proyek ini sudah menemukan kasus penggunaan nyata di komunitas homebrew Sega Dreamcast.
- Artikel ini memberikan wawasan menarik tentang berbagai implementasi kompiler bahasa Rust dan kemungkinan perluasan ekosistem yang menyertainya.
1 komentar
Komentar Hacker News
Ringkasan komentar pertama:
Ringkasan komentar kedua:
Ringkasan komentar ketiga:
Ringkasan komentar keempat:
Ringkasan komentar kelima:
Ringkasan komentar keenam:
Ringkasan komentar ketujuh: