Rust تثبّت الـ never type في الإصدار 1.100 رغم أن الاختبار أظهر تأثر 3,277 مكتبة
الجديد ليس أن الفريق كسر كودًا قائمًا، بل أنه قاس حجم الكسر ونشره قبل اتخاذ القرار، فصار الخلاف على الحكم لا على المعلومات.
دمج فريق Rust في 24 أغسطس 2026 تغييرًا يكسر كودًا قائمًا عن قصد، في الـ pull request رقم 155499، ومن المقرر أن يصل مع الإصدار 1.100.0. وجاء القرار بعد اختبار على 9,024 مكتبة ظهرت مشكلات في 3,277 منها. وأعادت تغطية LWN في 8 سبتمبر الموضوع إلى النقاش.
يتعلق التغيير بنوع اسمه never type، ويُكتب بعلامة التعجب، ومعناه أن الدالة لا تُرجع أي قيمة أصلًا. مثال ذلك دالة تُنهي البرنامج أو تتوقف بخطأ panic، فهي لا تصل إلى نهايتها، ولذلك لا قيمة تعود منها.
بقي هذا النوع قيد التجربة أكثر من عامين، والآن يُثبَّت رسميًا. ويتغير معه سلوك الـ type inference، أي استنتاج المترجم للأنواع تلقائيًا، ويصبح النوع Infallible مجرد اسم آخر للنوع نفسه.
المشكلة أن هذا التغيير يكسر كودًا يعمل حاليًا. لذلك شغّل الفريق اختبار crater، وهو أداة تبني منظومة المكتبات كلها تقريبًا مع التغيير المقترح. ومن بين 9,024 مكتبة، ظهرت مشكلات في 3,277. وبعد المراجعة، تبيّن أن نحو 1,149 من هذه النتائج أخطاء في القياس نفسه لا كسر حقيقي.
ورغم ذلك، مضى الفريق في التغيير.
واللافت في القرار ليس الكسر، بل أنه قيس قبل حدوثه، ونُشر الرقم، مع تقدير صريح بأن التبسيط الذي سيأتي به يفوق العناء المؤقت. ويمكن الاختلاف مع هذا التقدير، لكن لا يمكن القول إن القرار اتُّخذ دون معرفة بثمنه.
وبالنسبة للفرق التي تعتمد على Rust في منتجاتها، يصبح الإصدار 1.100 إصدارًا يحتاج إلى اختبار الكود عليه قبل الترقية، لا ترقية روتينية.