مترجم: تخزين ساكن مسمّى — @رمز + متطاير + بايتات (اللبنة 3.14، إطفاء C)#225
Merged
Conversation
…إطفاء 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>
|
📚 تذكير مزامنة دليل المطوّرين هذا الـPR يلمس مصادر موثَّقة في دليل المطوّرين. راجع الفصول الآتية وحدّثها إن تغيّر سلوكها، ثم ثبّت البصمات هناك (
بندٌ في معيار الإنجاز. تذكيرٌ آليّ — لا يحجب الدمج. |
…، إطفاء 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>
انجراف sad.tmLanguage.json عن language-truth: حُذف @متطاير وأُضيف @رمز في directives.yaml. أُعيد التوليد عبر gen_tmgrammar.py. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
SalehKadah
force-pushed
the
feat/named-static-storage
branch
from
July 21, 2026 04:31
faab704 to
88b0f2c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ملخّص
بدائيّتان أساسيّتان من 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 (متينة ضدّ تعدّد مسارات الأحمال).
الاختبار والمراجعة
test_static_storage.py): رمز مُصدَّر/ثابت rodata، volatile كتابة/قراءة، تركيب @رمز+متطاير، ثابت متطاير، تصادم محجوز/مكرّر (SEM022)، حارس العاديّ.
26/26 أخضر للمجموعة الحرّة،
gen --checkأخضر.الحاسم — كان يُبطل غرض @رمز أو يُفسد
memsetفي الوضع الحرّ)؛ حُذف كود ميت.قرار لغويّ (المالك)
اعتُمد
متغير متطاير(لصيقة لاحقة عربيّة) وحُذف@متطايرالقديم (كسر متعمَّدللنقاء اللغويّ — قاعدة: الصفة تلي الموصوف وتطابقه جنسًا).
التوافق الخلفي
@رمزجديد؛@متطايرالقديم أُزيل عمدًا (يفشل الآن — لا كود ص قائم يستعمله).دَين موثَّق:
متطايرعلى تصريح متعدّد وعنصر مصفوفة عبر GEP خارج النطاق الحاليّ.🤖 Generated with Claude Code