عن المشروع
kanso (簡素) هي لغة برمجة مبنية على فكرة أن الملف المصدري يجب أن يحتوي على القرارات فقط. أي شيء يفرضه عادةً دليل الأسلوب أو أداة linter أو مراجعة الكود يتم فرضه بدلاً من ذلك بواسطة المترجم: المسافات غير المعيارية، أو الإزاحة، أو وضع السطور الفارغة تعتبر خطأً نحويًا، وتستخدم الأسماء snake_case، وتكون التصريحات وحقول السجلات مرتبة أبجديًا، وتوضع التحميلات الزائدة (overloads) بجانب بعضها مع وضع الأكثر تحديدًا أولاً. وبما أن كل برنامج له تمثيل معياري واحد بالضبط، فلا يوجد منسق كود (formatter).
تشمل الدلالات التي يؤكد عليها ملف README النقاء (purity) والتأثيرات كأوصاف: ينتج الأمر print وعامل التسلسل >> وصفًا للعمل الذي ينفذه وقت التشغيل، ويظهر الأمر check مع --plan هذا الوصف بدلاً من تشغيله. الفشل هو قيمة وليس استثناءً: تنتشر err reason و none حتى يتم توجيه تحميل زائد بناءً عليهما، لذا فإن القسمة على صفر والفهرسة خارج النطاق تعيد قيمًا بدلاً من التسبب في تعطل البرنامج. يعمل التوجيه (Dispatch) على القيم الحرفية والأنواع الملموسة والأنواع العامة، مع البدء بالأكثر تحديدًا. تدعم اللغة أنواع السجلات ذات المنشئ الواحد مع حقول محددة النوع، والإنشاء الموضعي، وتفكيك البنية في الأشكال الموضعية ومجموعات المفاتيح؛ وتطبيق التجاور المسطح بدون فواصل في أي مكان؛ والأعداد الصحيحة ذات الدقة التعسفية؛ واستكمال النصوص (string interpolation)؛ والقوائم ذات الفهرسة التي تبدأ من 1؛ وأنبوب النقطة (dot pipe) حيث تصبح القيمة الممررة هي الوسيط الأول؛ وlambdas. ترفض فحوصات وقت التجميع الإضافية الروابط غير المستخدمة، والتعبيرات غير المستخدمة، وإعادة الربط قبل الاستخدام، وحجب الدوال أو الأنواع أو الدوال المدمجة المصرح بها. الفهرسة باستخدام xs[i] أو m[k] تكون صارمة، بينما يعبر at xs عن الغياب المتوقع.
الوحدات (Modules) هي عبارة عن أدلة: تمتد الوحدة عبر أي عدد من الملفات التي تشترك في مساحة اسم واحدة، والأسماء التي تبدأ بشرطة سفلية تكون خاصة بالوحدة، ويعتبر التصريح الخاص غير المستخدم خطأً. يؤكد ملف README أن مجموعة الأخطاء في tests/golden لا تقل أهمية عن مجموعة النجاح.
يسرد قسم v0 التقريبات المعترف بها والنقاط المفتوحة: يتم فحص قاعدة النهاية في وقت التشغيل بدلاً من وقت التجميع؛ لا ترتبط المعلمات العامة أبدًا بـ err أو none؛ ترتيب التصريح المعياري هو تفسير؛ يتم تحليل هدف الأنبوب (pipe target) كتطبيق واحد ويفشل الهدف غير القابل للاستدعاء في وقت التشغيل؛ صيغة if مؤقتة؛ والعدد الصحيح الأصلي هو int64 وتؤدي التجاوزات (overflows) إلى فخ كعيب في الثنائيات المجمعة، على عكس bigint في المفسر. لم يتم تنفيذ typesets، وتحديث السجلات، ومناطق البناء، والعمليات، وتعدد أشكال التأثير، و LSP بعد.
دعم المحرر عبارة عن حزمة TextMate واحدة يمكن استخدامها في IDEs JetBrains و VS Code لملفات .kso. يستخدم التطوير cargo test، الذي يغطي اختبارات الوحدة ومجموعة ملفات golden؛ المشروع مرخص بموجب MIT. يتم نشر التوثيق والمواصفات وملاحظات المترجم على موقع GitHub Pages.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.