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

Slate एक डायनेमिकली टाइप्ड भाषा है जो संरचना के लिए इंडेंटेशन का उपयोग करती है और इसमें एक ग्रैजुअल टाइप चेकर है। यह एक वास्तविक इवेंट लूप पर async/await, जनरेटर्स, मॉड्यूल्स, पैटर्न मैचिंग, प्रोटोटाइप के बजाय क्लासेस और अल्जेब्रिक डेटा टाइप्स का समर्थन करती है। API सर्वर के लिए डिज़ाइन की गई यह भाषा HTTP (llhttp के माध्यम से), HTTP/2 (nghttp2 के माध्यम से), TCP, TLS, फ़ाइल सिस्टम ऑपरेशंस, प्रोसेस, regex और JSON को हैंडल करती है। यह भाषा JavaScript में कंपाइल होती है, जिससे एक ही प्रोग्राम इसके इंटरप्रेटर, Node.js, QuickJS या Lath फ्रेमवर्क का उपयोग करके ब्राउज़रों में चल सकता है। `slate js` कमांड एक सिंगल सेल्फ-कंटेन्ड JavaScript फ़ाइल आउटपुट करता है जिसमें रनटाइम और फ्रेमवर्क शामिल होते हैं, जिससे बंडलर्स और node_modules की आवश्यकता समाप्त हो जाती है। ग्रैजुअल टाइपिंग वैकल्पिक एनोटेशन की अनुमति देती है; टाइप डिक्लेरेशन का उपयोग पैटर्न मैचिंग और रनटाइम चेक दोनों के लिए किया जाता है। इसकी विशेषताओं में पोस्टफिक्स `match` एक्सप्रेशन, जेनेरिक टाइप्स और प्रॉमिस रिटर्न करने वाले async फंक्शन्स शामिल हैं। API सर्वर बिल्ट-इन राउटर और हैंडलर सिस्टम का उपयोग करते हैं। स्क्रिप्ट्स shebang निष्पादन का समर्थन करती हैं। इसका कार्यान्वयन एक स्टैक मशीन और ट्रेसिंग गार्बेज कलेक्शन (क्लोजर साइकिल्स के कारण) का उपयोग करता है, जिसमें libuv पर आधारित एक इवेंट लूप है। यह Homebrew के माध्यम से macOS Apple silicon के लिए उपलब्ध है; अन्य प्लेटफार्मों के लिए सोर्स बिल्ड्स की आवश्यकता होती है। दस्तावेज़ीकरण में भाषा और लाइब्रेरी संदर्भ शामिल हैं। उल्लेखनीय कमियों में लिटरेट प्रोग्रामिंग सपोर्ट और JavaScript बैकएंड के लिए कुछ स्टैंडर्ड लाइब्रेरी मॉड्यूल्स शामिल हैं। गार्बेज कलेक्शन के कारण `defer` स्टेटमेंट को जानबूझकर बाहर रखा गया है।