إصدار لغة البرمجة Rust 1.67

تم نشر إصدار لغة البرمجة للأغراض العامة Rust 1.67 ، التي أسسها مشروع Mozilla ، ولكن تم تطويرها الآن تحت رعاية منظمة Rust Foundation المستقلة غير الربحية. تركز اللغة على أمان الذاكرة وتوفر الوسائل لتحقيق توازي وظيفي عالي مع تجنب استخدام أداة تجميع البيانات المهملة ووقت التشغيل (يتم تقليل وقت التشغيل إلى التهيئة الأساسية للمكتبة القياسية وصيانتها).

تعمل طرق معالجة ذاكرة Rust على حفظ المطور من الأخطاء عند معالجة المؤشرات والحماية من المشكلات التي تنشأ بسبب معالجة الذاكرة منخفضة المستوى ، مثل الوصول إلى منطقة الذاكرة بعد تحريرها ، وإلغاء الإشارة إلى المؤشرات الفارغة ، وتجاوزات المخزن المؤقت ، وما إلى ذلك. لتوزيع المكتبات وتوفير عمليات الإنشاء وإدارة التبعيات ، يقوم المشروع بتطوير مدير حزمة الشحن. يتم دعم مستودع crates.io لاستضافة المكتبات.

يتم توفير أمان الذاكرة في Rust في وقت التجميع من خلال التحقق من المرجع ، وتتبع ملكية الكائن ، وتتبع عمر الكائن (النطاقات) ، وتقييم صحة الوصول إلى الذاكرة أثناء تنفيذ التعليمات البرمجية. يوفر Rust أيضًا حماية ضد فيض الأعداد الصحيحة ، ويتطلب تهيئة إلزامية للقيم المتغيرة قبل الاستخدام ، ويعالج الأخطاء بشكل أفضل في المكتبة القياسية ، ويطبق مفهوم المراجع والمتغيرات الثابتة افتراضيًا ، ويوفر كتابة ثابتة قوية لتقليل الأخطاء المنطقية.

الابتكارات الرئيسية:

  • بالنسبة للوظائف غير المتزامنة مع Future::Output، أصبح من الممكن الآن تحديد التعليقات التوضيحية "#[must_use]" التي تتضمن تحذيرًا في حالة تجاهل القيمة المرجعة، مما يساعد في تحديد الأخطاء الناتجة عن افتراض أن الوظيفة ستغير القيم بدلاً من إرجاع قيمة جديدة. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } تحذير: تم إرجاع المخرجات غير المستخدمة للمستقبل بواسطة `bar` الذي يجب استخدامه —> src/lib.rs:5:5 | 5 | شريط (). انتظار؛ | ^^^^^^^^^^^ | = ملاحظة: `#[warn(unused_must_use)]` قيد التشغيل افتراضيًا
  • تم تحديث تنفيذ قوائم انتظار FIFO std::sync::mpsc (مستهلك واحد متعدد المنتجين)، والذي تم تحويله إلى استخدام وحدة قناة الشعاع المتقاطع مع الحفاظ على واجهة برمجة التطبيقات السابقة. يتميز التنفيذ الجديد بحل عدد من المشكلات والأداء العالي وصيانة التعليمات البرمجية المبسطة.
  • تم نقل جزء جديد من واجهة برمجة التطبيقات إلى فئة المستقر ، بما في ذلك تم تثبيت طرق وتطبيقات السمات:
    • {عدد صحيح}::checked_ilog
    • {عدد صحيح}::checked_ilog2
    • {عدد صحيح}::checked_ilog10
    • {عدد صحيح}::ilog
    • {عدد صحيح}::ilog2
    • {عدد صحيح}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • غير صفر*::بت
  • تُستخدم خاصية "const" ، التي تحدد إمكانية استخدامها في أي سياق بدلاً من الثوابت ، في الدوال:
    • شار::from_u32
    • شار::from_digit
    • شار::to_digit
    • الأساسية::شار::from_u32
    • الأساسية::شار::from_digit
  • تم تنفيذ مستوى ثالث من الدعم لاستخدام Rust في Linux kernel (linuxkernel)، وكذلك لجهاز Sony PlayStation 1 (mipsel-sony-psx)، وPowerPC مع AIX (powerpc64-ibm-aix)، وQNX Neutrino RTOS ( aarch64-unknown-nto-) المنصات qnx710، x86_64-pc-nto-qnx710). يتضمن المستوى الثالث الدعم الأساسي، ولكن بدون الاختبار الآلي ونشر الإصدارات الرسمية والتحقق من إمكانية بناء التعليمات البرمجية.

بالإضافة إلى ذلك، يمكننا ملاحظة نشر ARM للتصحيحات التي تسمح باستخدام لغة Rust لتطوير برامج التشغيل ووحدات Linux kernel المجمعة للأنظمة القائمة على بنية AArch64.

المصدر: opennet.ru

إضافة تعليق