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

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

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

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

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

  • تمت إضافة دعم للأنواع المرتبطة العامة (GAT، والأنواع المرتبطة العامة)، مما يجعل من الممكن إنشاء أسماء مستعارة للنوع مرتبطة بنوع آخر وتسمح لك بربط مُنشئي النوع بالسمات. سمة Foo { اكتب Bar<'x>; }
  • تم تنفيذ تعبير "let... else"، مما يسمح لك بالتحقق من حالة مطابقة النمط مباشرة داخل تعبير "let" وتنفيذ تعليمات برمجية عشوائية في حالة عدم تطابق النمط. Let Ok(count) = u64::from_str(count_str) else { الذعر!("لا يمكن تحليل عدد صحيح: '{count_str}'"); };
  • السماح باستخدام عبارة Break للخروج من الكتل المسماة قبل الأوان، باستخدام اسم الكتلة (التسمية) لتحديد الكتلة التي سيتم إنهاؤها. Let result = 'block: { do_thing(); إذا condition_not_met () {كسر 'block 1؛ } do_next_thing(); إذا condition_not_met () {كسر 'block 2؛ } do_last_thing(); 3 };
  • بالنسبة لنظام التشغيل Linux، تمت إضافة القدرة على حفظ معلومات تصحيح الأخطاء (split-debuginfo) بشكل منفصل، والتي كانت متاحة مسبقًا لنظام التشغيل macOS فقط. عند تحديد الخيار "-Csplit-debuginfo=unpacked"، سيتم حفظ بيانات debuginfo بتنسيق DWARF في عدة ملفات كائنات منفصلة بامتداد ".dwo". سيؤدي تحديد "-Csplit-debuginfo=packed" إلى إنشاء حزمة واحدة بتنسيق ".dwp" تتضمن كافة بيانات تصحيح الأخطاء الخاصة بالمشروع. لدمج debuginfo مباشرة في قسم .debug_* لكائنات ELF، يمكنك استخدام الخيار "-Csplit-debuginfo=off".
  • تم نقل جزء جديد من واجهة برمجة التطبيقات إلى فئة المستقر ، بما في ذلك تم تثبيت طرق وتطبيقات السمات:
    • الأمراض المنقولة جنسيا::backtrace::Backtrace
    • منضم::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • يتم استخدام السمة "const"، التي تحدد إمكانية استخدامها في أي سياق بدلاً من الثوابت، في الوظائف <*const T&>::offset_from و<*mut T>::offset_from
  • كجزء من المرحلة النهائية لنقل تنفيذ بروتوكول LSP (بروتوكول خادم اللغة) إلى محلل الصدأ، تم استبدال التنفيذ القديم لخادم لغة Rust (RLS) بخادم كعب روتين يصدر تحذيرًا مع اقتراح للتبديل إلى باستخدام محلل الصدأ.
  • أثناء التجميع، يتم تمكين دعم النشر المضمن لرمز MIR المتوسط، مما يؤدي إلى تسريع تجميع حزم الصناديق النموذجية بنسبة 3-10%.
  • لتسريع عمليات البناء المجدولة، يوفر مدير حزمة Cargo فرزًا للمهام التي تنتظر التنفيذ في قائمة الانتظار.

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

بالإضافة إلى ذلك، تحدث ديفيد كلايدرماخر، نائب رئيس جوجل للهندسة، عن ترجمة الكود المستخدم في منصة أندرويد لإدارة مفاتيح التشفير إلى Rust، وكذلك استخدام Rust في تنفيذ DNS عبر بروتوكول HTTPS في المكدس. لشرائح UWB (النطاق فائق العرض) وفي إطار المحاكاة الافتراضية (Android Virtualization Framework) المرتبط بشريحة Tensor G2. يتم أيضًا تطوير مجموعات جديدة من البلوتوث والواي فاي، المعاد كتابتها في Rust، لنظام Android. تتمثل الإستراتيجية العامة في تعزيز الأمان تدريجيًا، أولاً عن طريق تحويل مكونات البرامج الأكثر ضعفًا وحيوية إلى Rust، ثم التوسع في الأنظمة الفرعية الأخرى ذات الصلة. وفي العام الماضي تم إدراج لغة Rust ضمن قائمة اللغات المسموح بها لتطوير منصة أندرويد.

المصدر: opennet.ru

إضافة تعليق