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

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

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

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

  • تمت إضافة القدرة على وضع علامة على الهياكل (البنية) والتعدادات (التعداد مع كتلة متغيرة) باستخدام السمة "#[غير شاملة]"، أيّ يسمح في المستقبل، قم بإضافة حقول وخيارات جديدة إلى الهياكل والتعدادات المعلنة. على سبيل المثال، يمكن لمطوري الوحدات التي تحتوي على بنيات ذات حقول معلنة بشكل عام استخدام "#[non_exhaustive]" لوضع علامة على البنيات التي قد تحتوي على حقول جديدة تضاف في المستقبل. حتى الآن، في هذه الحالة، اضطر المطور إلى الاختيار بين الإعلان عن الحقول بشكل خاص والالتزام بقائمة الحقول غير القابلة للتغيير. تزيل السمة الجديدة هذا القيد وتسمح لك بإضافة حقول جديدة في المستقبل دون المخاطرة بكسر التعليمات البرمجية الخارجية المجمعة مسبقًا. في حزم الصناديق، عند مطابقة الخيارات في قسم "المطابقة"، يلزم تعريف صريح للقناع "_ => {...}" يغطي الحقول المستقبلية المحتملة، وإلا سيتم عرض خطأ عند إضافة حقول جديدة.
  • أضيفت بواسطة القدرة على استدعاء الماكرو الإجرائي mac!() في سياق النوع. على سبيل المثال، يمكنك الآن كتابة "type Foo =expand_to_type!(bar);" إذا كان "expand_to_type" عبارة عن ماكرو إجرائي.
  • في الكتل "الخارجية { ... }". مضاف القدرة على استخدام وحدات الماكرو الإجرائية والسمات، بما في ذلك وحدات الماكرو "bang!()"، على سبيل المثال:

    قواعد الماكرو! make_item { ($name:ident) => { fn $name(); } }

    خارجي {
    make_item!(alpha);
    make_item!(بيتا);
    }

    خارجي "ج" {
    #[my_identity_macro] fn foo();
    }

  • في وحدات الماكرو مُنفّذ القدرة على توليد عناصر "قواعد_الماكرو!". إنشاء "قواعد_ماكرو!" ممكن في وحدات الماكرو الشبيهة بالوظيفة ("mac! ()") وفي وحدات الماكرو في شكل سمات ("#[mac]").
  • في $m: عنصر رسم الخرائط التعريفية مضاف دعم قيم تعداد الرموز المميزة ("[TOKEN_STREAM]" و"{TOKEN_STREAM}" و"(TOKEN_STREAM)")، على سبيل المثال:

    قواعد الماكرو! Accept_meta { ($m:meta) => {} }
    Accept_meta!( my::path );
    Accept_meta!( my::path = "lit" );
    Accept_meta!( my::path ( abc ) );
    Accept_meta!( my::path [ abc ] );
    Accept_meta!( my::path { abc } );

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

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

  • يتم استخدام السمة "const"، التي تحدد إمكانية استخدامها في أي سياق بدلاً من الثوابت، للدالة is_power_of_two (للأعداد الصحيحة غير الموقعة).
  • تم نقل جزء جديد من واجهة برمجة التطبيقات (API) إلى الفئة الثابتة، بما في ذلك الماكرو todo!() والشريحة::repeat، mem::take، BTreeMap::get_key_value، HashMap::get_key_value، وقد تم تثبيت الأساليب.
    الخيار::as_deref، الخيار::as_deref_mut، الخيار::flatten، UdpSocket::peer_addr، {f32،f64}::to_be_bytes، {f32،f64}::to_le_bytes،{f32،f64}::to_ne_bytes، {f32، f64}::from_be_bytes و{f32,f64}::from_le_bytes و{f32,f64}::from_ne_bytes.

  • في البضائع مدير الحزمة
    مُنفّذ تحذيرات التخزين المؤقت للمترجم على القرص. تمت إضافة خيار "بيانات تعريف الشحنة" إلى أمر "بيانات تعريف الشحنة".--منصة التصفية"لإظهار الحزم المرتبطة بالنظام الأساسي المستهدف المحدد فقط في عمود تحليل التبعية. تمت إضافة خيار تكوين إصدار http.ssl لتحديد إصدارات TLS الصالحة.
    تمت إضافة إمكانية نشر القسم "تبعيات التطوير" دون تحديد مفتاح "الإصدار".

  • يوفر المترجم Rustc دعم المستوى الثالث للمنصات المستهدفة Thumbv7neon-unknown-linux-musleabihf وaarch64-unknown-none-softfloat وmips64-unknown-linux-muslabi64 وmips64el-unknown-linux-muslabi64. يتضمن المستوى الثالث الدعم الأساسي، ولكن بدون الاختبار الآلي ونشر الإصدارات الرسمية.

المصدر: opennet.ru

إضافة تعليق