इस प्रोजेक्ट के बारे में
Xag एक संकलित प्रोग्रामिंग भाषा है जो उच्च प्रदर्शन, सहायक त्रुटि संदेशों और रस्ट-शैली के मेमोरी प्रबंधन के चारों ओर बनाई गई है। प्रत्येक आकार को स्पष्ट रूप से घोषित किया जाना चाहिए—कोई बेस इंट टाइप नहीं है। कार्यक्रमों को LLVM के माध्यम से स्थानीय कोड में या दो AOT इंटरप्रेटरों में से किसी एक द्वारा पूर्व-संकलित किया जाता है।
संकलक को C++20 के माध्यम से LLVM के मूल C++ API के खिलाफ लिखा गया है, जिसके लिए LLVM 23 या नए संस्करण, CMake और Ninja की आवश्यकता होती है। स्रोत फ़ाइलें '.xag' एक्सटेंशन का उपयोग करती हैं। टूलचेन में लेक्सिंग, पार्सिंग, प्रकार-जाँच और IR निरीक्षण के लिए कमांड शामिल हैं।
तीन निष्पादन इंजन मौजूद हैं: एक परीक्षण इंटरप्रेटर (स्पष्ट रूप से सही, धीमा), एक तेज इंटरप्रेटर (फ्लैट-कोड अनुकूलित) और एक AOT स्थानीय बैकएंड। तीनों को एक ही साझा रनटाइम कॉल करता है, इसलिए वे रनटाइम व्यवहार पर सहमत होते हैं। जब इंजन असहमत होते हैं, तो प्रोजेक्ट यह पहचानता है कि कौन सा एक अनुकूलित नहीं है।
दशमलव अंकगणित की निर्धारित जांच की जाती है: सॉफ्टवेयर कार्यान्वयन को Python के 'decimal' (libmpdec) के साथ 400,000 मामलों में और POWER हार्डवेयर दशमलव इकाइयों के साथ QEMU एम्यूलेशन के माध्यम से 20,000 अतिरिक्त मामलों में क्रॉस-चेक किया जाता है।
यूनिकोड समर्थन UAX #29 के पूर्ण अनुसरण करता है, जिसमें ग्राफीम क्लัสटर गिनती शामिल है, Unicode 17.0.0 तालिकाओं के साथ। परीक्षण सूट में सभी 766 Unicode संगत मामले चलाए जाते हैं।
एक ऑरेकल जनरेटर ('generator/') यादृच्छिक Xag कार्यक्रम लिखता है और उन्हें सभी इंजनों में टेस्ट करता है ताकि असंगतियाँ पता चल सकें। जनरेटर Rust में लिखा गया है और किसी बाहरी निर्भरता की आवश्यकता नहीं है।
लाइसेंस: Apache-2.0 WITH LLVM-exception। उपयोग मुफ्त है; संकलक या रनटाइम को संशोधित करने के लिए Apache शर्तों के तहत उल्लेख करना आवश्यक है।
नोट: यह एक आरंभिक कार्य है—अभी तक कुछ भी स्थिर नहीं है। रिपॉजिटरी में अधिकांश कोड भाषा डिज़ाइनर की दिशा में AI-उत्पन्न है।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.