# إصدار Rust 1.99.1 يصلح دالة bool عبر FFI كانت قد تُرجع قيمًا غير 0 و1

> **المغزى:** المغزى: مكتبة Rust تُستدعى من C أو Python أو Node وتُرجع bool ربما كانت تعطي إجابات خاطئة بصمت، دون انهيار ودون رسالة خطأ تلتقطها الاختبارات.

- المصدر: المغزى (https://almaghza.com/a/2026-10-16-rust-1-99-1-ffi-bool-fix/)
- التاريخ: 5 جمادى الأولى - 16 أكتوبر 2026 (2026-10-16)
- القسم: برمجيات
- الوسوم: Rust، المترجمات، لغات البرمجة

أعلن فريق Rust في 15 أكتوبر 2026 الإصدار 1.99.1، وهو إصدار نقطي يضم ثلاثة إصلاحات وصفها الإعلان بأنها تراجعات (regressions)، أي أخطاء ظهرت في سلوك كان يعمل من قبل. وأبرزها يخص الدوال التي تُرجع قيمة bool عبر FFI، وهي الواجهة التي تُستدعى من خلالها دوال Rust من لغات أخرى، على معمارية x86_64.

وتفسير الخلل أن قيمة bool تحتاج نظريًا إلى بت واحد، لكنها تُعاد داخل مسجّل كامل في المعالج. وتنص قواعد الـ ABI، وهي الاتفاق الذي يحكم تبادل البيانات بين اللغات، على تصفير البتات العليا غير المستخدمة في هذا المسجّل، وهو ما يُعرف بالـ zero-extension. والإصدار السابق كان قد يترك تلك البتات دون تصفير، فيرى الطرف المستدعي قيمًا غير 0 و1.

وخطورة هذا النوع من الأعطال أنه لا يسبب انهيارًا. فالبرنامج يواصل العمل، والشرط يُقيَّم، لكن القرار قد يخرج خاطئًا دون أي رسالة. والاختبار الذي يتحقق فقط من أن البرنامج لا يتوقف لن يكشفه.

ويضم الإصدار إصلاحين آخرين. الأول لرمز wcslen الذي كان ناقصًا فيُفشل الربط (linking) على بعض الأهداف، وأكثرها تأثرًا أهداف UEFI في المشاريع التي تستخدم std، ويشير الإعلان إلى أن المشكلة نفسها قد تظهر في كود مشابه لدى المستخدمين بسبب تمريرة تحسين في LLVM. والثاني لأداة rust-lld على macOS، التي كانت قد تفشل في تحميل libLLVM عند تشغيلها دون وسيط rustup، وصارت تُبنى بمدخل rpath.

ولم يصف الإعلان أيًّا من الإصلاحات بأنه عيب سلامة (soundness)، ولم يذكر عدد المشاريع المتأثرة. والترقية تتم بالأمر rustup update stable.

## المصادر

- [إعلان Rust 1.99.1 الرسمي](https://blog.rust-lang.org/2026/10/15/Rust-1.99.1/)
- [توثيق Rust للـ FFI](https://doc.rust-lang.org/nomicon/ffi.html)
