
Elixir v1.20: اللغة تصبح مُنمّطة تدريجياً
أنجزت Elixir v1.20 المرحلة الأولى من نظام الأنماط القائم على نظرية المجموعات: كل برنامج يُستنتج نمطه ويُفحص تدريجياً دون أي تعليقات نمطية، والمدقّق يكشف الشيفرة الميتة والأخطاء المؤكدة.
صدرت Elixir v1.20 في 3 يونيو 2026، لتعلن إنجاز المرحلة الأولى من تطوير نظام الأنماط القائم على نظرية المجموعات في اللغة. أُعلن المشروع عام 2022، ونُشرت في يونيو 2023 ورقة بحثية حائزة على جوائز حول تصميم النظام، والآن انتقل العمل من البحث إلى المدقّق: يخضع كل برنامج بلغة Elixir لاستنتاج الأنماط وفحص تدريجي من دون أن يكتب المطوّر أي تعليق نمطي.
أخطاء مؤكدة وشيفرة ميتة
الهدف هو الإبلاغ عن الشيفرة الميتة وعن «الأخطاء المؤكدة» — مخالفات نمطية مضمون فشلها عند التنفيذ — من دون تحميل المطوّرين أي عبء إضافي. ووفقاً لإعلان الإصدار، يجتاز تطبيق Elixir 12 من أصل 13 فئة في اختبار «If T: Benchmark for Type Narrowing». وأصبح نظام الأنماط ممكناً بفضل شراكة بين CNRS وRemote، بينما ترعى التطوير شركتا Fresha وTidewave.
النمط dynamic(): التوافق والتضييق
حيث تستخدم أنظمة تدريجية كثيرة النمط any() بمعنى «كل شيء مسموح»، تقدّم Elixir النمط dynamic() بخاصيتين. التوافق يعني أن المخالفة تُبلَّغ فقط عندما يكون النمطان المقدَّم والمقبول منفصلين: فمتغير استُنتج بنمط dynamic(integer() or binary()) يمكن مع ذلك تمريره إلى عامل يقبل الأرقام فقط. أما التضييق فيجعل النمط أشبه بنطاق: استخدام data.a وdata.b يضبط القيمة إلى %{..., a: number(), b: number()}، لذا تُعدّ كتابة data.a + data بعد ذلك مخالفة. وتُنمَّط شروط الحماية أيضاً: ينتج is_list/is_integer اتحادات، وينتج is_map_key(x, :foo) ونفيه وجود المفتاح أو غيابه، ويجعل tuple_size(x) < 3 الوصول elem(x, 3) مخالفة. وفي تعبيرات case، تضيّق مطابقة nil في فرع سابق الفروع التالية إلى binary()، ما يكشف أيضاً الفروع الزائدة والشيفرة الميتة.
ترجمة أسرع وما بعد ذلك
يحسّن الإصدار كذلك زمن الترجمة، خصوصاً على الأجهزة متعددة الأنوية؛ وفي اختبارات الفريق التركيبية باتت أداة بناء Elixir الأسرع في دورة «ترجمة + إقلاع + اختبار» الشائعة. ويمكن ضبط خيار جديد باسم :module_definition على :compiled (الافتراضي) أو :interpreted عبر elixirc_options في mix.exs، وهو يغيّر فقط كيفية تنفيذ محتوى defmodule ولا يؤثر في ملفات .beam المكتوبة على القرص. أما توقيعات الأنماط فلا تزال أمامنا: يقول الفريق إنه لن يقدّمها إلا بعد أن يرضى عن أداء نظام الأنماط ويتمكن من تنفيذ الأنماط التعاودية والأنماط المعاملية واجتياز أزواج المفتاح والقيمة في الخرائط كتسلسل قابل للتعداد بكفاءة.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.