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

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

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

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

  • تمت إزالة الارتباط بأمر تنفيذ أوامر "فحص البضائع" و"قص البضائع". في السابق، لم يكن استدعاء "cargo clippy" بعد "فحص البضائع" يؤدي إلى تشغيل الأداة المساعدة clippy (linter) نظرًا لعدم وجود فصل لذاكرة التخزين المؤقت لأوضاع الفحص هذه. الآن تم حل هذه المشكلة ولم يعد الترتيب الذي يتم به استدعاء "cargo clippy" و"cargo check" مهمًا.
  • تم نقل جزء جديد من واجهة برمجة التطبيقات (API) إلى الفئة الثابتة، بما في ذلك الطرق التالية التي تم تثبيتها:
    • الوسيطات::as_str
    • شار::MAX
    • شار::REPLACEMENT_CHARACTER
    • شار::UNICODE_VERSION
    • شار::decode_utf16
    • شار::from_digit
    • شار::from_u32_unchecked
    • شار::from_u32
    • شريحة::partition_point
    • str::rsplit_once
    • شارع::split_once
  • يتم استخدام السمة "const" التي تحدد إمكانية استخدامها في أي سياق بدلاً من الثوابت، في الطرق:
    • شار::len_utf8
    • شار::len_utf16
    • شار::to_ascii_uppercase
    • شار::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • تمت إضافة فحص الوبر unsafe_op_in_unsafe_fn لتحديد ما إذا كان الكود غير الآمن المستخدم في الوظائف غير الآمنة تم تأطيره بواسطة كتل غير آمنة.
  • يُسمح بإلقاء مؤشرات قابلة للتغيير على المصفوفات في شكل مؤشرات لنوع عنصر المصفوفة. دع mut x: [استخدام؛ 2] = [0، 0]؛ دع p = &mut x as *mut use; دع p = &mut x as *const use;
  • تمت إضافة 9 شيكات جديدة إلى Clippy (inter).
  • يدعم مدير حزم الشحن الآن حقل "manifest_path" في JSON للحزم. تمت إضافة دعم لتحديد معلومات الترخيص بتنسيق SPDX 3.11 إلى مستودع Crates.io.
  • يُسمح بتحديد مرشحات متعددة عند تشغيل الاختبارات، على سبيل المثال، سيؤدي تشغيل "cargo test - foo bar" إلى تشغيل جميع الاختبارات المطابقة للأقنعة "foo" و"bar".
  • تم تحديث مجموعة أدوات LLVM الافتراضية إلى LLVM 12.
  • تم تنفيذ المستوى الثالث من الدعم لمنصات s390x-unknown-linux-musl وriscv32gc-unknown-linux-musl وriscv64gc-unknown-linux-musl وpowerpc-unknown-openbsd. يتضمن المستوى الثالث الدعم الأساسي، ولكن بدون اختبار تلقائي أو نشر إصدارات رسمية أو التحقق من إمكانية إنشاء التعليمات البرمجية.

المصدر: opennet.ru

إضافة تعليق