3 puan yazan GN⁺ 2024-03-22 | 1 yorum | WhatsApp'ta paylaş

Difftastic yapısal fark aracı

  • Difftastic, sözdizimini anlayan bir CLI fark aracıdır; dosyaları satır bazında değil, sözdizimi tabanlı olarak karşılaştırır.
  • İnsanların kolay okuyabileceği, doğru farklar sunar.

Gerçekte neyin değiştiğini anlama

  • Difftastic, kodu ayrıştırmak için tree-sitter kullanır.
  • Satır tabanlı metin farklarından farklı olarak, iç temsilin değişmediğini anlar.

Biçim değişikliklerini yok sayma

  • Kod biçimlendirici bir şeyi birden çok satıra bölmeye karar verdiğinde, yalnızca gerçekten değişen içeriği gösterir.

Sarmalama değişikliklerini görselleştirme

  • Bir wrapper eklendiğinde, Difftastic ayraçları doğru şekilde eşleştirir.
  • İçerik değiştirilse bile eklenen wrapper'ı gösterebilir.

Gerçek satır numaraları

  • Dosyanın değişiklik öncesi ve sonrası gerçek satır numaralarını birlikte gösterir.

60 saniyelik demo

Programlama dili desteği

  • C++, C#, Clojure, Dart, Erlang gibi çeşitli dilleri destekler.
  • Desteklenen dillerin ayrıntılı listesi kılavuzda görülebilir.

Dosya biçimi desteği

  • HCL, HTML, JSON, YAML gibi çeşitli dosya biçimlerini destekler.
  • Desteklenen dosya biçimlerinin ayrıntılı listesi kılavuzda görülebilir.

Git ile uyumlu

  • Git yapılandırma talimatları kılavuzda görülebilir.

Tamamen açık kaynak

  • Difftastic, MIT lisansına sahiptir.
  • İndirilebilir, değiştirilebilir ve arkadaşlarla paylaşılabilir.

Geliştirici

  • Wilfred Hughes tarafından Emacs ve kahve eşliğinde yapıldı.

GN⁺ görüşü

  • Difftastic, kodun yapısal farklarını tespit ederek geliştiricilerin değişiklikleri daha net anlamasına yardımcı olur.
  • Mevcut satır tabanlı diff araçlarıyla karşılaştırıldığında, Difftastic sözdizimini anlama ve biçim değişikliklerini yok sayma gibi özelliklerle daha gelişmiş bir karşılaştırma sunar.
  • Açık kaynak bir araç olarak, topluluk katkılarıyla sürekli gelişme potansiyeline sahiptir; kullanıcılar da ihtiyaçlarına göre özgürce değiştirip genişletebilir.
  • Benzer işlev sunan diğer araçlar arasında Git'in yerleşik aracı git diff ve JetBrains'in IntelliJ IDEA gibi IDE'lerdeki yerleşik karşılaştırma araçları bulunur; ancak Difftastic, sözdizimi tabanlı karşılaştırma şeklinde benzersiz bir yaklaşım sunar.
  • Difftastic'i kullanmaya başlarken, desteklediği programlama dilleri ve dosya biçimlerini kontrol etmek; ayrıca ekip içinde bu aracın kullanımına dair uzlaşma sağlamak gerekebilir. Bu araç, kod inceleme verimliliğini artırma ve iş birliği sürecindeki yanlış anlamaları azaltma avantajı sunar.

1 yorum

 
GN⁺ 2024-03-22
Hacker News görüşleri
  • Tree-sitter tabanlı teknolojinin tanıtımı

    • Tree-sitter, kodu AST (Abstract Syntax Tree, soyut sözdizimi ağacı) biçimine dönüştürür ve bunu editör ya da diff aracı gibi istemcilere sağlayan standart bir arayüz sunar.
    • Bu sayede araçların onlarca dili doğrudan desteklemesi gerekmez; Tree-sitter desteği ekleyerek Tree-sitter'ın desteklediği tüm dilleri otomatik olarak işleyebilirler.
    • Yeni bir dil geliştirildiğinde Tree-sitter parser'ı oluşturulursa, Tree-sitter'ı destekleyen tüm araçlar da o dili desteklemiş olur.
    • Bu yenilik, farklı dilleri destekleyen araçların geliştirilmesinde tekrar eden işleri azaltıyor ve daha iyi bir araç ekosistemi oluşturuyor.
  • Rust projeleri ve araçları güncelleme yöntemi

    • Rust tabanlı projelerin cargo üzerinden nasıl kurulup güncelleneceği anlatılıyor.
    • mise-en-place, asdf için hızlı ve esnek bir alternatif.
    • zoxide, cd komutuna alternatif olarak kullanıcının geçtiği dizinleri hatırlar ve kısmi eşleşme aramasıyla hızlı geçiş sağlar.
    • dust, du için tamamlayıcı bir araç olarak en çok disk alanı kullanan dizinleri gösterir.
  • Difftastic kullanım deneyimi ve görüşler

    • Difftastic kullanım deneyimi paylaşılırken, başka diff araçları kullanıldığında rahatsızlık hissedildiği belirtiliyor.
    • Sözdizimi değişse bile anlamın aynı kaldığı durumları karşılaştırabilen bir "semantic" diff aracının olasılığı araştırılıyor.
  • Difftastic'in kullanışlılığı

    • Difftastic'in gerçek dosya satır numaralarını göstermesi özellikle vurgulanıyor ve git diff ile birlikte kullanıldığında çok faydalı olduğu belirtiliyor.
  • İlgili araç: diff2html

    • diff2html, CLI (Command Line Interface) üzerinden HTML biçimindeki diff'i tarayıcı sekmesinde gösteren bir araç.
  • Augeas kütüphanesiyle kullanım deneyimi

    • Augeas kütüphanesi kullanılarak yapılandırma dosyalarındaki farkların tespit edildiği ve kullanıcıların sözdizimine duyarsız, ayrıntılı allowlist'ler yazabildiği bir deneyim paylaşılıyor.
  • Semantic Merge ile karşılaştırma

    • Semantic Merge açık kaynak değildi, ancak Difftastic açık kaynak ve daha iyi diff sunuyor.
    • Difftastic'in merge özelliğine doğru genişletilmesinin planlanıp planlanmadığı merak ediliyor.
  • icdiff'e geri dönüş

    • Difftastic denenmiş olsa da, değişmeyen kısımlara garip biçimlendirme uygulaması gibi sorunlar nedeniyle icdiff'e geri dönüldüğü belirtiliyor.
  • Difftastic'in görsel sorunları

    • Büyük XML dosyaları incelenirken değiştirilen satır ve nitelikleri görsel olarak ayırt etmenin zor olduğu belirtiliyor; stilin nasıl değiştirileceğine dair belgelerin gerekli olduğu ifade ediliyor.
  • Difftastic'in kurulum boyutu

    • Arch Linux paketinin 7MB olduğu, ancak kurulumdan sonra 80MB'a çıktığı ve difft ikilisinin tek başına 78MB olduğu belirtiliyor.
    • LZ4 sıkıştırması kullanan ZFS veri kümesinde bunun 17MB göründüğü, sıkıştırılabilir içeriğin neden ikili dosyaya gömülmediğinin sorgulandığı ifade ediliyor.