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

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

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

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

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

  • في عمليات التعداد مع تمثيلات الأعداد الصحيحة (السمة "# [repr (Int)]") ، يُسمح بالإشارة الصريحة إلى المميز (رقم المتغير في التعداد) ، حتى إذا كان التعداد يحتوي على حقول. # [repr (u8)] enum Foo {A (u8)، # مميز 0 B (i8)، # مميز 1 C (منطقي) = 42، # مميز 42}
  • تمت إضافة الوظيفة core :: hint :: black_box والتي ترجع القيمة المستلمة ببساطة. نظرًا لأن المحول البرمجي يعتقد أن هذه الوظيفة تقوم بشيء ما ، يمكن استخدام وظيفة black_box لتعطيل تحسينات المحول البرمجي للحلقات عند إجراء اختبار أداء الكود أو عند فحص كود الآلة المُنشأ (بحيث لا يعتبر المترجم الشفرة غير مستخدمة وإزالتها). على سبيل المثال ، في المثال أدناه ، يمنع black_box (v.as_ptr ()) المترجم من التفكير في عدم استخدام المتجه v. استخدام الأمراض المنقولة جنسيا :: تلميح :: black_box؛ fn push_cap (v: & mut Vec) {for i in 0..4 {v.push (i)؛ black_box (v.as_ptr ()) ؛ }}
  • يقدم مدير الحزم "cargo" أمر "remove" ، والذي يسمح لك بإزالة التبعيات من بيان Cargo.toml من سطر الأوامر.
  • تم نقل جزء جديد من واجهة برمجة التطبيقات إلى فئة المستقر ، بما في ذلك تم تثبيت طرق وتطبيقات السمات:
    • proc_macro :: Span :: source_text
    • u * :: {check_add_signed، overflowing_add_signed، saturating_add_signed، wrapping_add_signed}
    • i * :: {check_add_unsigned، overflowing_add_unsigned، saturating_add_unsigned، wrapping_add_unsigned}
    • i * :: {check_sub_unsigned، overflowing_sub_unsigned، saturating_sub_unsigned، wrapping_sub_unsigned}
    • BTreeSet :: {first، last، pop_first، pop_last}
    • BTreeMap :: {first_key_value، last_key_value، first_entry، last_entry، pop_first، pop_last}
    • أضف تطبيقات AsFd لأنواع قفل stdio عند استخدام WASI.
    • ضمني TryFrom > لـ Box <[T؛ N]>
    • النواة :: تلميح :: black_box
    • المدة :: try_from_secs_ {f32، f64}
    • الخيار :: unzip
    • std :: os :: fd
  • النطاقات "..X" و ".. = X" مسموح بها في القوالب.
  • عند إنشاء الواجهة الأمامية لمجمع rustc و LLVM الخلفية ، يتم استخدام أوضاع تحسين LTO (تحسين وقت الارتباط) و BOLT (أداة التحسين الثنائي والتخطيط) لزيادة أداء الكود الناتج وتقليل استهلاك الذاكرة.
  • تم تنفيذ دعم المستوى 5 لمنصات armv5te-none-eabi و thumbvXNUMXte-none-eabi. المستوى الثالث يتضمن الدعم الأساسي ، ولكن بدون اختبار آلي ، نشر البنيات الرسمية والتحقق من القدرة على بناء الكود.
  • دعم إضافي للارتباط بمكتبات macOS العامة.

بالإضافة إلى ذلك ، يمكننا ملاحظة التضمين في قاعدة بيانات مجلس التعاون الخليجي لمترجم الواجهة الأمامية للغة Rust (gccrs). يتم تضمين الواجهة الأمامية في فرع دول مجلس التعاون الخليجي 13 ، والذي سيصدر في مايو 2023. بدءًا من GCC 13 ، سيكون من الممكن استخدام مجموعة أدوات GCC القياسية لتجميع برامج Rust دون الحاجة إلى تثبيت برنامج التحويل البرمجي rustc الذي تم إنشاؤه باستخدام تطورات LLVM. سيكون تنفيذ Rust في GCC 13 في حالة تجريبية ، ولن يتم تمكينه افتراضيًا.

المصدر: opennet.ru

إضافة تعليق