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

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

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

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

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

  • يقدم مدير الحزم "cargo" الأمر "add"، الذي يسمح لك بإضافة تبعيات جديدة إلى بيان Cargo.toml أو تغيير التبعيات الموجودة من سطر الأوامر. يسمح لك الأمر أيضًا بتحديد الميزات والإصدارات الفردية، على سبيل المثال: Cargo Add serde —features derive Cargo Add nom@5
  • تمت إضافة القدرة على استخدام "#[derive(Default)]" مع التعدادات التي يتم فيها تعريف الخيار الافتراضي باستخدام السمة "#[default]". #[اشتقاق (افتراضي)] التعداد ربما { #[افتراضي] لا شيء، شيء(T)، }
  • على نظام Linux، يتم استخدام تنفيذ أكثر إحكاما وأسرع لآلية مزامنة Mutex، استنادًا إلى استخدام futexes الذي توفره Linux kernel. على عكس التنفيذ المستخدم سابقًا استنادًا إلى مكتبة pthreads، يستخدم الإصدار الجديد 5 بايت فقط بدلاً من 40 لتخزين حالة Mutex، وبالمثل، تم نقل آليات قفل Condvar وRwLock إلى futex.
  • تم تنفيذ المستوى الثاني من الدعم للنظام الأساسي المستهدف x86_64-unknown-none، وهو مصمم لإنشاء ملفات قابلة للتنفيذ يمكنها العمل بدون نظام تشغيل. على سبيل المثال، يمكن استخدام النظام الأساسي المستهدف المحدد عند كتابة مكونات kernel. المستوى الثاني من الدعم يتضمن ضمان التجميع.
  • تم تنفيذ المستوى الثالث من الدعم لمنصات aarch64-pc-windows-gnullvm وx86_64-pc-windows-gnullvm. يتضمن المستوى الثالث دعمًا أساسيًا، ولكن بدون اختبار تلقائي أو نشر إصدارات رسمية أو التحقق من إمكانية إنشاء التعليمات البرمجية.
  • تم نقل جزء جديد من واجهة برمجة التطبيقات إلى فئة المستقر ، بما في ذلك تم تثبيت طرق وتطبيقات السمات:
    • منطقي::then_some
    • f32::total_cmp
    • f64::total_cmp
    • ستدين::خطوط
    • windows::CommandExt::raw_arg
    • ضمنا القيمة الافتراضية لـ AssertUnwindSafe
    • من > ل آر سي
    • من > للقوس<[u8]>
    • FusedIterator لـ EncodeWide

    المصدر: opennet.ru

إضافة تعليق