صدر Rust 1.80: نظرة عامة على التغييرات والابتكارات الرئيسية
قدم فريق مطوري Rust إصدارًا مستقرًا جديدًا — الإصدار 1.80.0. يجلب هذا التحديث العديد من الميزات المنتظرة، ويثبت عددًا من واجهات API، ويحسن تجربة المستخدم. دعنا نتعرف على ما تغير وكيف ستؤثر هذه الابتكارات على التطوير.
تثبيت LazyCell و LazyLock
ربما يكون أبرز ابتكار هو تثبيت النوعين LazyCell و LazyLock. سابقًا، للتهيئة البطيئة للبيانات، كان لا بد من استخدام صناديق خارجية (مثل once_cell) أو تركيبات معقدة.
- LazyCell — تهيئة بطيئة غير محظورة للسياق أحادي الخيط. يسمح بتأجيل إنشاء القيمة حتى أول استخدام.
- LazyLock — نسخة آمنة للخيوط، تستخدم كائن المزامنة (mutex) لمزامنة الوصول. مثالي للتكوينات العامة والأنماط المفردة (singletons).
كلا النوعين يطبقان الخاصيتين Deref و DerefMut، مما يجعلهما سهلين الاستخدام. الآن تغطي المكتبة القياسية السيناريوهات الأكثر شيوعًا للتهيئة البطيئة.
تثبيت API: Exclusive وغيرها
في الإصدار 1.80، تم تثبيت عدد من واجهات API الجديدة:
Exclusive— غلاف للوصول الحصري إلى قيمة. يسمح بالعمل بأمان مع الأنواع غير القابلة للإرسال (non-Send) في السياق غير المتزامن، من خلال توفير وصول متزامن عبر إغلاق (closure).- الطرق
BorrowedBuf::as_sliceوBorrowedCursor::as_slice— تبسط العمل مع المخازن المؤقتة للإدخال/الإخراج. HashMap::extract_ifوHashSet::extract_if— مكررات تسمح بإزالة العناصر من المجموعة وفقًا لشرط، مع أخذ ملكيتها.
تحسينات المترجم
يواصل فريق Rust العمل على تحسين ملاحظات المترجم. في الإصدار 1.80، تم تحسين رسائل الأخطاء عند الاستخدام غير الصحيح للخصائص (traits) وأوقات الحياة (lifetimes). الآن يقدم المترجم تلميحات أكثر دقة، وهو أمر مفيد بشكل خاص للمبتدئين.
- تشخيصات محسنة للأخطاء المتعلقة بالأنواع التي تطبق
Drop. - رسائل أكثر وضوحًا عند تعارض الاستيرادات.
- تحسين وقت الترجمة للمشاريع التي تستخدم وحدات الماكرو (macros).
ماذا يعني هذا للمطورين؟
يوصى بالتحديث إلى Rust 1.80 لكل من يستخدم التهيئة البطيئة بنشاط أو يعمل مع الكود غير المتزامن. يتيح تثبيت LazyLock الاستغناء عن التبعيات الخارجية، مما يبسط البناء ويزيد الأمان. الطرق الجديدة للمجموعات تجعل الكود أكثر اصطلاحية (idiomatic)، والتشخيص المحسن للمترجم يسرع عملية التصحيح.
لمستخدمي PythonLib الذين يدرسون Rust أو يستخدمونه مع Python (على سبيل المثال، عبر PyO3)، هذا التحديث مهم أيضًا: واجهات API المستقرة والأداء المحسن للمترجم يجعلان Rust أكثر جاذبية للبرمجة النظامية والخدمات عالية التحميل.
القائمة الكاملة للتغييرات متاحة في الملاحظات الرسمية للإصدار. يمكن تحديث Rust باستخدام الأمر rustup update stable.