GCC tabanlı Rust derleyicisinin geliştirme durumu
- GCC tabanlı Rust derleyicisi projesi gccrs, 2014'te başladı ve GNU Compiler Collection (GCC) içinde bir Rust derleyicisi gerçekleştirmeyi hedefliyor.
- gccrs'nin hedefi, GCC 13 sürümüne dahil edilmekti; ancak bu gerçekleşmedi ve şu anda hedef, GCC 14'e (2024 ortasında yayımlanması bekleniyor) dahil olmak.
- gccrs, Rust 1.49 sürümünü hedefliyor; bu, const generics'in tanıtılmasından önceki son sürüm.
- gccrs projesinin önemli ilkelerinden biri, Rust'ın bir "superset"ini oluşturmamak ve
rustc çıktısını birebir çoğaltmak.
- Rust standart kütüphanesi, birden çok "crate"ten oluşuyor ve gccrs, bunlar arasında
core ve alloc crate'lerinin derlenmesini desteklemeye odaklanıyor.
- gccrs şu anda çeşitli eksik özellikler nedeniyle bu crate'leri derleyemiyor;
borrow checker eksikliği ve GCC tarafından desteklenmeyen LLVM intrinsics'lerin yokluğu başlıca sorunlar.
GCC ekosisteminin avantajlarından yararlanma
- gccrs geliştirilmesinin başlıca nedenlerinden biri, GCC'nin güvenlik eklentilerinden yararlanmayı mümkün kılması.
- gccrs, hâlihazırda Sega Dreamcast homebrew topluluğu tarafından kullanılıyor ve GCC eklentileriyle
unsafe Rust kodunda statik analiz yapılabiliyor.
- gccrs çalışmaları sayesinde Rust belirtimine ek katkılar sağlanabildi ve proje, Rust'ın resmî spesifikasyonunun yazımına katılmayı amaçlıyor.
Geliştirilmekte olan özellikler
- gccrs'de hâlâ birçok temel özellik eksik; bunlar arasında async/await, GCC'de bulunmayan LLVM intrinsics'ler ve
format_args!() makrosu yer alıyor.
- Polonius projesi,
rustc'nin mevcut borrow checker'ındaki eksikleri gidermek için, referans ömürlerini farklı bir algoritmayla hesaplayan bir borrow checker uyguluyor.
format_args!() makrosu üzerindeki çalışmalar başladı; bu, diğer dize biçimlendirme makrolarına aktarılacak argümanları oluşturmak için gerekli.
rustc_codegen_gcc
- rustc_codegen_gcc, gccrs'den daha olgun ve kapsamı daha dar olan başka bir GCC tabanlı Rust projesi.
- rustc_codegen_gcc,
libgccjit kütüphanesini kullanarak rustc'nin LLVM backend API'sine bağlanıyor ve derlemeyi rustc ile GCC'nin daha geç aşamalarında gerçekleştiriyor.
- Ekim 2023 itibarıyla rustc_codegen_gcc, ek yama olmadan Rust for Linux'u derleyebiliyor.
Rust for Linux
- Rust for Linux projesi, çekirdek için Rust kodunun
rustc veya rustc_codegen_gcc ile nasıl derleneceğine dair belgeler sunuyor.
- gccrs, Rust for Linux desteğini hedefliyor, ancak şu anda desteklenen
rustc sürümüyle arasındaki büyük fark nedeniyle bunun gerçekleşmesi hâlâ uzak görünüyor.
GN⁺'nin görüşü
- gccrs projesi, Rust dili için GCC tabanlı bir derleyici gerçekleştirmeyi hedefliyor; bu da Rust ekosistemine çeşitlilik katarken GCC'nin güvenlik eklentileri gibi mevcut araçlardan yararlanma potansiyeli taşıyor.
- gccrs henüz Rust standart kütüphanesinin çekirdek bölümlerini derleyemese de, Sega Dreamcast homebrew topluluğunda şimdiden gerçek kullanım örnekleri bulması dikkat çekici.
- Bu yazı, Rust dilindeki farklı derleyici uygulamaları ve bunların ekosistemi genişletme potansiyeline dair ilgi çekici bir bakış sunuyor.
1 yorum
Hacker News görüşleri
İlk yorumun özeti:
Rust for Linuxgirişimi de başka bir neden.GNU Rusthaline gelmemesine dikkat ediliyor verustcçıktısını birebir kopyalamaya çalışıyor.İkinci yorumun özeti:
Üçüncü yorumun özeti:
Dördüncü yorumun özeti:
Beşinci yorumun özeti:
rustcnin hatalarını ve tuhaflıklarını bile kopyalamaya çalışmasının bir hata olduğu düşünülüyor.Altıncı yorumun özeti:
lwn.netbağlantısını paylaşarak abonelik yenilemeyi hatırlattığı için teşekkür ediliyor.Yedinci yorumun özeti:
clangkullanılarak derlenebiliyor.