Skip to content

مترجم: تخزين ساكن مسمّى — @رمز + متطاير + بايتات (اللبنة 3.14، إطفاء C)#225

Merged
SalehKadah merged 3 commits into
devfrom
feat/named-static-storage
Jul 21, 2026
Merged

مترجم: تخزين ساكن مسمّى — @رمز + متطاير + بايتات (اللبنة 3.14، إطفاء C)#225
SalehKadah merged 3 commits into
devfrom
feat/named-static-storage

Conversation

@SalehKadah

Copy link
Copy Markdown
Collaborator

ملخّص

بدائيّتان أساسيّتان من RFC «تخزين ساكن مسمّى» (sadlang/rfcs#39، اللبنة 3.14 من
إطفاء C): @رمز("اسم") (رمز رابط مُصدَّر مستقرّ) و«متطاير» (لصيقة volatile لاحقة).
تكمّلان عنوان_رمز (3.13): ص تعرّف المخزن وتأخذ عنوانه بالاسم نفسه ⇒ تُملّك
النواةَ عدّاداتها بدل مخازن C.

البدائيّتان

  • @رمز("bee_x") متغير/ثابتGlobalVariable بـExternalLinkage واسم bee_x
    بدل الاسم العربيّ المُشوَّه (InternalLinkage). مفتاح namedValues يبقى الاسم
    العربيّ فتُحَل مراجع ص الداخليّة. حارس تصادم SEM022: اسم مكرّر أو محجوز لزمن
    التشغيل (memset/malloc/__sad_*) ⇒ خطأ مفهوم بدل إعادة تسمية الرابط الصامتة.
  • «متطاير» لصيقة لاحقة: متغير متطاير عداد = 0 (الموصوف ثمّ الصفة — عربيّ سليم)
    بدل @متطاير المحذوف (calque إنجليزيّ يخالف قاعدة الصفة). تمريرة لاحقة على الوحدة
    تعلّم كلّ load/store يمسّ المخزن volatile (متينة ضدّ تعدّد مسارات الأحمال).

الاختبار والمراجعة

  • 9 حالات (test_static_storage.py): رمز مُصدَّر/ثابت rodata، volatile كتابة/
    قراءة، تركيب @رمز+متطاير، ثابت متطاير، تصادم محجوز/مكرّر (SEM022)، حارس العاديّ.
    26/26 أخضر للمجموعة الحرّة، gen --check أخضر.
  • مراجعة أميليا: صفر عيب يكسر المسار؛ أُصلح تصادم الرمز الصامت (SEM022، البند
    الحاسم — كان يُبطل غرض @رمز أو يُفسد memset في الوضع الحرّ)؛ حُذف كود ميت.

قرار لغويّ (المالك)

اعتُمد متغير متطاير (لصيقة لاحقة عربيّة) وحُذف @متطاير القديم (كسر متعمَّد
للنقاء اللغويّ — قاعدة: الصفة تلي الموصوف وتطابقه جنسًا).

التوافق الخلفي

@رمز جديد؛ @متطاير القديم أُزيل عمدًا (يفشل الآن — لا كود ص قائم يستعمله).
دَين موثَّق: متطاير على تصريح متعدّد وعنصر مصفوفة عبر GEP خارج النطاق الحاليّ.

🤖 Generated with Claude Code

…إطفاء C)

بدائيّتان من RFC تخزين ساكن (sadlang/rfcs#39) تمكّنان ص من تعريف مخزن ساكن
عامّ برمز رابط مستقرّ مُصدَّر ومتطاير — تكميلًا لـعنوان_رمز (3.13):

- @رمز("bee_x") متغير/ثابت ⇒ GlobalVariable بـExternalLinkage واسم bee_x بدل
  الاسم العربيّ المُشوَّه InternalLinkage (مفتاح namedValues يبقى الاسم العربيّ
  فتُحَل مراجع ص). حارس تصادم SEM022: اسم مكرّر أو محجوز لزمن التشغيل
  (memset/malloc/__sad_*) ⇒ خطأ مفهوم بدل إعادة تسمية الرابط الصامتة.
- «متطاير» لصيقة لاحقة عربيّة سليمة: «متغير متطاير عداد = 0» (الموصوف ثمّ الصفة)
  بدل توجيه @متطاير المحذوف (calque إنجليزيّ، خالف قاعدة الصفة). كلمة سياقيّة
  تُقبَل KEYWORD_VOLATILE أو IDENTIFIER. تمريرة لاحقة على الوحدة تعلّم كلّ
  load/store يمسّ المخزن volatile (متينة ضدّ تعدّد مسارات إصدار الأحمال).

6 نقاط تماسّ: statements.h (linkSymbol/isVolatile) + sir_module.h
(linkName/isVolatile+getLinkName) + parser (لصيقة متطاير + فرع @رمز + حذف
@متطاير من isDirectiveKeyword) + sir_builder_module (نقل السمات) +
classes_vtables_ops (ExternalLinkage + حارس SEM022 + تمريرة volatile) +
mem_load/store/arith_resolve (وسم موضعيّ داعم). خطأ SEM022 + توجيه @رمز في
directives.yaml (SoT).

اختبار 9 حالات (test_static_storage.py): رمز مُصدَّر/ثابت rodata، volatile
كتابة/قراءة، تركيب @رمز+متطاير، ثابت متطاير، تصادم محجوز/مكرّر (SEM022)،
حارس العاديّ يبقى internal. 26/26 حرّ أخضر، gen --check أخضر.

مراجعة أميليا: صفر عيب يكسر المسار؛ أُصلح تصادم الرمز الصامت (SEM022، البند
الحاسم)؛ حُذف كود VolatileVarDeclStmt الميت. دَين موثَّق: متطاير على تصريح
متعدّد وعنصر مصفوفة عبر GEP خارج النطاق الحاليّ.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📚 تذكير مزامنة دليل المطوّرين

هذا الـPR يلمس مصادر موثَّقة في دليل المطوّرين. راجع الفصول الآتية وحدّثها إن تغيّر سلوكها، ثم ثبّت البصمات هناك (python scripts/check_sync.py --update):

بندٌ في معيار الإنجاز. تذكيرٌ آليّ — لا يحجب الدمج.

…، إطفاء C)

البدائيّة الثالثة من RFC تخزين ساكن (sadlang/rfcs#39): بيانات مضمَّنة.
@رمز("bee_initrd") ثابت أرشيف = بايتات(0x53، ...) ⇒ @bee_initrd = constant
[N x i8] c"..." في .rodata برمز مُصدَّر، يأخذ عنوان_رمز عنوانه. لجداول النواة
(أرشيف SFA1، خرائط المفاتيح) المملوكة لـص بدل C.

- Phase 1.5: كشف مُهيّئ CallExpr باسم بايتات ⇒ استخراج البايتات (0–255،
  hex/oct/bin/dec، رفض غير الحرفيّ/الفارغ/خارج المدى) في SIRGlobalVariable.byteData.
- الخلفيّة: ConstantDataArray في .rodata (isConstant⇒rodata، متغير⇒data) بربط
  @رمز المُصدَّر + حارس تصادم SEM022. محاذاة 1.
- تخطّي دفع التصريح لـtopLevelStatements (تفادي معالجة بايتات كنداء غير معرّف).

اختبار 8 حالات بايتات (rodata ثابت + محتوى c"SAD" + عنونة بعنوان_رمز + خارج
المدى + فارغ + غير ثابت⇒data). 31/31 حرّ أخضر، gen --check أخضر.

مراجعة أميليا: الجوهر سليم (استخراج/مدى/ConstantDataArray/SEM022/isConstant/
مستضاف مؤكَّدة)؛ أُصلح الفارغ (C2) + ثابت مسمّى kByteBlobBuiltin (S1). قيود
موثَّقة خارج نطاق نهلة: بايتات مع صدّر/كتعبير داخل دالّة/قراءة بالاسم مباشرةً.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@SalehKadah SalehKadah changed the title مترجم: تخزين ساكن مسمّى — @رمز + متطاير (اللبنة 3.14 أ، إطفاء C) مترجم: تخزين ساكن مسمّى — @رمز + متطاير + بايتات (اللبنة 3.14، إطفاء C) Jul 21, 2026
انجراف sad.tmLanguage.json عن language-truth: حُذف @متطاير وأُضيف @رمز
في directives.yaml. أُعيد التوليد عبر gen_tmgrammar.py.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@SalehKadah
SalehKadah force-pushed the feat/named-static-storage branch from faab704 to 88b0f2c Compare July 21, 2026 04:31
@SalehKadah
SalehKadah merged commit 6d0952c into dev Jul 21, 2026
18 checks passed
@SalehKadah
SalehKadah deleted the feat/named-static-storage branch July 21, 2026 05:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant