इस प्रोजेक्ट के बारे में

kanso (簡素) एक प्रोग्रामिंग भाषा है जिसे इस विचार के साथ बनाया गया है कि एक सोर्स फाइल में केवल निर्णय होने चाहिए। कोई भी चीज़ जिसे स्टाइल गाइड, लिंटर या कोड रिव्यू आमतौर पर परंपरा द्वारा लागू करते हैं, उसे इसके बजाय कंपाइलर द्वारा लागू किया जाता है: गैर-मानक स्पेसिंग, इंडेंटेशन या ब्लैंक-लाइन प्लेसमेंट एक सिंटैक्स त्रुटि है, नाम snake_case का उपयोग करते हैं, घोषणाएं और रिकॉर्ड फ़ील्ड वर्णानुक्रम (alphabetically) में व्यवस्थित होते हैं, और ओवरलोड्स सबसे विशिष्ट को पहले रखते हुए एक साथ स्थित होते हैं। क्योंकि हर प्रोग्राम का ठीक एक मानक रेंडरिंग होता है, इसलिए कोई फॉर्मेटर मौजूद नहीं है। README द्वारा जोर दिए गए सिमेंटिक्स में शुद्धता (purity) और विवरण के रूप में प्रभाव (effects) शामिल हैं: print और >> सीक्वेंसिंग ऑपरेटर काम का एक विवरण उत्पन्न करते हैं जिसे रनटाइम निष्पादित करता है, और --plan के साथ check कमांड इसे चलाने के बजाय उस विवरण को दिखाता है। विफलता एक अपवाद (exception) के बजाय एक मान (value) है: err reason और none तब तक प्रसारित होते हैं जब तक कि कोई ओवरलोड उन्हें डिस्पैच नहीं करता, इसलिए शून्य से विभाजन और आउट-ऑफ-रेंज इंडेक्सिंग क्रैश होने के बजाय मान लौटाते हैं। डिस्पैच लिटरल्स, कंक्रीट टाइप्स और जेनेरिक्स पर काम करता है, जिसमें सबसे विशिष्ट पहले आता है। भाषा टाइप किए गए फ़ील्ड्स वाले सिंगल-कंस्ट्रक्टर रिकॉर्ड टाइप्स, पोजीशनल कंस्ट्रक्शन और पोजीशनल और की-सबसेट दोनों रूपों में डिस्ट्रक्चरिंग; कहीं भी कॉमा के बिना फ्लैट जक्सटापोजीशन एप्लीकेशन; आर्बिट्रेरी-प्रिसिजन इंटीजर्स; स्ट्रिंग इंटरपोलेशन; 1-आधारित इंडेक्सिंग वाली सूचियों; एक डॉट पाइप जिसका पाइप किया गया मान पहला तर्क बन जाता है; और लैम्ब्डा का समर्थन करती है। अतिरिक्त कंपाइल-टाइम चेक अप्रयुक्त बाइंडिंग्स, अप्रयुक्त एक्सप्रेशन, उपयोग से पहले रीबाइंडिंग, और घोषित फंक्शन, टाइप्स या बिल्टइन्स की शैडोइंग को खारिज करते हैं। xs[i] या m[k] के साथ इंडेक्सिंग सख्त है, जबकि xs @ i अपेक्षित अनुपस्थिति को व्यक्त करता है। मॉड्यूल निर्देशिकाएं (directories) हैं: एक मॉड्यूल एक ही नेमस्पेस साझा करने वाली किसी भी संख्या में फाइलों तक फैला होता है, अंडरस्कोर से शुरू होने वाले नाम मॉड्यूल-प्राइवेट होते हैं, और एक अप्रयुक्त प्राइवेट घोषणा एक त्रुटि है। README इस बात पर जोर देता है कि tests/golden में त्रुटि कॉर्पस उतना ही महत्वपूर्ण है जितना कि सफलता कॉर्पस। एक v0 सेक्शन स्वीकृत अनुमानों और खुले बिंदुओं को सूचीबद्ध करता है: एंडपॉइंट नियम की जांच कंपाइल टाइम के बजाय रनटाइम पर की जाती है; जेनेरिक पैरामीटर कभी भी err या none को बाइंड नहीं करते; मानक घोषणा क्रम एक व्याख्या है; पाइप टारगेट एक एप्लीकेशन के रूप में पार्स होता है और एक नॉन-कॉलेबल टारगेट रनटाइम पर विफल हो जाता है; if फॉर्म अनंतिम है; नेटिव int, int64 है और ओवरफ्लो कंपाइल किए गए बाइनरी में एक दोष के रूप में ट्रैप होते हैं, जो इंटरप्रेटर के bigint के विपरीत है। टाइप्सेट्स, रिकॉर्ड अपडेट, बिल्ड रीजन्स, प्रोसेस, इफेक्ट पॉलीमॉर्फिज्म और एक LSP अभी तक लागू नहीं किए गए हैं। एडिटर सपोर्ट .kso फाइलों के लिए JetBrains IDEs और VS Code में उपयोग करने योग्य एक सिंगल TextMate बंडल है। विकास के लिए cargo test का उपयोग किया जाता है, जिसमें यूनिट टेस्ट और एक गोल्डन-फाइल कॉर्पस शामिल हैं; प्रोजेक्ट MIT लाइसेंस प्राप्त है। दस्तावेज़ीकरण, विनिर्देश और कंपाइलर नोट्स एक GitHub Pages साइट पर प्रकाशित हैं।