Xee - Rust ile yazılmış modern bir XPath ve XSLT motoru
(blog.startifact.com)- 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ı
xeeve Rust kütüphanesixee-xpathbileş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
libxml2velibxsltsağ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 Interpreterskitabı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,Serializationspesifikasyonu,XML Namespaces,XML Base,xml:idvb.- 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
Hacker News yorumu
Birinin gerçek anlamda açık kaynaklı bir XSLT 3 ve XPath 3 uygulaması yapmış olduğunu görmek sevindirici
Büyük miktarda XML kaynağı mevcut
XML kullanmak hâlâ harika
XML, veri birlikte çalışabilirliği için standart temelli bir yaklaşım
XSLT, başlıca tarayıcılarda hâlâ yaygın biçimde destekleniyor
WASM'e derlenebilmesi olumlu
Yakın zamanda bir XSLT 2 transpiler'ı yazdım
XPath ve XSLT'nin bugün hangi sorunları zarif biçimde çözdüğünü merak ediyorum
Java dışındaki alanda çalışmayı seviyorum
Bu uygulamanın bir gün Wine içinde MSXML uygulaması için kullanılıp kullanılamayacağını merak ediyorum