التشغيل والترجمة: sad-run وsad-build
المفسّر sad-run
ينفّذ ملفّ .ص مباشرةً — أسرع طريق أثناء التطوير:
sad-run برنامجي.ص
أوضاع الذاكرة الموحَّدة
| الراية | المرادف العربيّ | المعنى |
|---|---|---|
--gc | — | جامع قمامة، فحوص الملكيّة معطَّلة (الافتراضيّ) |
--prod | --إنتاج | ملكيّة صارمة بلا جامع قمامة |
--learn | --تعلم | يشرح انتهاكات الملكيّة دون إيقاف — مناسب للتعلّم |
--auto | --تلقائي | اختيار تلقائيّ بحسب البيئة |
--gc=<strategy> | — | استراتيجيّة الجامع: tracing أو refcount أو none |
--ملكية=<level> | — | مستوى الملكيّة: disabled/warnings/strict/ultra |
--no-std | --نواة | وضع بلا مكتبة قياسيّة (freestanding) |
رايات التحليل والتشخيص
| الراية | المرادف العربيّ | المعنى |
|---|---|---|
--ownership | --ملكية | تفعيل نظام الملكيّة |
--type-check | --فحص-أنواع | فحص الأنواع |
--strict-types | --أنواع-صارمة | فحص أنواع صارم |
--security | --أمان | فحوص الأمان |
--profile | --تنميط | تنميط الأداء (مع --profile-format=/--profile-output=/--profile-top=) |
--hot-reload | --مراقبة | إعادة تحميل ساخنة عند تغيّر الملفّ |
--docs | --وثّق | استخراج توثيق ## (مع --docs-out=/--docs-project=/--docs-format=) |
--explain[=<مستوى>] | — | شرح الأخطاء: brief/normal/detailed/teacher (الافتراضيّ detailed) |
--lang=<لغة> | — | لغة الرسائل: ar أو en أو both |
--debug-server | — | خادم تنقيح بواجهة DAP (للمحرّرات) |
المترجم sad-build
يترجم .ص إلى ملفّ تنفيذيّ أصليّ عبر LLVM — لا يحتاج الناتجُ وقتَ تشغيل خارجيًّا يُثبَّت:
sad-build برنامجي.ص -o برنامجي # ترجمة وربط
sad-build برنامجي.ص -O3 -o برنامجي # بأقصى تحسين
sad-build برنامجي.ص -c -o جزء.o # ترجمة فقط (بلا ربط)
sad-build *.o -o برنامجي # ربط ملفّات كائنيّة
أهمّ الخيارات
| المجموعة | الخيارات |
|---|---|
| الإخراج | -o <ملفّ> · -c · -S (تجميعيّ) · --emit-llvm · --emit-bc |
| التحسين | -O0 … -O3 (الافتراضيّ -O2) · -Os (الحجم) · --lto/--lto=full · --lto=thin |
| التنقيح | -g · --emit-ast · --emit-sir · --time-passes |
| الأخطاء | --explain[=brief|normal|detailed|teacher] (الافتراضيّ detailed) · --lang=ar|en|both |
| الربط | -L<مسار> · -l<مكتبة> · --static · -T<سكربت-ربط> |
| الهدف | --target=<ثلاثيّة> · --freestanding (بلا نظام تشغيل) |
استخراج التوثيق
المترجم يستخرج تعليقات التوثيق ## إلى Markdown أو JSON أو HTML:
sad-build --docs برنامجي.ص # إلى stdout
sad-build --وثّق --docs-out=دليل.md برنامجي.ص # إلى ملفّ
sad-build --docs-project=مشروعي/ --docs-format=html # مشروع كامل
وضع الأنظمة (freestanding)
لبرمجة النوى والعتاد بلا مكتبة قياسيّة:
sad-build --freestanding --no-main --abort-on-panic \
--linker-script=kernel.ld نواتي.ص -o نواتي.elf
مع --entry-point=<اسم> لنقطة دخول مخصّصة و--allow-alloc للسماح بالتخصيص الديناميكيّ.
والراية --no-std مكافئة تمامًا لـ--freestanding في المترجم.