Xee - Rust में लिखा गया आधुनिक XPath और XSLT इंजन
(blog.startifact.com)- Xee, Rust में विकसित एक XML execution engine है, जो XPath 3.1 और XSLT 3.0 के नवीनतम versions को support करता है
- XPath, XML query language है, और XSLT, XML documents को दूसरे documents में transform करने की language है
- यह command-line tool
xeeऔर Rust libraryxee-xpathसे बना है, जिनकी मदद से XPath queries चलाई जा सकती हैं - Rust की performance और integration क्षमता के आधार पर इसे कई भाषाओं तक बढ़ाया जा सकता है (उदाहरण: PHP bindings मौजूद हैं)
- भविष्य में इसके WebAssembly(WASM) के जरिए browser में भी चलने की उम्मीद है
XML का इतिहास और आज की स्थिति
- XML 1990 के दशक के अंत में आया था, और 2000 के शुरुआती वर्षों तक यह बेहद लोकप्रिय तकनीक था
- बाद में JSON आदि के आने से यह मुख्यधारा में नहीं रहा, लेकिन आज भी data storage और transfer में, document formats (docbook, JATS) या web के कुछ हिस्सों (SVG, MathML) में इसका खूब उपयोग होता है
- XML अब भी एक महत्वपूर्ण तकनीक है, और Xee का लक्ष्य XML तकनीक को modernize करना है
- डेवलपर के पास Python के लिए XML library
lxmlबनाने का अनुभव है, इसलिए Rust और XML दोनों को अच्छी तरह जानने वाले दुर्लभ डेवलपर के रूप में वह Xee के जरिए फिर से XML दुनिया में लौटे हैं
XPath और XSLT पूरी प्रोग्रामिंग भाषाएँ हैं
- XPath, XML को navigate और query करने की language है, और एक functional language के रूप में इसमें variables, conditionals, loops, function definitions आदि शामिल हैं
- XSLT, template-based transformation language है, जो XPath को embedded expression language के रूप में इस्तेमाल करके XML को दूसरे formats में बदलती है
- दोनों भाषाएँ शक्तिशाली capabilities वाली पूर्ण programming languages हैं
मौजूदा XML open source stack की सीमाएँ
- Java ecosystem में आधुनिक XPath/XSLT implementation के रूप में Saxon मौजूद है, जो कई language bindings और JavaScript runtime भी प्रदान करता है
- इसके विपरीत, ज़्यादातर Linux distributions आदि में
libxml2औरlibxsltdefault रूप से मिलते हैं - ये C libraries केवल XPath 1.0 और XSLT 1.0 को support करती हैं, और 1999 की specifications पर अटकी हुई हैं
- नवीनतम specifications को support करने वाले open source alternatives की कमी के बीच, Xee Rust में लिखा गया एक आधुनिक विकल्प पेश करता है
XML दुनिया की specification-केंद्रित संस्कृति
- XML community में specification-केंद्रित संस्कृति बहुत मजबूत है → यदि कोई feature specification में नहीं है, तो उसे 'वास्तविक' feature नहीं माना जाता
- इसकी वजह से development की रफ्तार धीमी है, लेकिन इसकी बुनियाद बहुत मज़बूत है
- XPath और XQuery के REST framework RESTXQ पर 2012 में चर्चा हुई थी, और 2024 तक भी इसकी specification updates पर चर्चा जारी है
Xee की language implementation architecture
- इसे
Crafting Interpretersकिताब को संदर्भ बनाकर implement किया गया है - XPath, tokenization → AST → intermediate representation(IR) → bytecode → interpreter execution के चरणों से गुजरता है
- यह bytecode interpreter, Python, Java आदि में इस्तेमाल होने वाली stack machine जैसा है
- XSLT भी इसी architecture पर आधारित है; केवल frontend अलग है, बाकी components XPath की तरह ही उपयोग किए जाते हैं
विशाल XML/XPath/XSLT specifications की दुनिया
- XPath 3.1 और XSLT 3.0, version 1.0 की तुलना में कहीं अधिक जटिल और feature-rich हो चुके हैं
- implementation के लिए जिन specification documents को देखना पड़ता है, वे ही 1800 pages से अधिक हैं, और कई specifications एक-दूसरे पर निर्भर हैं
- उदाहरण के लिए:
XPath 3.1,XQuery/XPath Data Model,Functions and Operators,XML Schema(structure/data types)XSLT 3.0,Serialization spec,XML Namespaces,XML Base,xml:idआदि- इसमें regular expression features भी शामिल हैं, इसलिए एक अलग regex engine भी implement किया गया → regexml
Xee की वर्तमान implementation स्थिति
- XPath 3.1 की core language और standard library का अधिकांश हिस्सा implement हो चुका है
- standard library के कुछ formatting-related functions अभी implement नहीं हुए हैं
- XPath 3.1 compatibility tests में 21859 में से 20130 tests पास (लगभग 92%)
- सभी tests लगभग 13 seconds में चल जाते हैं → performance बहुत तेज़ है
- XSLT अभी पूरा नहीं हुआ है, लेकिन इसकी बुनियादी संरचना तैयार है और इसे आगे बढ़ाया जा सकता है
contributors आमंत्रित हैं
- Rust और XML में रुचि रखने वाले डेवलपर्स, programming language implementation या query optimization में दिलचस्पी रखने वाले लोगों का स्वागत है
- specification-आधारित feature implementation, optimization work, query performance improvements जैसे कई क्षेत्रों में योगदान दिया जा सकता है
- Java ecosystem के बाहर एक आधुनिक XML implementation के रूप में Xee इस समय open source community के समर्थन का पात्र है
मैं अब भी कूल हूँ। भले ही मैं XML के साथ काम करता हूँ।
1 टिप्पणियां
Hacker News राय
यह देखकर खुशी हुई कि किसी ने वास्तव में open source XSLT 3 और XPATH 3 implementation बनाई है
XML source की मात्रा बहुत अधिक है
XML का इस्तेमाल करना अब भी अच्छा लगता है
XML data interoperability के लिए standards-based approach है
XSLT अभी भी प्रमुख browsers में व्यापक रूप से supported है
इसका WASM में compile हो पाना एक सकारात्मक बात है
मैंने हाल ही में XSLT 2 transpiler लिखा था
यह जानने की जिज्ञासा है कि आज के समय में XPath और XSLT किन समस्याओं को सुरुचिपूर्ण तरीके से हल करते हैं
मुझे Java के बाहर के ecosystem में काम करना पसंद है
सोच रहा हूँ कि क्या यह implementation कभी Wine में MSXML implementation के लिए इस्तेमाल हो सकती है