عن المشروع
Slate هي لغة ذات أنواع ديناميكية تستخدم الإزاحة لتحديد الهيكل مع فاحص أنواع تدريجي. تدعم async/await على حلقة أحداث حقيقية، والمولدات، والوحدات (modules)، ومطابقة الأنماط، والفئات بدلاً من النماذج الأولية (prototypes)، والأنواع الجبرية للبيانات. صُممت لخوادم API، وهي تتعامل مع HTTP (عبر llhttp)، وHTTP/2 (عبر nghttp2)، وTCP، وTLS، وعمليات نظام الملفات، والعمليات، والتعبيرات النمطية (regex)، وJSON.
تُترجم اللغة إلى JavaScript، مما يسمح للبرنامج نفسه بالعمل تحت المفسر الخاص بها، أو Node.js، أو QuickJS، أو في المتصفحات باستخدام إطار عمل Lath. يقوم الأمر `slate js` بإخراج ملف JavaScript واحد ومستقل يتضمن وقت التشغيل وإطار العمل، مما يلغي الحاجة إلى أدوات التجميع (bundlers) ومجلد node_modules.
تسمح الأنواع التدريجية بإضافة تعليقات اختيارية؛ وتعمل تصريحات الأنواع في كل من مطابقة الأنماط وفحوصات وقت التشغيل. تشمل الميزات تعبيرات `match` اللاحقة، والأنواع العامة (generic types)، والدوال غير المتزامنة التي تعيد وعوداً (promises). تستخدم خوادم API أنظمة توجيه ومعالجة مدمجة، كما تدعم النصوص البرمجية التنفيذ عبر shebang.
يعتمد التنفيذ على آلة مكدس (stack machine) وتجميع مهملات تتبعي (tracing garbage collection) بسبب دورات الإغلاق (closure cycles)، مع حلقة أحداث مبنية على libuv. تتوفر اللغة لنظام macOS Apple silicon عبر Homebrew؛ بينما تتطلب المنصات الأخرى بناءً من المصدر. تتضمن الوثائق مراجع للغة والمكتبات.
من أبرز المفقودات دعم البرمجة الأدبية (literate programming) وبعض وحدات المكتبة القياسية للخلفية البرمجية لـ JavaScript. كما تم استبعاد عبارة `defer` عمداً بسبب نظام تجميع المهملات.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.