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

نشرت إصدار لغة برمجة النظام الصدأ 1.43، أسسها مشروع موزيلا. تركز اللغة على سلامة الذاكرة، وتوفر إدارة تلقائية للذاكرة، وتوفر أدوات لتحقيق التوازي العالي للمهام دون استخدام أداة تجميع البيانات المهملة و وقت التشغيل.

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

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

  • توفر وحدات الماكرو القدرة على استخدام أجزاء من العناصر لتحويلها إلى تعليمات برمجية للسمات (السمة) أو التطبيقات (ضمنا) أو الكتل الخارجية. على سبيل المثال:

    قواعد الماكرو! ماك_ترايت {
    ($أنا:العنصر) => {
    السمة T { $i }
    }
    }
    mac_trait! {
    الجبهة الوطنية فو () {}
    }

    سوف يؤدي إلى جيل:

    السمة ت {
    الجبهة الوطنية فو () {}
    }

  • تحسين الكشف عن نوع الأوليات والمراجع والعمليات الثنائية.
    على سبيل المثال، التعليمات البرمجية التالية، التي تسببت في حدوث خطأ سابقًا، ستكون الآن قادرة على الترجمة (يحدد Rust الآن بشكل صحيح أن 0.0 و&0.0 يجب أن يكونا من النوع f32):

    دع ن: f32 = 0.0 + &0.0؛

  • تمت إضافة متغير بيئة جديد CARGO_BIN_EXE_{name} إلى Cargo، والذي يتم تعيينه عند إنشاء اختبارات التكامل ويسمح لك بتحديد المسار الكامل للملف القابل للتنفيذ المحدد في قسم "[[bin]]" من الحزمة.
  • إذا سمح للعبارات باستخدام سمات مثل "#[cfg()]".
  • توفر المكتبة القدرة على استخدام الثوابت المرتبطة مباشرة للأنواع الصحيحة والكسرية، دون استيراد وحدة نمطية. على سبيل المثال، يمكنك كتابة u32::MAX أو f32::NAN على الفور دون تحديد "use std::u32" و"use std::f32" أولاً.
  • تمت إضافة وحدة جديدة بدائي، والذي يعيد تصدير أنواع Rust البدائية، على سبيل المثال عندما تحتاج إلى كتابة ماكرو والتأكد من عدم إخفاء الأنواع.
  • تم نقل جزء جديد من واجهات برمجة التطبيقات إلى الفئة المستقرة، بما في ذلك المستقرة

    مرة واحدة::is_Completed،
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 و
    مكرر::nce_with.

المصدر: opennet.ru

إضافة تعليق