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

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

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

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

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

  • تمت إعادة تصميم تنسيق الرسائل الصادرة عن معالج تعطل البرنامج الافتراضي (الذعر). النص المحدد في الماكرو "الذعر!" يظهر الآن على سطر منفصل بدون علامات الاقتباس، مما يسهل قراءة الرسالة ويزيل الارتباك عند وجود علامات الاقتباس المتداخلة أو تقسيمها عبر أسطر متعددة. fn main() { Let file = "ferris.txt"; ذعر!("أوه لا! {ملف:؟} غير موجود!"); } كان هناك موضوع "رئيسي" مذعور من "أوه لا!" لم يتم العثور على "ferris.txt"!', src/main.rs:3:5 أصيب الموضوع 'الرئيسي' بالذعر في src/main.rs:3:5: أوه لا! "ferris.txt" غير موجود!

    تمت أيضًا إعادة صياغة مخرجات الرسائل التي تظهر عند تشغيل وحدات الماكرو "assert_eq" و"assert_ne". fn main() { تأكيد_eq!("🦀"، "🐟"، "الفريس ليس سمكة"); } كان هناك خيط "رئيسي" مذعور من "فشل التأكيد: `(يسار == ​​يمين)` يسار: `"🦀"`، يمين: `"🐟"`: فيريس ليس سمكة"، src/main.rs: 2 :5 الموضوع 'الرئيسي' مذعور في src/main.rs:2:5: التأكيد `يسار == ​​يمين` فشل: فيريس ليس سمكة يسار: "🦀" يمين: "🐟"

  • وفقًا لـ RFC 3184، تمت إضافة القدرة على التعامل مباشرة مع مفاتيح تخزين LocalKey المحلية (thread_local) > والمفتاح المحلي > من خلال استخدام طرق get() وset() وtake() وreplace()، بدلاً من استخدام الإغلاق "with(|inner| ...)" مما يلغي الحاجة إلى تنفيذ تعليمات برمجية تهيئة إضافية لـ القيم الافتراضية المحددة للسلاسل الجديدة عند استخدام الماكرو "thread_local!" Thread_local! { أشياء ثابتة: الخلية > = الخلية::new(Vec::new()); } fn f() { // كان THINGS.with(|i| i.set(vec![32, 1, 2])); // أصبح THINGS.set(vec![3, 1, 2]); // ... // تم السماح v = THINGS.with(|i| i.take()); // أصبح Let v: Vec = THINGS.take(); }
  • تم نقل جزء جديد من واجهة برمجة التطبيقات إلى فئة المستقر ، بما في ذلك تم تثبيت طرق وتطبيقات السمات:
    • غير موقعة {integer}::div_ceil
    • غير موقعة {integer}::next_multiple_of
    • غير موقعة {عدد صحيح}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • الأمراض المنقولة جنسيا::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • المفتاح المحلي:: >::احصل على
    • المفتاح المحلي:: >::مجموعة
    • المفتاح المحلي:: >::خذ
    • المفتاح المحلي:: >::استبدال
    • المفتاح المحلي:: >::with_borrow
    • المفتاح المحلي:: >::with_borrow_mut
    • المفتاح المحلي:: >::مجموعة
    • المفتاح المحلي:: >::خذ
    • المفتاح المحلي:: >::استبدال
  • تُستخدم خاصية "const" ، التي تحدد إمكانية استخدامها في أي سياق بدلاً من الثوابت ، في الدوال:
    • RC::ضعيف::جديد
    • مزامنة::ضعيف::جديد
    • غير فارغ::as_ref
  • يوفر المترجم تسجيل معلومات الإصدار في قسم ".comment"، على غرار دول مجلس التعاون الخليجي وClang.
  • تم تنفيذ المستوى الثالث من الدعم للمنصات aarch64-unknown-teeos وcsky-unknown-linux-gnuabiv2 وriscv64-linux-android وriscv64gc-unknown-hermit وx86_64-unikraft-linux-musl وx86_64-unknown-linux -أوهوس. يتضمن المستوى الثالث الدعم الأساسي، ولكن بدون اختبار تلقائي أو نشر إصدارات رسمية أو التحقق من إمكانية إنشاء التعليمات البرمجية.
  • تم تنفيذ المستوى الثاني من الدعم للمنصة المستهدفة Wasm32-wasi-preview1-threads. المستوى الثاني من الدعم يتضمن ضمان التجميع.

المصدر: opennet.ru

إضافة تعليق