2 puan yazan GN⁺ 2024-11-30 | 1 yorum | WhatsApp'ta paylaş
  • Ninja'nın başarıları ve başarısızlıkları

    • Yaklaşık 9 yıl önce yazar, Make'e benzer bir build sistemi olan Ninja'yı duyurdu. İlk başta utanç verici gelse de bugün yaygın biçimde kullanılıyor.
    • Ninja'yı kullanan başlıca projeler arasında Chrome, Android ve Meson projesi bulunuyor.
    • Ninja, yazarın en başarılı açık kaynak projesi oldu; 2011'de duyuruldu, 2014'te sahipliği devredildi ve bugün üçüncü bakımcıya aktarılmış durumda.
    • Yazar, programlamada kod yazmaktan mimarinin, mimariden de sosyal meselelerin daha önemli olduğunu öğrendi.
  • Teknik ayrıntılar

    • Ninja, verilen gereksinimlere göre komutları çalıştıran basit bir sistemdir.
    • Ninja, ninja.build dosyasını alır, dosyaların değiştirilme zamanlarını kontrol eder ve gerekli komutları paralel olarak çalıştırır.
    • Make ile karşılaştırıldığında Ninja, girdi build dilinde daha az özelliğe sahiptir ve hızlı çalışmaya odaklanır.
    • Ninja, yol karşılaştırmalarını optimize etmek için girdi dosya yollarını bellek nesnelerine eşler.
  • Mimari notlar

    • Ninja'nın grafik temsili, build yapısını daha iyi yakalamak için dosyalar ve komutlar arasında iki parçalı bir grafik kullanır.
    • C header bağımlılıklarını işlemek için ek bağımlılık verileri kullanır.
    • Ninja kalıcı bir daemon süreci değildir; her çalıştırmada işe baştan başlar.
    • Dosya durumu zaten çekirdek tarafından önbelleğe alındığından, kullanıcı alanında bunu yeniden önbelleğe almanın neredeyse gereği yoktur.
    • Ninja, Chrome'un build'i temel alınarak tasarlandı ve büyük ölçekli projelerde ölçeklenebilirlik sorunları yaşıyor.
  • 'Assembler' mecazı

    • Ninja, çeşitli build sistemlerinin özelliklerini uygulamak yerine yalnızca eylem grafiğini uygular; böylece kullanıcıların başka üreteç programları seçmesine imkân tanır.
    • Bu tasarım Ninja'yı hızlı ve esnek kılar.
  • Varsayılanların önemi

    • Ninja, komutları varsayılan olarak paralel çalıştırır; bu da Make'e kıyasla paralel build'leri daha güvenli hâle getirir.
  • Hız

    • Ninja, büyük kod tabanlarında artımlı build performansına odaklandı ve bu kullanıcı memnuniyeti üzerinde büyük etki yarattı.
    • Ninja daha az CPU kullanır; bu da genel build performansını iyileştirir.
  • CMake

    • Ninja, CMake ile iyi entegre oldu ve bu entegrasyon sayesinde LLVM çalışmalarında kullanıldı.
  • Windows desteği

    • Ninja, Windows'ta da çalışır ve ilk kullanıcılarının çoğu Windows kullanıcısıydı.
  • İlgili çalışmalar

    • Ninja'nın tasarımı, Google'ın build sistemi blaze/bazel'den ilham aldı.
  • Açık kaynak bakımı

    • Açık kaynak bakımı keyifli değildir; kullanıcılardan çok sayıda talep ve eleştiri geldi.
    • Yazar, yazılım aracılığıyla hacker meslektaşlarını etkilemek istediğini söylüyor.
  • Son teşekkür

    • Yazar, Ninja'nın bakımcılarına ve katkıda bulunanlara teşekkür ediyor.

1 yorum

 
GN⁺ 2024-11-30
Hacker News görüşü
  • Programlamada kod yazmaktan çok mimarinin, mimariden de çok sosyal meselelerin daha önemli olduğu yönünde bir görüş var

    • Bunun, uzun süredir akıllarında olan düşünceyi iyi ifade ettiğini söylüyorlar
  • Android'in build sisteminde Ninja'nın rolü büyük

    • Başlangıçta makefiles kullanılıyordu, ancak soong adlı özel bir deklaratif build sistemiyle işler daha karmaşık hale geldi
    • Google, Makefiles'ı Ninja build dosyalarına dönüştüren katiyi geliştirdi
    • Ninja'ya geçiş zaman alıyor, ancak geçişten sonra hızlı çalışıyor
  • Google'ın latency üzerine araştırma yürüttüğü ve bu araştırmanın yayımlanmasını umdukları yönünde bir görüş var

  • CMake kullanırken C++20 modülleri için Ninja gerektiğinden, bir süre daha kullanılacağı yönünde bir görüş var

  • Ninja yerine Samurai'ye geçtiklerini ve her açıdan daha iyi olduğunu söylüyorlar

    • Bir build sisteminin tüm girdilerin hash'ini hesaplaması ve registry'de bulunup bulunmadığını kontrol etmesi gerektiğini düşünüyorlar
  • Doğruluk, kullanım kolaylığı ve performans arasında bir ödünleşim gerektiği ve bunun bilinçli olarak seçilmesi gerektiği yönünde bir görüş var

    • Kullanım kolaylığı için doğruluktan ödün veren araçların daha doğru bir ekosistem oluşturabileceğini söylüyorlar
  • Build sistemleri konusunda deneyimleri olduğunu ve Ninja'nın, sevdikleri programlama dilinde yeniden yazabilecek kadar küçük olduğunu söylüyorlar

    • Kendi build sistemini yapmaya yönelik adım adım bir eğitim olup olmadığını merak ediyorlar
  • Ninja'nın adını beğendiklerini ve onu daha hızlı yapmanın yolları olduğunu söylüyorlar

    • Aracın önceki çalıştırmanın durumunu kasıtlı olarak korumadığını açıklıyorlar