صدر Rust 1.85: ما الذي تغير في الإصدار الجديد
قدم فريق مطوري Rust تحديثًا مستقرًا جديدًا للغة — الإصدار 1.85. يجلب هذا الإصدار مجموعة من الميزات المنتظرة التي تبسط كتابة الكود غير المتزامن، وتحسن الأداء، وتوسع مجموعة أدوات المطور. دعنا نستعرض التغييرات الرئيسية.
تثبيت async closures
كان أحد الأحداث الرئيسية هو تثبيت async closures — وهي closures يمكن أن تكون غير متزامنة. سابقًا، لإرجاع closure غير متزامن، كان عليك كتابة تواقيع معقدة يدويًا مع impl Future. الآن يدعم المترجم الصياغة التالية:
- async || { ... } — إعلان مباشر لـ closure غير متزامن.
- إغلاق تلقائي للمتغيرات مع دعم lifetime.
- التوافق مع traits
FnOnceوFnMutوFn.
هذا يبسط كتابة معالجات الأحداث غير المتزامنة، والبرمجيات الوسيطة (middleware)، ودوال الاسترجاع (callback) في أطر الويب (مثل Axum أو Actix).
تحسين borrow checker
في Rust 1.85، تم تحسين محلل الاقتراض (borrow checker) بشكل كبير. الآن يفهم بشكل أفضل الحالات التي يتم فيها استخدام متغير بعد نقل جزئي:
- يُسمح باستعارة حقول فردية من هيكل (struct)، حتى لو تم نقل الحقول الأخرى بالفعل.
- تحسين معالجة الاقتراضات المتداخلة في التكرارات (iterators).
- تقليل عدد التحذيرات الخاطئة في الكود الذي يحتوي على إنشاءات شرطية.
هذا مفيد بشكل خاص عند العمل مع هياكل بيانات كبيرة حيث تكون الملكية الجزئية مطلوبة.
إمكانيات جديدة للماكرو
يتضمن الإصدار توسيع نظام الماكرو (proc macros):
- تمت إضافة دعم token streams مع إمكانية تعديل المواقع في الكود المصدري.
- تبسيط إنشاء الماكروات السمة (attribute macros) للهياكل والتعدادات (enums).
- تحسين معالجة الأخطاء داخل الماكروات — الآن تظهر الرسائل مع تحديد دقيق للسطر في كود المستخدم.
هذا سيجعل تطوير مكتبات التسلسل (serde)، وتوجيه الويب، وتوليد الكود أكثر مرونة.
تحسين المترجم وتحسينات في cargo
واصل المطورون العمل على أداء التجميع:
- تسريع التجميع التزايدي للمشاريع الكبيرة (أسرع بنسبة تصل إلى 15%).
- في
cargo check، تمت إضافة دعم للتحليل المتوازي للتبعيات. - في
cargo build، تم تحسين التخزين المؤقت للقطع الأثرية الوسيطة.
أيضًا، ظهر أمر جديد في cargo وهو cargo info، والذي يعرض معلومات مفصلة عن حزمة من السجل (الإصدارات، التبعيات، الترخيص) دون الحاجة إلى تنزيلها.
إصلاحات الأمان والاستقرار
في الإصدار 1.85، تم إصلاح العديد من الثغرات الأمنية المتعلقة بمعالجة الكود غير الآمن (unsafe). تم إصلاح الأخطاء في التعامل مع الذاكرة عند استخدام std::mem::transmute و MaybeUninit. يوصي فريق Rust جميع المستخدمين بالتحديث لضمان أمان مشاريعهم.
كيفية التحديث
التحديث متاح عبر المثبت الرسمي rustup. لتثبيت الإصدار الجديد، قم بتنفيذ الأمر:
المكتبات الموصى بها
أخبار أخرى
Go (Golang) دخل ضمن الثلاثة الأوائل لأكثر اللغات المحبوبة وفقًا لاستطلاع Stack Overflow 2024
Java مقابل Python في 2020: معركة البنية الخلفية للمؤسسات — من سينتصر في عصر الخدمات المصغرة؟
رواتب مطوري C++ في عام 2024 ارتفعت بنسبة 20%: تحليل السوق
إطار عمل جديد لـ C# (.NET) يكتسب شعبية بين المطورين