برمجياتقراءة دقيقتين

لغة Zig تلغي الأولوية بين بعض المعاملات وتشترط الأقواس، و353 سطرًا فقط تأثرت في مليون سطر

أعلنت لغة Zig في سجل التطوير بتاريخ 24 أكتوبر 2026 أن بعض تركيبات المعاملات لم تعد لها أولوية معرّفة، وأن المترجم صار يطلب أقواسًا صريحة بدلها. فسطر مثل const a = x orelse y == z; صار خطأ، ويقول المترجم إن الأولوية غامضة ويجب تحديدها بالأقواس. ويضيف ملاحظة توضح أن النسخة 0.17 وما يليها من إصدارات 0.17.x كانت تقرأ السطر نفسه على أنه (x orelse y) == z.

وتعود الفكرة إلى issue رقم 114 المفتوح منذ 2016، ونفّذها مساهم باسم CMDRZero. وفي ريبو اللغة، الذي يتجاوز مليون سطر، احتاج 353 سطرًا فقط إلى تعديل. أي أن هذه الكتابة الغامضة كانت نادرة أصلًا، وأغلب المبرمجين كانوا يضعون الأقواس بأنفسهم.

والأهم أن إعادة كتابة هذه السطور كشفت bugs حقيقية في كود يعمل، ومنها ما ظهر في مشروع arocc.

ولم يتغير شيء في العمليات المألوفة: الجمع والضرب والمقارنة بقيت على حالها، فسطر مثل x + y * z ما زال يعمل دون أقواس. التغيير يطال فقط خلط المعاملات التي لا يحفظ أحد ترتيبها.

وتوفر اللغة أمرًا يصلح الكود القديم آليًا هو zig fmt --upgrade، لكنه يحافظ على الترتيب القديم وقد يضيف أقواسًا زائدة أحيانًا، وسيُزال بعد دورة إصدار واحدة.

ويختلف هذا الاتجاه عما يحدث في أغلب اللغات مع الوقت، إذ تتراكم القواعد التي يجب حفظها. هنا قلّت قاعدة، وصار الغموض خطأ يكشفه المترجم بدل أن يمر بصمت.

المصادر

  1. بند الـ devlog الرسمي
  2. القضية الأصلية على GitHub
  3. مرجع أولويات المعاملات في Zig
  4. مشروع arocc

من عدد الاثنين 15 جمادى الأولى - 26 أكتوبر

أخبار ذات صلة

أخبار الاثنين 15 جمادى الأولى - 26 أكتوبر