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

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

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

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

  • في كتل تنسيق السلسلة، بالإضافة إلى القدرة المتوفرة مسبقًا على استبدال المتغيرات المدرجة صراحةً بعد السلسلة بالرقم والاسم، يتم تنفيذ القدرة على استبدال المعرفات العشوائية عن طريق إضافة التعبير "{identifier}" إلى السلسلة. على سبيل المثال: // الإنشاءات المدعومة مسبقًا: println!("Hello, {}!", get_person()); println!("مرحبًا، {0}!"، get_person()); println!("مرحبًا، {شخص}!"، person = get_person()); // الآن يمكنك تحديد Let person = get_person(); println!("مرحبًا، {شخص}!");

    يمكن أيضًا تحديد المعرفات مباشرةً في خيارات التنسيق. دع (العرض، الدقة) = get_format(); لـ (الاسم، النتيجة) في get_scores() { println!("{name}: {score:width$.precision$}"); }

    يعمل الاستبدال الجديد في كافة وحدات الماكرو التي تدعم تعريف تنسيق السلسلة، باستثناء الماكرو "ذعر!". في إصدارات 2015 و2018 من لغة Rust، حيث يتم التعامل مع الذعر!("{ident}") كسلسلة عادية (في Rust 2021 يعمل الاستبدال).

  • تم تغيير سلوك بنية الأمر std::process::Command على نظام التشغيل Windows بحيث لم يعد يبحث عن الملفات القابلة للتنفيذ في الدليل الحالي عند تنفيذ الأوامر، لأسباب أمنية. تم استبعاد الدليل الحالي لأنه يمكن استخدامه لتنفيذ تعليمات برمجية ضارة إذا تم تشغيل البرامج في أدلة غير موثوقة (CVE-2021-3013). يتضمن منطق الكشف القابل للتنفيذ الجديد البحث في دلائل Rust ودليل التطبيق ودليل نظام Windows والدلائل المحددة في متغير بيئة PATH.
  • قامت المكتبة القياسية بتوسيع عدد الوظائف التي تحمل علامة "#[must_use]" لإصدار تحذير في حالة تجاهل القيمة المرجعة، مما يساعد في تحديد الأخطاء الناتجة عن افتراض أن الوظيفة ستغير القيم بدلاً من إرجاع قيمة جديدة.
  • تم نقل جزء جديد من واجهة برمجة التطبيقات إلى فئة المستقر ، بما في ذلك تم تثبيت طرق وتطبيقات السمات:
    • البيانات الوصفية::is_symlink
    • المسار::is_symlink
    • {عدد صحيح}::saturating_div
    • الخيار::unwrap_unchecked
    • النتيجة::unwrap_unchecked
    • النتيجة::unwrap_err_unchecked
  • تُستخدم خاصية "const" ، التي تحدد إمكانية استخدامها في أي سياق بدلاً من الثوابت ، في الدوال:
    • المدة::جديد
    • المدة::checked_add
    • المدة::saturating_add
    • المدة::checked_sub
    • المدة::saturating_sub
    • المدة::checked_mul
    • المدة::saturating_mul
    • المدة::checked_div
  • يُسمح بإلغاء الإشارة إلى مؤشرات "*const T" في سياقات "const".
  • في مدير حزمة Cargo، تمت إضافة حقل Rust_version إلى بيانات تعريف الحزمة، وتمت إضافة خيار "--message-format" إلى أمر "cargo install".
  • ينفذ المترجم دعمًا لآلية حماية CFI (تكامل التحكم في التدفق)، والتي تضيف عمليات فحص قبل كل استدعاء غير مباشر لاكتشاف بعض أشكال السلوك غير المحدد الذي قد يؤدي إلى انتهاك أمر التنفيذ العادي (تدفق التحكم) نتيجة لـ استخدام أدوات الاستغلال التي تغير المؤشرات المخزنة في الذاكرة على الوظائف.
  • أضاف المترجم دعمًا للإصدارين 5 و6 من تنسيق مقارنة تغطية LLVM، المستخدم لتقييم تغطية الكود أثناء الاختبار.
  • في المترجم، تم رفع متطلبات الحد الأدنى من إصدار LLVM إلى LLVM 12.
  • تم تنفيذ المستوى الثالث من الدعم للنظام الأساسي x86_64-unknown-none. يتضمن المستوى الثالث الدعم الأساسي، ولكن بدون الاختبار الآلي ونشر الإصدارات الرسمية والتحقق من إمكانية بناء التعليمات البرمجية.

بالإضافة إلى ذلك، يمكننا أن نلاحظ نشر Microsoft لإصدار مكتبات Rust لنظام التشغيل Windows 0.30، والتي تتيح لك استخدام لغة Rust لتطوير التطبيقات لنظام التشغيل Windows. تشتمل المجموعة على حزمتين من الصناديق (windows وwindows-sys)، والتي يمكنك من خلالها الوصول إلى Win API في برامج Rust. يتم إنشاء التعليمات البرمجية لدعم واجهة برمجة التطبيقات (API) ديناميكيًا من البيانات التعريفية التي تصف واجهة برمجة التطبيقات (API)، مما يسمح لك بتنفيذ الدعم ليس فقط لاستدعاءات Win API الحالية، ولكن أيضًا للمكالمات التي ستظهر في المستقبل. يضيف الإصدار الجديد دعمًا للنظام الأساسي الهدف UWP (النظام الأساسي العالمي لـ Windows) وينفذ نوعي المعالجة والتصحيح.

المصدر: opennet.ru

إضافة تعليق