1 puan yazan GN⁺ 2023-07-06 | 1 yorum | WhatsApp'ta paylaş
  • Rust’ın düzenli ifade kütüphanesini geliştiren ve optimize eden, Rust’ın regex crate’inin bir yazarı bulunuyor.
  • regex crate’inin iç yapısını ayrı bir API olarak açığa çıkaran regex-automata adlı yeni bir crate oluşturuldu.
  • Bu, iç yapısını bu düzeyde ayrı bir sürüm kütüphanesi olarak açığa çıkaran ilk düzenli ifade kütüphanesidir.
  • Bu yazı, iyileştirme için yeniden yazım sürecini, sorunların nasıl çözüldüğünü ve regex-automata API’sine dair bir rehberi sunuyor.
  • Hedef kitle, Rust programcıları ve sonlu otomat tabanlı düzenli ifade motorlarının nasıl uygulandığıyla ilgilenen herkestir.
  • Bu yazı, regex crate’i ve geliştirme sürecinin kısa bir tarihçesini sunuyor.
  • regex crate’inin karşılaştığı sorunlar arasında yapılandırma, testler, belirli API talepleri ve tamamen derlenmiş DFA gereksinimi yer alıyor.
  • Yeniden yazım, bu sorunları çözüyor ve daha esnek, daha iyi optimize edilmiş bir çözüm sunuyor.
  • regex-automatayı ayrı bir crate olarak yayımlamak, ana regex crate’ini karmaşıklaştırmadan ek API’lerin deneysel olarak geliştirilmesine olanak tanıyor.
  • Bu yazı, regex-automata kullanmanın faydalarını ve düzenli ifade motorları alanındaki olası iyileştirme fırsatlarını vurguluyor.
  • Yazı, regex crate API’sine komut satırı erişimi sağlayan regex-cli programını açıklıyor.
  • Bu program; derlenmiş DFA’ları dosyaya serileştirme ve Rust kodu üretme gibi yardımcı araçlar içeriyor.
  • Yazı, düzenli ifade desenlerinde Unicode’un etkisine dair örnekler gösteriyor.
  • regex-cli programı, regex crate ekosistemindeki çeşitli veri türlerini hata ayıklama amacıyla yazdırabiliyor ve görüntüleyebiliyor.
  • Yakalama grupları kullanarak çoklu desen araması çalıştırabilen regex-cli find komutu bulunuyor.
  • Yazı, desen ayrıştırmadan NFA oluşturulmasına kadar düzenli ifade motorundaki veri akışını açıklıyor.
  • Literal çıkarımı, regex crate’inde kullanılan önemli bir optimizasyon tekniğidir.
  • Literal çıkarımı, düzenli ifade deseninden literal değerleri çıkarıp metin içinde olası eşleşme adaylarını hızlıca belirlemek anlamına gelir.
  • Hangi literallerin aranacağını seçmek, yanlış pozitifleri en aza indirmek ve gecikmeyi düşürmek açısından önemlidir.
  • Literal çıkarımı, yanlış pozitifleri ve gecikme etkisini en aza indirmeyi hedefleyen sezgisel bir süreçtir.
  • Literal çıkarımı için temel yaklaşım, daha uzun literallere öncelik vermek ve aşırı kısa ya da çok yaygın literallerden kaçınmaktır.
  • Yazı, düzenli ifadelerde literal dizi optimizasyonunu açıklıyor.
  • Literal dizi, tam eşleşen dizeler olarak ele alınan bir karakter dizisi kümesidir.
  • Optimizasyon sürecinde, performansı artırmak için sonsuza genişletilebilecek diziler belirlenir.
  • Yazı, farklı düzenli ifadelerin nasıl farklı literal diziler üretebildiğini anlatıyor.
  • Yazı ayrıca metin içinde literal arama sürecini de ele alıyor.
  • Tek alt dize ve çoklu alt dize aramalarında farklı algoritmalar kullanılıyor.
  • Yazı, NFA’ların (deterministik olmayan sonlu otomatlar) kavramını ve düzenli ifade motorlarındaki rolünü tanıtıyor.
  • NFA’lar başka türlere dönüştürülebilir; örneğin DFA’ların (deterministik sonlu otomatlar) uygulanmasında kullanılabilirler.
  • Yazı, NFA’nın bileşenlerine dair ayrıntılı örnekler sunuyor ve bunları açıklıyor.
  • Yazı, yeni NFA derleyicisinde epsilon geçişlerinin kullanımını azaltan optimizasyonlardan söz ediyor.
  • Yeni NFA derleyicisi, birden fazla bayt aralığını içeren seyrek durumlar kullanarak NFA gösterimini optimize ediyor.
  • Bu optimizasyon, ek yükü azaltıyor ve epsilon geçişlerine olan ihtiyacı ortadan kaldırıyor.
  • Önceki derleyicide kullanılan bayt odaklı NFA yavaştı ve Unicode ile bayt odaklı NFA için ayrı derlemeler gerektiriyordu.
  • Yeni NFA derleyicisi, Unicode sınıflarını işlemek için UTF-8 otomatını bayt odaklı NFA’ya entegre ediyor.
  • Yeni derleyici, sıralı ve iç içe geçmeyen öğe dizilerinden minimal DFA’lar hesaplamak için Daciuk algoritmasını kullanıyor.
  • Ters geçişler, range trie adlı özel bir veri yapısı kullanılarak ele alınıyor.
  • Yeni NFA derleyicisi, önceki derleyiciye kıyasla daha az durum içeren ve epsilon geçişi olmayan NFA’lar üretiyor.
  • Ters küçültme optimizasyonu kullanılarak NFA boyutu daha da azaltılabiliyor, ancak bu derleme süresini artırıyor.
  • Genel olarak yeni NFA derleyicisi, performansı artırıyor ve düzenli ifadelerde Unicode sınıflarının işlenmesini sadeleştiriyor.
  • Yazı, karakter kodlamasıyla ilgili teknik sorunları tartışıyor.
  • Bu sorun, seyrek karakterler ve farklı kodlama biçimlerindeki temsilleriyle ilgilidir.
  • Yazı, belirli karakterlerden ve bunların ilgili kodlamalardaki sıklığından söz ediyor.
  • Yazı, karakter kodlamasının karmaşıklığını ve olası zorluklarını vurguluyor.
  • Bu yazı, karakter kodlamasıyla çalışan yazılım mühendisleri ve geliştiriciler için ilgi çekici olabilir.
  • Yazı, düzenli ifade motorlarında NFA optimizasyon tekniklerini tartışıyor.
  • Thompson NFA, epsilon geçişleri nedeniyle iyi ölçeklenmemesiyle bilinir.
  • Yazı, literal alternatiflerini sınırlayarak epsilon geçişlerini azaltan bir NFA optimizasyonunu tanıtıyor.
  • Yeni NFA derleyicisi, literal’lerden bir trie oluşturuyor ve bunu epsilon geçişleri en aza indirilmiş bir NFA’ya dönüştürüyor.
  • Bu optimizasyon, soldan en önce eşleşme önceliğini koruyor ve arama performansını artırıyor.
  • Yazı ayrıca Glushkov NFA ve NFA’nın tek bir bitişik bellek ayırımı içinde saklanmasına yönelik gelecekteki çalışmalardan da söz ediyor.
  • Rust’ın regex crate’i, özellikler ile arama performansı arasında denge kurmak için birden fazla düzenli ifade motoru kullanıyor.
  • PikeVM, crate içindeki en güçlü düzenli ifade motorudur ve tüm düzenli ifade özelliklerini destekler.
  • PikeVM, NFA’yı simüle eder

1 yorum

 
GN⁺ 2023-07-06
Hacker News görüşleri
  • Rust regex crate'i efsanevidir ve topluluk için değerli bir araçtır.
  • Bu yazı, regex crate'indeki değişiklikleri ve iyileştirmeleri derinlemesine ele aldı.
  • Düzenli ifadeler, karmaşık işleri hızlıca yapabilen güçlü araçlardır.
  • Bu yazıda, düzenli ifadelerde ustalaşmak için bir kitap önerildi.
  • 2001 yılında Komodo editöründe son teknoloji bir düzenli ifade hata ayıklayıcısı vardı.
  • Ripgrep, kod ve metin dosyalarında arama yapmayı canlandıran bir araçtır.
  • Yorum yazarı, düzenli ifade işlevlerini string'lerle değil listelerle de kullanılabilecek şekilde genişletmeyi önerdi.
  • regex-automata crate'i tüm metin veri yapılarıyla uyumludur.
  • Yorum yazarı, BurntSushi'nin çalışmalarını övdü ve teşekkürlerini ifade etti.
  • Automa.jl, rastgele Julia kodu eklenmesine izin veren, tamamen Julia ile yazılmış bir düzenli ifade motorudur.