` **الصرفة** في `ASTVisitor`، وتطبيقًا فارغًا
+ في `BaseASTVisitor` — وإلّا كسرتَ كلّ الزوّار دفعةً واحدة. ولا تُقلِّدها بالخمسِ
+ ذواتِ الجسمِ الفارغ: هنّ استثناءٌ قائم، لا قدوة.
+3. نفّذ الزيارة في زائرَي المفسّر (`interpreter/include/visitors/`) وفي `TypeChecker`.
+4. أضف فرعَ `dynamic_cast` في بُناة `compiler/src/frontend/` — **يدويًّا**، فالمترجمُ
+ لا يذكّرك بها (انظر التحذير أعلاه).
+5. **التوافق الخلفيّ:** إضافة عقدة مسموحة — تغيير معنى عقدة موجودة ممنوع (CW-24).
## ملاحظات
- مرّر العقد الكبيرة بمرجع/مؤشّر ذكيّ؛ لا نسخ عميق إلا عبر `clone()` صريح (CW-29).
diff --git a/src/getting-started/first-contribution.md b/src/getting-started/first-contribution.md
index f8b6d92..9d2b1aa 100644
--- a/src/getting-started/first-contribution.md
+++ b/src/getting-started/first-contribution.md
@@ -31,8 +31,8 @@ python scripts/codegen/gen_all_builtins_yaml.py # أو المولّد المع
## 6) ابنِ وشغّل (تنفيذ مزدوج)
```bash
-cmake --build build --config Debug --target sad
-cmake --build build --config Release --target sadc
+cmake --build build --config Debug --target sad-run
+cmake --build build --config Release --target sad-build
python runner.py --level P1 # يجب أن يمرّ 100% بلا تراجع
```
diff --git a/src/getting-started/repo-map.md b/src/getting-started/repo-map.md
index d28a392..0373ca5 100644
--- a/src/getting-started/repo-map.md
+++ b/src/getting-started/repo-map.md
@@ -16,7 +16,7 @@ s-programming-language/
│ └── src/backend/llvm/ ← LLVMCodeGen + builders
├── stdlib/ ← المكتبة القياسية (core/io/math/string/network/graphics)
├── runtime/ ← ABI/FFI المستقلّ + الوضع الحرّ (freestanding)
-├── tools/ ← sadinfo · lsp · formatter · pkg · repl · compiler(sadc CLI)
+├── tools/ ← analyze · build · check · compiler(واجهة sad-build) · formatter · hub · lsp · pkg · profiler · repl · security-scanner · wasm · apk_builder
├── language-truth/ ← ⭐ مصدر الحقيقة الموحّد (YAML)
│ ├── keywords.yaml · operators.yaml · types.yaml · directives.yaml
│ ├── builtins/ · errors/ · grammar/ ← قواعد الإنتاج (SoT)
diff --git a/src/getting-started/setup.md b/src/getting-started/setup.md
index 9dfd742..ce6ccf5 100644
--- a/src/getting-started/setup.md
+++ b/src/getting-started/setup.md
@@ -5,7 +5,7 @@
## المتطلبات
- **C++17** ومُصرِّف حديث (MSVC على Windows، أو Clang/GCC).
- **CMake ≥ 3.20**.
-- **LLVM 18** — *اختياريّ*، للمترجم `sadc` فقط (`ENABLE_LLVM_BACKEND=ON`).
+- **LLVM 18** — *اختياريّ*، للمترجم `sad-build` فقط (`ENABLE_LLVM_BACKEND=ON`).
- **Python 3** — لمولّدات الكود (`scripts/codegen/gen_*.py`) و`runner.py`.
- **Git + GPG** — للمساهمة (الفروع المحميّة تشترط توقيع GPG).
@@ -18,19 +18,25 @@ cd s-programming-language
## البناء (PowerShell على Windows)
```powershell
cmake -S . -B build # تهيئة أولى
-cmake --build build --config Debug --target sad # المفسّر (أسرع)
-cmake --build build --config Release --target sadc # المترجم (LLVM)
+cmake --build build --config Debug --target sad-run # المفسّر (أسرع)
+cmake --build build --config Release --target sad-build # المترجم (LLVM)
cmake --build build --config Debug # كل شيء
```
-> ⚠️ **فخّان مهمّان** (مذكوران في تعليمات المشروع):
-> - هدف `sadc` قد يُنتج `sad-build.exe` — انسخه إلى `sadc.exe` قبل `runner.py` وإلا فنتائج المترجم بائتة.
-> - الـrunner يقرأ مفسّر **Debug** ومترجم **Release** — أعد بناء التهيئتين معًا.
+> ⚠️ **ثلاثة فخاخ:**
+> - **`sadc.exe` اسمٌ متقاعد — لا يُنتجه أيّ هدف.** اسمُ الهدف مُوحَّدٌ مع اسم
+> المُخرَج: `sad-run` ⇒ `sad-run.exe`، و`sad-build` ⇒ `sad-build.exe`
+> ([`tests/config.yaml`](https://github.com/sadlang/s-programming-language/blob/dev/tests/config.yaml)).
+> فلا تنسخ ثنائيًّا باسمٍ آخر لأجل `runner.py` — فهو يقرأ المسارَين من ذلك الملفّ.
+> - `sad.exe` ليس المفسّر بل **موزِّع أوامرٍ (hub)** يُشغّل الأدواتِ عمليّاتٍ فرعيّة؛
+> المفسّرُ الفعليّ `sad-run.exe`، فاستدعِه مباشرةً.
+> - الـrunner يقرأ تهيئتَي الثنائيَّين من `tests/config.yaml` — أعد بناءهما معًا
+> حتّى لا تقيس ثنائيًّا بائتًا.
## التشغيل
```powershell
-.\build\bin\Debug\sad.exe examples\test_simple.ص # تفسير
-.\build\bin\Release\sadc.exe examples\test_simple.ص # ترجمة لملف تنفيذيّ
+.\build\bin\Debug\sad-run.exe examples\test_simple.ص # تفسير
+.\build\bin\Release\sad-build.exe examples\test_simple.ص # ترجمة لملف تنفيذيّ
```
## الاختبارات
diff --git a/src/glossary.md b/src/glossary.md
index a59383f..af6a842 100644
--- a/src/glossary.md
+++ b/src/glossary.md
@@ -18,8 +18,10 @@
| **DoD** | Definition of Done — معيار اعتبار التغيير منجَزًا. |
| **worktree** | فرع git في مجلد منفصل يشارك نفس المستودع (`C:/s_lang/temp-brunch/`). |
| **CW-NN / BF-NN / GR-NN** | قواعد كتابة الكود / إصلاح الأخطاء / الحوكمة (مراجع معياريّة). |
-| **sadc** | مُترجِم لغة ص (AST → SIR → LLVM → تنفيذيّ). |
-| **sad / sad-run** | المفسّر الشجريّ. |
+| **sad-build** | مُترجِم لغة ص (AST → SIR → LLVM → تنفيذيّ). هدفُ CMake ومُخرَجُه `sad-build.exe`. |
+| **sad-run** | المفسّر الشجريّ (`sad-run.exe`). |
+| **sad** | موزِّع الأوامر (hub) — يُشغّل الأدوات عمليّاتٍ فرعيّة، وليس المفسّر. |
+| **~~sadc~~** | اسمٌ **متقاعد**: لا هدفَ يُنتجه اليوم. المترجم هو `sad-build`. |
---
[العودة للمقدّمة](introduction.md)
diff --git a/src/introduction.md b/src/introduction.md
index beaaf0b..09457ad 100644
--- a/src/introduction.md
+++ b/src/introduction.md
@@ -4,7 +4,7 @@
كيف تعمل لغة ص من الداخل، وكيف تُسهم في تطويرها بثقة: معجمي → نحوي → AST → مفسّر/مترجم، فوق مصدر حقيقة موحّد.
-> **لمن هذا الدليل؟** لمن يطوّر **لغة ص نفسها** (المفسّر، المترجم `sadc`، الأنظمة الداخلية) —
+> **لمن هذا الدليل؟** لمن يطوّر **لغة ص نفسها** (المفسّر، المترجم `sad-build`، الأنظمة الداخلية) —
> لا لمن يكتب برامج *بها*. إن كنت تكتب `.ص` فهذا الدليل ليس لك.
## ابدأ من هنا
diff --git a/src/sot/grammar-sot.md b/src/sot/grammar-sot.md
index 3dd1612..b640e97 100644
--- a/src/sot/grammar-sot.md
+++ b/src/sot/grammar-sot.md
@@ -28,6 +28,38 @@ flowchart LR
| `60_advanced.yaml` | `gr.adv.*` | أنواع/قوالب/عمر/تزامن/استيعاب/ماكرو/FFI/واجهة |
| `70_lexical.yaml` | `gr.lex.*` | الطرفيات (جسر للمعجمي) |
+ومعها في المجلّد نفسِه ستّةُ ملفّاتٍ ليست قواعدَ إنتاج:
+
+| ملفّ | دوره |
+|-----|------|
+| `_notation.yaml` | **الميتا-قواعد**: كيف تُقرأ ملفّات القواعد (علاقة `ebnf` بـ`alternatives`) |
+| `lowers_to.yaml` | ربطُ كلّ قاعدةٍ بأوپكودات SIR — **مُشتقٌّ بالتشغيل** (انظر أدناه) |
+| `README.md` | دليلُ المجلّد |
+| `CONFORMANCE_REPORT.md` · `CONFORMANCE_REPORT_detail.md` · `DISCOVERED_ISSUES.md` | مخرجاتُ فحص المطابقة وما كشفه |
+
+## `lowers_to.yaml` — الجسر إلى الخلفيّات
+
+لا يكفي أن تُوثَّق القاعدةُ نحويًّا؛ السؤالُ العمليّ: **إلى أيّ أوپكودات تنزل، وأيّ
+معماريّةٍ تخفضها كلَّها؟** يجيب [`lowers_to.yaml`](https://github.com/sadlang/s-programming-language/blob/dev/language-truth/grammar/lowers_to.yaml)،
+وهو مُولَّدٌ آليًّا بـ`gen_grammar_lowers_to.py` — والاشتقاقُ **تجريبيّ لا تحليليّ**:
+تُترجَم اختباراتُ القاعدة بـ`--أظهر-sir` وتُجمَع أوپكوداتُها الفعليّة.
+
+| الحقل | معناه |
+|---|---|
+| `lowers_to` | كلّ أوپكودات القاعدة (عليها يقوم الحكم) |
+| `beyond_baseline` | ما تضيفه القاعدةُ فوق سقالةِ أيّ دالّة |
+| `native_ok` | المعماريّات التي تخفض أوپكوداتِها كلَّها في [الخلفيّة الأصليّة](../backend/native.md) |
+| `native_missing_<قوس>` | الأوپكودات المانعة لكلّ معماريّة |
+| `evidence` | ملفّات الاختبار التي اشتُقّ منها |
+| `status: not_derived` | **لم يُترجَم — لا يُفترَض نجاحه** |
+
+الإحصاء المسجَّل في الملفّ: **١٠٧ قواعد**، منها **١٠٥ مشتقّةٌ** و**٢ `not_derived`**؛
+والتغطية الأصليّة **١٠٢ لـx86-64 و١٠٢ لـarm64 و٢٦ لـriscv64** (٣ عيّناتٍ لكلّ قاعدة).
+فهذا الملفّ هو المكان الذي تُقرأ فيه فجوةُ RISC-V كمًّا، لا انطباعًا.
+
+> 🔑 **`not_derived` إعلانٌ لا صمت.** القاعدةُ التي لم تُترجَم تُوسَم صراحةً بدل أن
+> تسقط من الإحصاء — فغيابُ البرهان مذكورٌ، لا مسكوتٌ عنه.
+
## شكل قاعدة الإنتاج
كل قاعدة (مخطّط `_schemas/grammar_production.schema.json`):
- `id` بصيغة `gr..` (فريد، مرجِع).
diff --git a/src/sot/philosophy.md b/src/sot/philosophy.md
index 510a4a7..2bb271d 100644
--- a/src/sot/philosophy.md
+++ b/src/sot/philosophy.md
@@ -16,7 +16,7 @@ flowchart LR
Y["language-truth/*.yaml
(المصدر الوحيد)"] --> GEN["scripts/codegen/gen_*.py
(المولّد)"]
GEN --> CPP["shared/*/generated/*.{h,cpp}
(مُولَّد — لا يُحرَّر)"]
GEN --> DOC["توثيق + مخطّطات مُولَّدة"]
- Y --> TOOLS["LSP · formatter · sadinfo · pkg"]
+ Y --> TOOLS["LSP · formatter · pkg · analyze"]
CPP --> BUILD["بناء C++"]
```
diff --git a/src/status.md b/src/status.md
index a5301b3..0524d51 100644
--- a/src/status.md
+++ b/src/status.md
@@ -21,7 +21,7 @@
- [ ] **إعادة توثيق VM:** يُكتب الفصل من الكود عند إعادة كتابة الطبقة، لا قبلها.
- [x] **مزامنة الدليل مع اللغة:** بيان ربط + كاشف انجراف + فحص أسبوعيّ → [Freshness](contributing/freshness.md).
- [ ] **جسر آليّ لقواعد المحلل:** تضمين/مزامنة `docs/parser_rule/_generated/` داخل الدليل.
-- [ ] **فصل الأدوات:** LSP · المنسّق · مدير الحزم (pkg) · sadinfo.
+- [ ] **فصل الأدوات:** LSP · المنسّق · مدير الحزم (pkg) · المحلّل (analyze) · المُشخِّص (profiler).
- [ ] **فصل stdlib:** بنية المكتبة القياسية ووحداتها.
- [ ] **فصل runtime/FFI:** ABI المستقلّ (`runtime/`) والوضع الحرّ (freestanding).
- [ ] **أمثلة «دراسة حالة»:** تتبّع ميزة كاملة عبر كل الطبقات (نهاية-لنهاية).
diff --git a/src/systems/builtins.md b/src/systems/builtins.md
index 826284e..008c1d8 100644
--- a/src/systems/builtins.md
+++ b/src/systems/builtins.md
@@ -40,5 +40,5 @@ shared/builtins/generated/builtin_registry_generated.h ← مُولَّد
> التفاصيل في مهارة `sad-lang-dev` (`references/builtins-system.md`).
---
-**اقرأ بعده:** [دراسة حالة: توحيد هاش/شفّر/فك_تشفير](../backend/crypto-unification.md) ·
+**اقرأ بعده:** [دراسة حالة: توحيد هاش/شفر/فك_تشفير](../backend/crypto-unification.md) ·
[سير عمل الفروع](../contributing/workflow.md).
diff --git a/src/systems/sadui-layout.md b/src/systems/sadui-layout.md
index 627529f..1c0b545 100644
--- a/src/systems/sadui-layout.md
+++ b/src/systems/sadui-layout.md
@@ -43,9 +43,11 @@
## مصدر حقيقة مفاتيح الخصائص (SoT)
كلّ مفتاح خاصّيّة (نحو «محاذاة»/«حشو»/«عرض») معرَّف في
-`language-truth/ui_props.yaml` (٨٢ مفتاحًا)، يُولَّد منه
-`sad_ui/prop_keys.h` (ثوابت `sad::ui::props::`) عبر `x.py gen`. **لا سلسلة
-مفتاح خام في كود الرسوميّات** — يُقرأ المفتاح دائمًا عبر الثابت المولَّد:
+[`language-truth/ui_props.yaml`](https://github.com/sadlang/s-programming-language/blob/dev/language-truth/ui_props.yaml)
+— **١٠٤ مفاتيحَ على `dev`** — يُولَّد منه `sad_ui/prop_keys.h` (ثوابت
+`sad::ui::props::`، وعددُها ١٠٤ أيضًا: تكافؤٌ عدديٌّ بين المصدر والمولَّد) عبر
+`x.py gen`. **لا سلسلة مفتاح خام في كود الرسوميّات** — يُقرأ المفتاح دائمًا عبر
+الثابت المولَّد:
```cpp
node.findProperty(props::ALIGN) // ✓ لا findProperty("محاذاة")
@@ -54,5 +56,10 @@ node.findProperty(props::ALIGN) // ✓ لا findProperty("محاذاة")
يحرسه `check_no_raw_props.py` + `check_ui_props_consistency.py` ضمن
`x.py gen --check` (محلّيًّا + CI)، وworkflow `props-literals-lint.yml`.
+> ⚠️ **`latin_alias` ليس اسمًا قانونيًّا.** بعضُ المفاتيح يحمل حقلًا اختياريًّا
+> `latin_alias` — نصُّ المصدر يحدّه: «بديلٌ احتياطيٌّ لاتينيّ يقرؤه المُرسِّم فقط، لا
+> قانونيّ». فلا يُكتَب في `IRNode` ولا يُوثَّق للمستخدم؛ القانونيُّ هو `canonical`
+> العربيُّ وحده.
+
> التفصيل المعماريّ الكامل (مع الأمثلة والرسوم) في مستودع اللغة:
> `docs/architecture/sadui-layout-alignment.md`.
diff --git a/sync/sources.lock.json b/sync/sources.lock.json
index dee81bb..f51c16a 100644
--- a/sync/sources.lock.json
+++ b/sync/sources.lock.json
@@ -1,5 +1,5 @@
{
- "covers_version": "1.0.0",
+ "covers_version": "dev@1138f5e1",
"ref": "dev",
"repo": "sadlang/s-programming-language",
"sources": {
@@ -9,24 +9,33 @@
"compiler/include/backend/native/sir_lowering_common.h": "259cceb18f6b2fc4ef0e978ee6e9c32ed406903e",
"compiler/include/backend/native/sir_native_lowering.h#L1-30": "sha256:9a217df04a7742ee",
"compiler/include/backend/native/x86_variable_encoder.h": "09ae23ed09b452c8802c7e1ca87852ed72f00d7e",
+ "compiler/include/frontend/sir_builder.h": "180218ed3728b56b79e70619edfc9a1b58b274a2",
"compiler/include/frontend/sir_constants.h": "a194d187bc7c4298d07a1340adfc68ce9877b297",
"compiler/include/frontend/sir_types.h": "d7adf45f13c2aa9071f7a8bd36550abeeb5f0fcb",
- "compiler/src/backend/llvm": "32d6a3cc07ebf51e3f2fa2933afb92f99143d06f",
+ "compiler/src/backend/llvm": "525f452df4773db03c579b2b2f84454361920cbf",
"compiler/src/backend/llvm/builders/builtins/io_builtins_ops.cpp": "169fdb572efd32d02919dc09c5e94b4a621d3468",
+ "compiler/src/backend/llvm/builders/builtins/security_builtins_ops.cpp": "96616d075384d3b2a1cff7773ba63ed721c5b1cb",
"compiler/src/backend/llvm/builders/collections/map_ops.cpp": "40b02975f418d9db94ba3314f06a07d539c46472",
"compiler/src/frontend/builders/builtins_core.cpp": "d8de39cd2ec664fee6c13bbfb66ddedfa9ef79f4",
+ "compiler/src/frontend/builders/builtins_security.cpp": "f4ca53edeb256d1d6c6492018819091b75cc0b0a",
"compiler/src/frontend/builders/expression_comp2.cpp": "a857b9752d53eaa9a36c8a9f4ef4d4e03f5c260d",
"compiler/src/frontend/builders/expression_comprehensions.cpp": "48284a8c8ceea0663dbd250bbb9b0efa8ac787d8",
"compiler/src/frontend/builders/statement_for_range.cpp": "6345f89e25b5f426a8ea4f6a4ca836a50f1b28e4",
- "interpreter/include/core/interpreter_core.h": "031ec8bc4b77e628b67615c7680897387fe821cc",
- "interpreter/include/visitors/expression_evaluator.h": "a6e90c03cb75de00525fd7888bb61c91d57aa2fc",
+ "features/graphics/core/include/sad_ui/prop_keys.h": "149ca3c9abcd815c662f446fff0c9c0d64d6e85a",
+ "features/graphics/core/src/layout.cpp": "b02fcd06d7a1ebfd98904c411cc633043714a45d",
+ "interpreter/include/channel.h": "119dc0e9cfea1b7e1b514a7d2b49614c1e499860",
+ "interpreter/include/core/interpreter_core.h": "10ed076702d3d20491c953c5047b7421f615370c",
+ "interpreter/include/visitors/expression_evaluator.h": "1aa1eaecd41908e921e08919c902e3b71e5f2d60",
"interpreter/src/builtins": "fd3f67280e1e90ba6f9aa680ea28896e9db14bde",
+ "interpreter/src/builtins/builtin_module_assertions.cpp": "1cf037f1f5ffb75e9c13aa3709b23e20967f50ef",
"interpreter/src/builtins/builtin_module_crypto.cpp": "7bb771626147ce04f7e43a715beec99bafeefc44",
+ "interpreter/src/core/interpreter_core.cpp": "a6d3445646d9843e4b26bba1ef5e95f72600ec7f",
"interpreter/src/visitors/expression_evaluator_members_advanced.cpp": "bd2003b66b8be9c340e4650b2b851c9348765191",
"language-truth": "c96c2155d17c2cae855b72b5ad371b583ea80ecc",
"language-truth/_schemas": "113cd3948583dfb130fe4169f18e4ff6c7e16cd7",
"language-truth/backend": "db97d27d4cc2407c977e6ff1b451040e03c62012",
"language-truth/builtins": "9ffea44f0a878cf2cb57d5ec6757ea973a1a7247",
+ "language-truth/builtins/assertions.yaml": "c10ee3e417b8cd2eee7e376b70585c0cfb3edb5b",
"language-truth/builtins/crypto.yaml": "16862db43a802396baa7559521c6fd801c63a7bb",
"language-truth/cli_flags.yaml": "7694b926b12657541ccf3c4e3788223441d5dd92",
"language-truth/errors": "cae7885b8c004934ddde3e59fe0bfb6d7b6ac1b1",
@@ -34,12 +43,15 @@
"language-truth/keywords.yaml": "930d96448d776f20b1c7f75e96145e67e362de1d",
"language-truth/operators.yaml": "99c005878a137ceeb387de34bf937ad7ab2e0f22",
"language-truth/types.yaml": "73b5c1d165ec83f73b819c4d6af52333e2c217e4",
+ "language-truth/ui_props.yaml": "89cbf23a799f309698e97b29ecc595c293798963",
"scripts/codegen": "54744b199f588b1a93b08ad677a069b263c21233",
"scripts/codegen/gen_error_messages.py": "3a70f260e525f133b9a93f9919b3622e9056e871",
+ "scripts/codegen/gen_grammar_lowers_to.py": "3c7466870b2218d12089eea65d2b3361123b11b1",
"scripts/codegen/gen_native_diagnostics.py": "f0accb963fc8f296e38c1f1d4226c0c5a5edee29",
- "scripts/codegen/gen_parser_grammar_docs.py": "aaba9f37bd6d31cf0fcb190190c49fe742ad41c3",
+ "scripts/codegen/gen_parser_grammar_docs.py": "7b9f7a8a87252ee4599b4fa6da79cb18bbb05120",
+ "scripts/codegen/gen_ui_props.py": "5f750bc52cbe4e85bb67f087a94d67a840fcc6fe",
"scripts/native_backend/run_native_proofs.sh": "84069b1cd325573c7336b131d37997788a4d1885",
- "shared/ast/include/ast_visitor.h": "cee84846d4097724c8d62c13f036d6fc1686ee6f",
+ "shared/ast/include/ast_visitor.h": "6a19219711e62321697a041044962642888091f5",
"shared/ast/include/expressions.h": "8c8ffe93587aa833c10890b9c4e12c2e9855825d",
"shared/errors/include/error_codes.h": "893d39e3bf05aaeb798d9ff46f64e347fb46dff1",
"shared/errors/include/error_manager.h": "63c70109de759eaedf809642d11681a1453db5d3",
@@ -54,9 +66,12 @@
"shared/parser/src/core/parser_main.cpp#L40-1600": "sha256:61a72e3d3187d028",
"shared/parser/src/statements/parser_advanced.cpp": "870578af5f28eaf1e013b6f1940eb3f3277e9764",
"shared/types/generated/sad_type_kind_generated.h": "66a2e25e89fe3a3fc2d782fc79cbc86cab75b9bb",
+ "shared/types/include/class_manager.h": "da0673b71cd2ea5a51447d5d8065bd35d2aa4c15",
"shared/types/include/sad_type_system.h": "abc0ace4395e26799a23ff5346efbe0714515d4b",
"shared/types/include/value.h": "4d16c5e5f6c17fd4393f1d1da32716582d15750d",
+ "shared/types/src/class_manager.cpp": "3afe4d8387045573f7ae9d1c19b54eee7bb1226f",
"tools/compiler/compiler_driver_android_linker.cpp": "86c4974e713923f47c0f16077b4db8ede94eef28",
+ "tools/compiler/compiler_driver_backend_llvm_absent.cpp": "7ea38eea2362fccc22e6d5d6666a9b4d55e09ac2",
"tools/compiler/compiler_driver_native.cpp": "74676054c3660ec7ac0df65a1da9aa8d3baab0dd",
"tools/compiler/runtime/sad_embedded_runtime.c": "c4465bac5594536e01b41f099a6dddf9fc80999d"
}
diff --git a/sync/sources.yaml b/sync/sources.yaml
index de20e0c..ab8b444 100644
--- a/sync/sources.yaml
+++ b/sync/sources.yaml
@@ -7,7 +7,7 @@ repo: sadlang/s-programming-language
ref: dev
# نسخة اللغة التي يغطّيها الدليل (تُرفَع آليًّا عند مراجعة إصدار: --update --set-version)
-covers_version: "1.0.0"
+covers_version: "dev@1138f5e1"
# صيغة المصدر: إمّا مسار نصّيّ (يُرصد أيّ تغيّر في الملف/المجلد كاملًا)،
# أو كائن {path, lines: "بداية-نهاية"} لبصم نطاقٍ بعينه فقط — يقلّل الإنذارات
@@ -27,8 +27,14 @@ chapters:
- shared/parser/include/parser_core.h
- language-truth/operators.yaml
+ - file: src/architecture/pipeline.md
+ sources:
+ - compiler/include/frontend/sir_types.h # SIR: المرحلة 4ب
+ - language-truth/cli_flags.yaml # --أظهر-llvm (نقاط التشخيص)
+
- file: src/frontend/ast.md
sources:
+ - compiler/include/frontend/sir_builder.h # SIRBuilder : SIRBuilderContext (ليس زائرًا) + buildModule
- shared/ast/include/ast_visitor.h
- file: src/frontend/comprehensions.md
@@ -47,6 +53,10 @@ chapters:
- file: src/backend/interpreter.md
sources:
+ - interpreter/src/core/interpreter_core.cpp # execute(): الطور الساكن (قاعدة الرئيسية · فحص الأنواع · أمان العدم)
+ - shared/types/include/class_manager.h # المُفرَد العابر للمحرّكين (خارج مدراء المفسّر)
+ - shared/types/src/class_manager.cpp # القفل على getInstance/resetInstance وحدهما
+ - interpreter/include/channel.h # GoroutineManager + SadChannel
- interpreter/include/core/interpreter_core.h
- interpreter/include/visitors/expression_evaluator.h
- shared/ast/include/ast_visitor.h
@@ -57,6 +67,8 @@ chapters:
- file: src/backend/llvm.md
sources:
+ - language-truth/cli_flags.yaml # --أظهر-llvm / --أظهر-bc: اسم عربيّ وحيد بلا مرادفات
+ - tools/compiler/compiler_driver_backend_llvm_absent.cpp # هدف sad-build-native: رفض صريح INT_LLVM_PATH_ABSENT
- compiler/src/backend/llvm
- file: src/backend/native.md
@@ -105,6 +117,7 @@ chapters:
- file: src/backend/crypto-unification.md
sources:
+ - { path: shared/lexer/src/lexer_core.cpp, lines: "100-1770" } # تخطّي التشكيل U+064B–U+065F ⇒ «شفّر» تعمل و«شفر» هو القانونيّ
- compiler/src/frontend/builders/builtins_security.cpp
- compiler/src/backend/llvm/builders/builtins/security_builtins_ops.cpp
- interpreter/src/builtins/builtin_module_assertions.cpp
@@ -133,6 +146,7 @@ chapters:
- file: src/sot/grammar-sot.md
sources:
+ - scripts/codegen/gen_grammar_lowers_to.py # مولِّد lowers_to.yaml (اشتقاق تجريبيّ بـ--أظهر-sir)
- language-truth/grammar
- scripts/codegen/gen_parser_grammar_docs.py