· kaynak Hacker News – Front Page (hnrss.org)
mold linker makalesi, çok gigabaytlık debug binary'lerini saniye altında link etmeyi iddia ediyor
Veri paralelliği üzerine kurulmuş bir Unix/Linux linker olan mold ile ilgili bir arXiv makalesi, çok gigabaytlık debug binary'lerinin saniyeler içinde — lld'den 16,1 kata, GNU ld'den 112 kata kadar daha hızlı — link edilmesini raporluyor.

Linker — derlenmiş object dosyalarını çalıştırılabilir dosyalara ve paylaşılan kütüphanelere birleştiren araç — gerçek zaman kaybettirmeye başlayana dek nadiren ilgi görür. Baştan itibaren paralel yürütmeye göre tasarlanmış bir Unix/Linux linker olan mold'u tanımlayan bir makale, Rui Ueyama tarafından 24 Ağustos 2026'da arXiv'e gönderilen ön baskının iki gün sonra, 26 Ağustos'ta Hacker News'in ana sayfasına ulaştı. Sonuçları, büyük C++ projelerinde link sürelerinin bir mertebeye yakın veya daha fazla kısalabileceğine işaret ediyor.
Makale ne raporluyor
Makaleye göre mold, çok gigabaytlık debug build'lerini — büyük C++ programlarının tam sembol bilgisiyle derlendiğinde ürettiği türden — en fazla birkaç saniyede, çoğu zaman da bir saniyenin altında link ediyor. Modern lld linker ile karşılaştırıldığında mold, test edilen programlarda 2,4 ila 16,1 kat daha hızlı çıkıyor. GNU araç zincirinin geleneksel linker olan GNU ld ile karşılaştırıldığında ise rapor edilen fark 112 kata kadar çıkıyor.
Mevcut linker'lar neden ölçeklenmiyor
Makalenin teşhisi tesadüfi değil, mimari. Sembol çözümü — bir programdaki her referansı onu karşılayan tanımla eşleştirme — tarihsel olarak arşiv işleme, yani statik kütüphanelerden hangi object dosyalarının çıkarılacağına karar veren mantıkla iç içe geçmiş durumda. Çıkarılan her object, daha fazla çıkarma gerektiren yeni çözülmemiş semboller getirebildiğinden, linker çekirdekler arasında bölünmeye direnen bağımlılık güdümlü bir dizilmeye itiliyor. Makalenin belirlediği kısıtlar arasında, bu bağlaşım bir link çalışırken CPU çekirdeklerinin çoğunu boşta bırakan asıl neden.
Sıfırdan bir tasarım
mold'un yanıtı kademeli optimize etmek yerine baştan başlamak. Makale, sembol çözümünü arşiv işlemeden ayırarak ardışık zinciri kıran ve ardından link pipeline'ının her aşamasına birkaç sıcak nokta yerine sistematik biçimde veri paralelliği uygulayan bir tasarım tanımlıyor. Çerçeveleme önemli: eşzamanlılık, ardışık bir çekirdeğe sonradan eklenen bir parça değil, baştan itibaren mimarinin yapısal bir gereksinimi olarak ele alınıyor.
Tek bir çözüm baskın değil
Makaledeki bir ablation çalışması, mold'un optimizasyonlarından hangisinin toplam hızlanmaya en çok katkı yaptığını inceliyor. Bulgu, hiçbirinin tek başına baskın olmadığı — kazanımların tüm geçişlerin paralelleştirilmesinin birikimli etkisinden geldiği. Bu sonuç, makalenin merkezî iddiasını pekiştiriyor: kısmi paralelllik, toplam verimi sınırlayan ardışık kalıntılar bırakıyor; dolayısıyla performansı sağlayan herhangi bir tek hile değil, mimarinin kendisi.
Neden önemli
Büyük C++ kod tabanlarında çalışan geliştiriciler için linker, sık sık edit-compile-debug döngüsündeki son seri darboğazdır. Derleme çekirdeklere ve makinelere arasında paralelleşir, ancak son link adımı geleneksel olarak tek uzun ardışık işlem olarak çalışmıştır — debug build'leri ise işleri daha da kötüleştirir, çünkü tam sembol bilgisi binary'leri çoklu gigabaytlara taşıyabilir. Eğer mold'un rakamları yazarlarının benchmark'ları dışında da tutarsa, linker değiştirmek mevcut en ucuz build optimizasyonlarından biri haline gelir: kaynak kodda değişiklik yok, yalnızca pipeline'ın sonunda daha hızlı bir araç. Bu, en çok sürekli yeniden link yapan iş akışları için önemli: artımlı test koşuları, sanitizer ve debug konfigürasyonları ve her varyantı ayrı ayrı link eden CI job'ları gibi. İki uyarıyı akılda tutmakta fayda var: rakamlar bağımsız değerlendirmeler değil makalenin kendi ölçümleri ve mold Unix/Linux'u hedefliyor, dolayısıyla makale macOS ya da Windows binary'leri hakkında bir iddiada bulunmuyor.
- #linker
- #build-tools
- #cpp
- #performance
- #linux