İçeriğe geç
edumintsBlog
Yazılım3 dk okuma

OmniDiff: Rust ile Geliştirilen Açık Kaynaklı, Süper Hızlı ve İçerik Duyarlı Git Fark Aracı

Kaynak: Hacker News

Paylaş
YazılımEdumints Blog
İçindekiler 4 başlık

OmniDiff: Hızlı, Sağlam ve Doğru Fark Analizi#

Yazılım geliştirme süreçlerinde kod inceleme (code review) ve sürüm kontrolü kalitesini belirleyen en kritik unsurlardan biri, değişikliklerin ne kadar net görülebildiğidir. Standart satır tabanlı diff araçları çoğu zaman yapısal değişiklikleri veya ikili (binary) dosyaları anlamlandırmakta yetersiz kalır. Rust diliyle geliştirilen açık kaynaklı OmniDiff, hızlı, sağlam ve içeriğe duyarlı (content-aware) yapısıyla Git iş akışlarını modernize etmeyi hedefler.

  • Sağlam (Robust): Kod değişikliklerinin %99,95'ini sorunsuz bir şekilde karşılaştırabilir.
  • İçerik Duyarlı (Content-aware): Değişikliklerin %98,8'ini dosya türüne özel algoritmalar kullanarak analiz eder.

İçerik Türlerine Göre Performans ve Doğruluk#

Intel Core i7-1370P işlemcili ve 32 GB RAM'li bir T14s sistemde yapılan ölçümlere göre (PDF dosyaları 10'dan az test vakasına sahiptir), OmniDiff'in 100 milisaniyenin altında çalışma oranı ve doğruluk metrikleri şu şekildedir:

  • Kod (Code): Hızlı (<100ms): %98 | Kusursuz Doğruluk: %70 | Kusursuza Yakın: %92
  • Resimler (Pictures): Hızlı (<100ms): %96 | Kusursuz Doğruluk: %69 | Kusursuza Yakın: %91
  • İmleçler (Cursors): Hızlı (<100ms): %100 | Kusursuz Doğruluk: %85 | Kusursuza Yakın: %100
  • Yazı Tipleri (Fonts): Hızlı (<100ms): %95 | Kusursuz Doğruluk: %82 | Kusursuza Yakın: %100
  • Arşivler (Archives): Hızlı (<100ms): %88 | Kusursuz Doğruluk: %87 | Kusursuza Yakın: %87
  • Mesaj Katalogları (Message catalogs): Hızlı (<100ms): %100 | Kusursuz Doğruluk: %83 | Kusursuza Yakın: %83
  • PDF Dosyaları (PDFs): Hızlı (<100ms): %57 | Kusursuz Doğruluk: %100 | Kusursuza Yakın: %100

Görsel Karşılaştırma ve Geliştirici Deneyimi#

Geliştiriciler için sadece kaynak kodunu değil, projedeki diğer varlıkları da inceleyebilmek büyük bir pratik kazanımdır. OmniDiff; komut satırından kaydedilmiş 20 gerçek kod değişikliğini klasik Unix diff ile yan yana karşılaştırma imkanı sunar. Ayrıca OpenDocument dosyaları, derlenmiş çeviri katalogları, hareketsiz/hareketli görseller, tek bir kutusu yeniden adlandırılmış PDF diyagramları veya 20 ikonu yeniden çizilmiş web fontları gibi karmaşık dosyaları kendi türüne göre analiz eder. Farklı açık ve koyu tema seçenekleriyle de inceleme ergonomisini artırır.

Kurulum Yöntemleri#

OmniDiff'i geliştirme ortamınıza entegre etmek için aşağıdaki 6 farklı kurulum yönteminden birini seçebilirsiniz:

  • Kaynaktan Kurulum (From source): cargo install --locked omnidiff komutuyla test edilmiş bağımlılıklarla derlenir. Sistemde bir C derleyicisi ve rustc 1.92 veya üzeri bir sürüm gereklidir. Tüm tree-sitter gramerlerini C'den derlediği ve lto = "fat" profilini kullandığı için ilk kurulum birkaç dakika sürebilir; bu yaklaşım çalışma zamanında maksimum performans sağlar.
  • Önceden Derlenmiş İkililer (Prebuilt binaries): Linux, macOS (Intel ve Apple Silicon) ve Windows için hazır çalıştırılabilir dosyalar her GitHub sürümüne eklenmektedir.
  • Homebrew: macOS ve Linux ortamlarında brew install ivankovic/omnidiff/omnidiff komutuyla hızlıca kurulabilir.
  • Debian ve Ubuntu: amd64 ve arm64 mimarileri için imzalı APT deposu üzerinden .deb paketleri olarak kurulabilir (omnidiff-archive-keyring.gpg anahtarı eklenip sudo apt update && sudo apt install omnidiff çalıştırılarak).
  • Nix ve NixOS: Nix kurulu sistemlerde nix run github:ivankovic/omnidiff komutuyla doğrudan çalıştırılabilir (flakes aktif değilse --extra-experimental-features 'nix-command flakes' parametresi eklenmelidir).
  • Arch ve Gentoo: Arch ve Gentoo tabanlı dağıtımlar için özel kurulum tarifleri (recipes) mevcuttur.

Kaynak ve atıf

Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • github.com/ivankovic/omnidiff