عن المشروع
Nolang هي لغة جديدة مصممة للبرمجة النظامية، وهدفها الأساسي هو أمان الذاكرة دون الحاجة إلى جمع القمامة (GC).
خصائص اللغة
أمان الذاكرة: لا تعتمد Nolang على GC، بل تضمن الأمان من خلال الإدارة التلقائية للذاكرة. يتم تدمير المتغيرات تلقائياً عند انتهاء نطاق الدالة، ويُحظر التحریر اليدوي لتجنب المراجع المعلقة. تستخدم الحاويات مثل المصفوفات والأجزاء دلالات نسخ القيمة، مما يعزلها عن دورة حياة المتغير الأصلي.
نموذج تمرير مرجعي موحد: يتم تمرير جميع وسائط الدالة افتراضياً كمرجع، وتؤثر التعديلات على الوسائط داخل الدالة مباشرة على البيانات الأصلية للمُستدعي، ولكن لا يمكنها تدمير الوسائط نفسها.
تغطية متغيرات النطاق: عند إعادة استخدام نفس اسم المتغير داخل نفس نطاق الدالة، تتعامل Nolang مع الأمر على أنه إعادة تعيين تغطية بدلاً من إنشاء متغير جديد. عندما تكون الأنواع مختلفة، لا يُسمح بذلك على مستوى بناء الجملة، مما يمنع إخفاء المتغيرات.
عدم الانهيار أبداً على مستوى اللغة: القضاء على مسارات الانهيار الضمنية، مع عدم وجود غموض خفي.
التخصيص المسبق للكتل والتحرير المجمع للذاكرة: يدعم التخصيص المجمع مسبقاً، وتحرير الذاكرة (free) بشكل مجمع عند مغادرة النطاق، دون تكاليف تخصيص خفية.
سلسلة الأدوات
توفر أدوات سطر أوامر كاملة (أمر no)، وتدعم العمليات التالية:
- no init / no new: تهيئة مساحة العمل وإنشاء حزم مشاريع جديدة
- no fmt: تنسيق الكود
- no build / no run / no test: البناء والتشغيل والاختبار
- no add / no remove / no update / no sync / no list: إبدارة التبعيات
- no install / no uninstall: إدارة تثبيت الملفات الثنائية
- no pub: النشر إلى سجل الحزم
- تدعم الترجمة المتقاطعة (تحديد target) ومترجمات الواجهة الخلفية المختلفة (مثل Zig)
اتفاقيات الإدخال: main.no هو مدخل البرنامج، lib.no هو مدخل المكتبة، وجميع ملفات .no في دليل tests/ هي ملفات اختبار.
دعم المحرر
- إضافة VSCode (تتضمن خادم LSP)
- يمكن بناؤها من المصدر عبر make lsp
البناء من المصدر
باستخدام أمر make: بناء CLI عبر make no، بناء خادم اللغة عبر make lsp، حزمة امتداد VSCode عبر make package، وبناء WebAssembly Online Playground عبر make playground.
المشاريع ذات الصلة
- notools: مجموعة أدوات سطر أوامر Unix مبنية باستخدام Nolang (مثل cat، ls، grep، wc، إلخ)، مما يوضح التطبيق العملي للغة في مجال برمجة الأنظمة.
يستخدم المشروع ترخيص Apache-2.0، وعنوان المستندات الرسمية هو: https://lizongying.github.io/nolang/
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.