প্রকল্প সম্পর্কে

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` স্টেটমেন্টটি ইচ্ছাকৃতভাবে বাদ দেওয়া হয়েছে।