Cyr هي اللهجة الأصيلة (native) للغة Cyra — مُترجَمة مسبقًا (AOT) عبر LLVM، من الخوادم نزولًا إلى MCU عارٍ. بلا آلة افتراضية (VM)، بلا جمع للمهملات (GC). اللغة التي تكتبها الآلات، الآن على العتاد.
تشارك هذه الصفحة الأفكار الأولى، وفلسفة البداية، والتوقعات المتعلقة بـ Cyr. الاسم، وعلاقة الجذع/الفرع، وأسماء بيئة التشغيل وواجهة سطر الأوامر، ومجموعة من القرارات الأساسية مُثبَّتة — لكن Cyr لم تُطلَق بعد. ما تقرأه هنا ميثاق، وليس إصدارًا.
لماذا توجد Cyr
Cyra ممتازة فيما تبرع فيه BEAM: الأنظمة المتزامنة، المتحمّلة للأخطاء، القابلة لإعادة التحميل أثناء التشغيل. لكن أصنافًا كاملة من العمل تقع تحت ذلك الخط. اليوم، على المطوّر الذي يصطدم بالجدار أن ينزل إلى C أو Rust أو Zig ويغادر اللغة كليًا. Cyr هي مخرج الطوارئ الذي يُبقيك ضمن العائلة.
تُترجِم Cyr مسبقًا (ahead-of-time) إلى كود كائني أصيل عبر LLVM — بلا آلة افتراضية، بلا JIT. ثنائي مكتفٍ ذاتيًا يعمل على منصة من الفئة الأولى دون تثبيت أي شيء.
cyrtبيئة تشغيل صغيرة مرتبطة بكل ثنائي — مُخصِّص للذاكرة، معالج الانهيار، دوال داخلية. مستهدفة بضع مئات قليلة من الكيلوبايتات، لا الميغابايتات. ممكنة في الأنظمة المضمّنة وفي WASM.
@external(c, "...") هي سطح التداخل الأصيل الوحيد. استدعِ
C وكُن مُستدعىً من C بتواقيع كاملة، وأعراض صريحة، وقابلية فراغ
صريحة — دون أي ربط مكتوب يدويًا.
تدفّق عبر switch حصرًا، وOption/Result،
وأنماط صريحة — صياغة مطابقة بنحو 85% للغة Cyra. المهارة والمصدر
يعبران الحدّ بين المُدار والأصيل.
لغة واحدة، لهجتان
صياغة واحدة، نواة دلالية واحدة، خلفيتان (backends) — على غرار امتلاك C لتطبيق مُستضاف وآخر قائم بذاته (freestanding). الجذع هو الصياغة المشتركة؛ والفرعان يتباعدان فقط حيث يفرض عليهما نموذج بيئة التشغيل ذلك.
// لهجة BEAM
دافئة ومُدارة. تعمل على آلة.
pid / ref / port:erlang.* FFI · مكتبة Cyra.* القياسية// اللهجة الأصيلة
عتاد عارٍ. هي كود الآلة.
ptr<T>، @external(c, "...")bigint بالاختيارcyrt · مكتبة Cyr.* القياسيةمدى الأنظمة وأنظمة التشغيل
تستهدف Cyr صراحةً تطوير الأنظمة منخفضة المستوى وأنظمة التشغيل — حتى ما يشمل
init/PID 1، والخدمات الخفية، والمُشغّلات، والكود القائم بذاته (freestanding) على
العتاد العاري. كلما اشتدّت صعوبة الملف، ابتعدت اللغة عن الطريق أكثر.
يُنظَّم مدى Cyr في ثلاثة ملفات تنفيذ.
تطبيق · خدمة خفية · واجهة سطر أوامر
برنامج أصيل عادي على نظام تشغيل كامل. تتوفّر المنظومة كاملةً، وتستخدم
cyrt كومة نظام التشغيل وخيوطه.
init / PID 1 · ثنائي ساكن أدنى
النواة موجودة لكن فضاء المستخدم أدنى ما يكون. ينبغي ألا يجرّ PID 1 مكتبة libc كاملة — طبقة استدعاء نظام مباشر رفيعة تخاطب النواة.
نواة · مُحمِّل إقلاع · برنامج ثابت · ISR
لا نظام تشغيل إطلاقًا. أنت تأتي بالمُخصِّص للذاكرة؛ لا خيوط، لا libc،
لا فكّ لِلْمكدّس. لغة تجميع مضمّنة، volatile/MMIO، عمليات ذرّية، نقاط
دخول مخصّصة.
شاهدها عمليًا
مقطع من مُشغّل مع C23 FFI، وتخطيط مُحكَم، وOption بدلًا من
القيمة الفارغة (null)، وعودية ذيلية تعمل بمكدّس ثابت — كل ذلك بصياغة Cyra
المألوفة.
module Sensor.Driver {
use Cyr.Result;
// C23 FFI — the single native interop surface
@external(c, "read_register")
fn read_register(addr: ptr<u32>) -> u32;
@repr(packed)
struct Reading { id: u16; value: i32; }
// switch-only flow; Option<T> for absence, never null
pub fn decode(raw: u32) -> Option<Reading> {
switch raw {
0 => None;
_ => Some(Reading { id: 1, value: raw as i32 });
}
}
// guaranteed constant stack — TCO holds at the CIR layer
fn sum(xs: list<i64>, acc: i64) -> i64 {
switch xs {
[] => acc;
h :: rest => sum(rest, acc + h); // i64 traps on overflow
}
}
@entry
pub fn main() -> i32 { 0; }
}
ما هو مُثبَّت بالفعل
تنطلق Cyr من المنطلقات التي حسمتها Cyra سلفًا، إضافة إلى مجموعة من الأبواب أحادية الاتجاه التي صادق عليها مجلس الفلسفة عند البداية. هذه هي التوقعات التي تلتزم بها Cyr.
i64 افتراضيًا؛ الحساب يتوقّف (traps) افتراضيًا.
أما wrapping وsaturating وbigint
فهي اختيارات صريحة.
nil مُتقاعدة من الأنماط غير Option. القيمة الفارغة (null) تعيش
فقط خلف ptr/any عند جدار C.
العودية في الموضع الذيلي — بما في ذلك العودية المتبادلة — تعمل بمكدّس ثابت. ضمان دلالي عند طبقة CIR، لا مجرّد ثقة بـ LLVM.
الذاكرة تُدار بـ ARC + ساحة (arena) اختيارية + weak. السلامة مُنقولة إلى
الإعدادات الافتراضية للمُترجِم، لا إلى توصيفات أعمار يكتبها المؤلف — القرار
الصائب لمدوّنة مكتوبة بواسطة نماذج LLM.
unsafe صريح وأدنى
فكّ مؤشّر ptr<T> الخام والتحويل النازل لـ any يعيشان
فقط داخل unsafe — قابلان للبحث (grep) والتدقيق.
Cyr.* قياسية مستقلّة
تُعيد Cyr كتابة مكتبتها القياسية بشكل أصيل. قابلية النقل تعيش في
الصياغة، لا في أسماء المكتبة — سطر use صادق دائمًا
حول لهجته.
تموضع صريح
Cyr ليست "Cyra 2.0" ولا تتباعد في الصياغة. إنها لغة واحدة بخلفيتين (backends) — لا لغتان متنافستان.
تأتي Cyr كجزء من المشروع نفسه — الأدوات نفسها، والمجتمع نفسه — لا كمنتج منافس بهوية خاصة به.
pid وref وport وspawn
وreceive وsend مُزالة. كل ما يشبه الفاعلين
هو مكتبة، لا بُنية أوّلية في اللغة.
Cyr موجّهة للأشخاص الذين يحبّون Cyra سلفًا ويريدون الآن كتابة الطبقة الواقعة تحت تطبيقاتهم — لا عرضًا موجّهًا لعموم جمهور برمجة الأنظمة.
فلسفة التصميم
"استمرارية المصدر والمهارة"
مبدأ Peirce البراغماتي هو اختبار Cyr: أيّ فرق ملموس تُحدثه Cyr ولا تُحدثه "Cyra مع مجرّد استخدام C"؟ الجواب — استمرارية المصدر والمهارة عبر الحدّ بين المُدار والأصيل — يحكم كل خيار تصميمي.
"الصياغة مشتركة، والمكتبة صادقة"
تتشارك اللهجتان نحو 85% من صياغتهما — وهي الأصل القابل للنقل فعلًا. وهما عمدًا لا تتشاركان أسماء المكتبة: التماسك ينتمي إلى الصياغة وواجهة سطر الأوامر؛ والصدق ينتمي إلى فضاء الأسماء.
"واحد وعشرون فيلسوفًا، ميثاق واحد"
عِلَل Aristotle الأربع تُؤطّر الجهد؛ وPopper يُسمّي ما من شأنه أن يُكذّب النجاح؛ ومتناقضات Kant تُبقي المجلس صادقًا. ثمانية عشر مجالًا تصميميًا مفتوحًا قرأها الواحد والعشرون جميعًا، وصُودق على القرارات الأساسية — يعمل المجلس بوصفه organon، مفتوحًا على GitLab.