Ana Sayfa

Zlob: glibc'den Daha Hızlı ve Modern Bir Globbing Kütüphanesi

1 dk okuma

zlob, C, Zig ve Rust dilleri için geliştirilmiş, yüksek performanslı bir dosya yolu eşleştirme (globbing) kütüphanesidir. Geliştiriciler, glibc tarafından sağlanan standart glob() fonksiyonunun güncel ihtiyaçları karşılamakta yetersiz kalması, yavaş çalışması ve modern desenleri (örneğin **/*.c veya {a,b}/*.c gibi süslü parantez desteği) doğrudan sunmaması gibi sorunlara çözüm olarak zlob'u ortaya çıkarmıştır. glibc'nin varsayılan olarak sonuçları sıralaması ve eski yapısı, dosya sistemi işlemlerinde önemli performans düşüşlerine yol açmaktadır. zlob, bu eksiklikleri gidermek ve geliştiricilere daha verimli bir alternatif sunmak amacıyla tasarlanmıştır.

zlob, %100 POSIX ve glibc uyumluluğunu korurken, performansı önemli ölçüde artırır; bazı durumlarda glibc'den 10 kata kadar, genel senaryolarda ise 1.2-1.7 kat daha hızlıdır. Kütüphane, özyinelemeli desenler, süslü parantez kullanımı, .gitignore kuralları ve bashextglob gibi modern globbing formatlarını destekler. Performans artışının temelinde, SIMD (Tek Komut Çoklu Veri) tabanlı optimizasyonlar ve dizin listeleme için doğrudan getdents64 sistem çağrısının kullanılması yatar. Özellikle /**/*.{c,rs,zig} gibi sık kullanılan desenler, kalabalık dizinleri atlamak ve uzantıları aynı anda eşleştirmek için özel olarak optimize edilmiştir.

Çapraz platform desteği sunan zlob, Windows'ta ters eğik çizgi desteği olmasa da Cygwin altında sorunsuz çalışır. Kütüphane, glibc, Rust'ın glob krati ve Node.js'in fs.glob fonksiyonundan alınan tüm testleri başarıyla geçerek hem dosya sistemi hem de dize yolu eşleştirmede %100 uyumluluk ve doğruluk sergilemektedir. Geliştiricilere daha iyi bir API sunarak, dosya listeleri üzerinde globbing yapmayı kolaylaştırır ve çıktı yapısında yol uzunluğunu da göstererek FFI (Yabancı Fonksiyon Arayüzü) entegrasyonlarını basitleştirir.

İçgörü

Bu kütüphane, dosya sistemi üzerinde yüksek performanslı ve modern desenleri destekleyen globbing işlemleri için geliştiricilere önemli bir alternatif sunarak uygulama hızını ve esnekliğini artırıyor.

Kaynak