Skip to content

RFC: تصدير الدوالّ باسم رمز — @رمز على تصريح دالّة#42

Open
SalehKadah wants to merge 2 commits into
mainfrom
rfc/export-func-symbol
Open

RFC: تصدير الدوالّ باسم رمز — @رمز على تصريح دالّة#42
SalehKadah wants to merge 2 commits into
mainfrom
rfc/export-func-symbol

Conversation

@SalehKadah

Copy link
Copy Markdown
Contributor

RFC — تصدير الدوالّ باسم رمز (@رمز على تصريح دالّة)

يمدّ التوجيه القائم @رمز("اسم") — الذي يُصدِّر متغيّرًا/ثابتًا تحت اسم رمز ASCII (اللبنتان 3.14/3.16) — ليقبل تصريح دالّة. تُصدَّر الدالّة في LLVM باسم الرمز بربط خارجيّ، فيستدعيها كود C/المترجم بالاسم حرفيًّا.

الدافع: إطفاء آخر تعريفات C في نواة النحلة — رموز ABI المحجوزة (__sad_panic، __stack_chk_fail) كانت تُعرَّف في C لأنّ ص لم تملك تصدير دالّة تحت اسم ASCII. هذا التوجيه يزيل العائق نحو هدف «صفر C».

السلامة: حارس دلاليّ SEM024 يرفض الرموز المُصدَّرة المكرَّرة (دالّة/دالّة يدمجها الـbackend صامتًا، دالّة/متغيّر يُعيد LLVM تسميتها صامتًا). تحقّق تقاطعيّ بمجموعتين مستقلّتَي الترتيب، يُصفَّران لكلّ وحدة.

التنفيذ المرافق: PR اللغة sadlang/s-programming-language#238 (المحلّل + الحارس + 9 اختبارات، كامل lowlevel_freestanding أخضر).

الحالة: مقترَح. الترقيم = رقم هذا الـPR (يُعاد تسمية 0000- بعد الفتح).

SalehKadah and others added 2 commits July 22, 2026 03:58
يمدّ التوجيه @رمز ليقبل FunctionDecl فتُصدَّر الدالّة في LLVM باسم
رمز ASCII بربط خارجيّ. الغرض: تعريف رموز ABI للنواة (__sad_panic،
__stack_chk_fail) بلغة ص خالصة وإطفاء تعريفات C. يشمل حارس تصادم
دلاليًّا (SEM024) للرموز المُصدَّرة المكرَّرة (دالّة/دالّة، دالّة/متغيّر).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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