Kafayı yiyecektim gerçekten. Yeni bir C++ projesine başlayacaktım ve CMakeLists.txt yazmak, vcpkg ile kütüphane çekmek, derleyici flag'leriyle uğraşmak... Sanki asıl işimiz kod yazmak değil de, build sistemine hayatımızı adamakmış gibi. Şaka gibi ama, basit bir json kütüphanesi eklemek için 10 satır CMake yazdığınız oldu mu? Ben oldum.
Sonra Rust'a geçtim. Cargo ile tanıştığım an, gözlerim doldu desem yeridir. Cargo.toml dosyasına sadece şunu yazıyorsun:
Kod:
[dependencies]
serde = { version = "1.0", features = ["derive"] }
reqwest = "0.11"
Ve sihirli bir şekilde `cargo build` her şeyi hallediyor. Kütüphaneler indiriliyor, versiyon uyumlulukları kontrol ediliyor, derleniyor. C++ dünyasında bu kadar basit bir şey için saatler harcadığımı düşününce, Cargo gerçek bir cennetti.
Ama bu cennetin bir bedeli var tabii: DERLEME SÜRESİ. Özellikle temiz bir build (`cargo clean` sonrası) yaptığınızda, ekran saatlerce "Compiling..." yazısını kusuyor. Cargo tüm dependency'leri, onların dependency'lerini, ve onların da dependency'lerini sıfırdan derliyor. Bilgisayarın fanları kalkışa geçiyor, terminaldeki o ilerleme çubuğu sanki geriye doğru gidiyormuş gibi geliyor.
sccache gibi araçlarla derleme önbelleği yapmaya çalışıyorsun, `--release` flag'i ile debug sembollerinden kurtuluyorsun, daha hafif alternatif kütüphanelere yöneliyorsun. Ama yine de, o ilk derleme anı bir test gibi. Sabrınızı ölçüyor. "Acaba çay demlesem mi, kahve yapsam mı, bir bölüm dizi izlesem mi?" diye düşündürtüyor.
Sonuç olarak, Cargo'nun getirdiği muazzam kolaylık ve güven (evet, o borrow checker'ın hışmından bahsetmiyorum bile), bu derleme süresi cehennemine değer mi? Bence kesinlikle evet. C++'taki o build sistemi karmaşasında kaybettiğim zamandan çok daha az bir süre bu. Ama yine de, "Compiling..." yazısını görünce içimden bir "Ah be..." çekmiyor değilim.
Siz ne düşünüyorsunuz? C++ build sistemi mi daha çok sinir ediyor, yoksa Rust'ın uzun derleme süreleri mi? sccache gerçekten işe yarıyor mu, yoksa kendisi mi yeni bir dependency oldu? Terminal başında neler yapıyorsunuz o süre boyunca?