11 puan yazan GN⁺ 2025-03-30 | 1 yorum | WhatsApp'ta paylaş
  • Xee, Rust ile geliştirilen bir XML yürütme motorudur ve XPath 3.1 ile XSLT 3.0'ın en güncel sürümlerini destekler
    • XPath, XML sorgu dilidir; XSLT ise XML belgelerini başka belgelere dönüştüren bir dildir
  • Komut satırı aracı xee ve Rust kütüphanesi xee-xpath bileşenlerinden oluşur ve XPath sorgularını çalıştırabilir
  • Rust'ın performansı ve entegrasyon esnekliği sayesinde farklı dillere genişletilebilir durumdadır (ör. PHP binding'i mevcut)
  • İleride WebAssembly (WASM) ile tarayıcıda da çalışabilmesi bekleniyor

XML'in tarihi ve bugünkü konumu

  • XML, 1990'ların sonunda ortaya çıktı ve 2000'lerin başına kadar çok popüler bir teknolojiydi
  • Daha sonra JSON gibi teknolojilerin yükselişiyle ana akım olmasa da, veri saklama ve aktarımında hâlâ yaygın biçimde kullanılıyor; ayrıca belge formatlarında (docbook, JATS) ve web'in bazı bölümlerinde (SVG, MathML) sıkça yer alıyor
  • XML hâlâ önemli bir teknoloji ve Xee, XML teknolojilerini modernleştirmeyi hedefliyor
  • Geliştirici, Python için XML kütüphanesi lxmli geliştirmiş biri olduğundan, hem Rust'ı hem de XML'i iyi bilen nadir geliştiricilerden biri olarak Xee ile XML dünyasına geri dönüyor

XPath ve XSLT tam teşekküllü programlama dilleridir

  • XPath, XML'i gezinmek ve sorgulamak için kullanılan bir dildir; işlevsel bir dil olarak değişkenler, koşullar, döngüler ve fonksiyon tanımları içerir
  • XSLT, şablon tabanlı bir dönüşüm dilidir; gömülü ifade dili olarak XPath kullanır ve XML'i başka formatlara dönüştürür
  • Her iki dil de güçlü yeteneklere sahip, tam teşekküllü programlama dilleridir

Güncel XML açık kaynak yığınının sınırları

  • Java ekosisteminde, modern XPath/XSLT implementasyonu olarak Saxon bulunur; çeşitli dil binding'leri ve JavaScript runtime'ı da sunar
  • Buna karşılık çoğu Linux dağıtımı vb. ortamlarda varsayılan olarak libxml2 ve libxslt sağlanır
  • Bu C kütüphaneleri yalnızca XPath 1.0 ve XSLT 1.0'ı destekler; yani 1999'da çıkan spesifikasyonlarda kalmıştır
  • Güncel spesifikasyonları destekleyen açık kaynak alternatiflerin az olduğu bir ortamda Xee, Rust ile yazılmış modern bir alternatif sunuyor

XML dünyasının spesifikasyon merkezli kültürü

  • XML topluluğunda spesifikasyon merkezli kültür çok güçlüdür → bir özellik spesifikasyonda yoksa "gerçek" özellik olarak görülmez
  • Bu sayede geliştirme hızı yavaş olsa da temel son derece sağlamdır
  • XPath ve XQuery için REST framework'ü olan RESTXQ, 2012'de tartışılmaya başlandı ve 2024 itibarıyla hâlâ spesifikasyon güncellemeleri tartışılıyor

Xee'nin dil uygulama mimarisi

  • Crafting Interpreters kitabından yararlanılarak geliştirildi
  • XPath, tokenization → AST → ara gösterim (IR) → bytecode → interpreter çalıştırma aşamalarından geçer
  • Bu bytecode interpreter, Python ve Java gibi dillerde kullanılan stack machine yapısına benzer
  • XSLT de aynı mimari temel üzerine kuruludur; yalnızca frontend farklıdır, kalan bileşenler XPath ile ortak kullanılır

Devasa XML/XPath/XSLT spesifikasyonları dünyası

  • XPath 3.1 ve XSLT 3.0, 1.0 sürümlerine kıyasla çok daha karmaşık ve özellik bakımından zengindir
  • Uygulama için başvurulması gereken spesifikasyon belgeleri toplamda 1800 sayfayı aşar ve çeşitli standartlar birbirine bağımlıdır
  • Örneğin:
    • XPath 3.1, XQuery/XPath Data Model, Functions and Operators, XML Schema (yapı/veri tipleri)
    • XSLT 3.0, Serialization spesifikasyonu, XML Namespaces, XML Base, xml:id vb.
    • Düzenli ifade özellikleri de içerdiğinden ayrı bir regex motoru da geliştirildi → regexml

Xee'nin mevcut uygulama durumu

  • XPath 3.1'in çekirdek dili ve standart kütüphanesinin büyük bölümü tamamlanmış durumda
  • Standart kütüphanedeki bazı biçimlendirme ile ilgili fonksiyonlar henüz uygulanmadı
  • XPath 3.1 uyumluluk testlerinde 21859 testin 20130'u geçti (yaklaşık %92)
  • Testlerin tamamı yaklaşık 13 saniyede çalışıyor → performansı oldukça yüksek
  • XSLT henüz tamamlanmış değil, ancak temel altyapı hazır olduğundan genişletilmeye açık

Katkıcı aranıyor

  • Rust ve XML ile ilgilenen, programlama dili implementasyonu veya sorgu optimizasyonuna meraklı geliştiriciler memnuniyetle karşılanıyor
  • Spesifikasyona dayalı özellik implementasyonu, optimizasyon çalışmaları, sorgu performansını iyileştirme gibi birçok alanda katkı mümkün
  • Xee, Java ekosistemi dışındaki modern XML implementasyonlarından biri olarak açık kaynak topluluğunun desteğine ihtiyaç duyuyor

Ben hâlâ havalıyım. XML ile uğraşıyor olsam bile.

1 yorum

 
GN⁺ 2025-03-30
Hacker News yorumu
  • Birinin gerçek anlamda açık kaynaklı bir XSLT 3 ve XPath 3 uygulaması yapmış olduğunu görmek sevindirici

    • Geçmiş projelerde yalnızca XSLT & XPath 1.0 kullandım. Bunun nedeni Java/.NET dünyası dışında desteğin zayıf olmasıydı
    • Saxon harikaydı, ancak açık kaynak dünyasında XSLT 2.0 ve XPath 2.0 üzeri uygulamaların daha fazla olmasını isterdim
    • XSLT 3.0 harika bir spesifikasyon, ancak onu açık kaynak şekilde çalıştırmanın başka yollarına ihtiyaç var
  • Büyük miktarda XML kaynağı mevcut

    • Örneğin, Wikipedia arşivi sıkıştırılmamış halde 42 GB metin içeriyor
    • Bunu bellekte tamamen parse edilmiş biçimde tutmak 100 GB'tan fazla gerektirebilir
    • Çözüm streaming, ancak henüz desteklenmiyor
  • XML kullanmak hâlâ harika

    • Rust ile yazılmış yüksek performanslı, yüksek kaliteli kütüphanelere ihtiyaç var
    • Bunun üzerine kurulu bir Python kütüphanesi iyi bir temel olabilir
  • XML, veri birlikte çalışabilirliği için standart temelli bir yaklaşım

    • İlk öğrendiğimde geliştirici dostu olmadığı için ondan nefret etmiştim
    • Ama artık uzun ömürlü standartların değerini anlıyorum
    • XML, bilgisayarların tercih ettiği veri standardı gibi görünüyor
  • XSLT, başlıca tarayıcılarda hâlâ yaygın biçimde destekleniyor

  • WASM'e derlenebilmesi olumlu

    • Chrome ekibi bir ara libxml ve XSLT desteğini kaldırmaya çalışmıştı
    • Bu, temel araçlar üzerindeki çalışmanın önemli olduğunun bir kanıtı
  • Yakın zamanda bir XSLT 2 transpiler'ı yazdım

    • XPath motorunu yazmak en zor kısımdı
  • XPath ve XSLT'nin bugün hangi sorunları zarif biçimde çözdüğünü merak ediyorum

  • Java dışındaki alanda çalışmayı seviyorum

    • XML okuyucularının hata düzeltme özelliğine sahip olması önemli
  • Bu uygulamanın bir gün Wine içinde MSXML uygulaması için kullanılıp kullanılamayacağını merak ediyorum

    • Geçmişte Wine için bir XPath 1.1 uygulaması yazmıştım, ama birleştiremedim