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

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

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

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

  • لقد استقر استخدام الماكرو "الذعر!". في السياقات التي تم إنشاؤها أثناء الترجمة، مثل إعلانات "const fn". بالإضافة إلى ذلك، بالإضافة إلى استخدام "الذعر!" تسمح إعلانات const باستخدام الماكرو "assert!". وبعض واجهات برمجة تطبيقات المكتبة القياسية الأخرى. لا يغطي التثبيت بعد البنية الأساسية للتنسيق بالكامل، لذلك في شكله الحالي هو الماكرو "الذعر". لا يمكن استخدامه إلا مع سلاسل ثابتة (ذعر!("...")) أو مع قيمة محرفة واحدة "&str" عند الاستبدال (ذعر!("{}"، أ))، والتي يجب أن تقتصر على استبدال "{ }" بدون محددات التنسيق والأنواع الأخرى. في المستقبل، سيتم توسيع إمكانية تطبيق وحدات الماكرو في السياقات الثابتة، ولكن القدرات المستقرة كافية بالفعل لإجراء عمليات التحقق من التأكيد في مرحلة الترجمة: const _: () = تأكيد!(std::mem::size_of:: () == 64)؛ const _: () = تأكيد!(std::mem::size_of:: () == 8);
  • يسمح مدير حزمة Cargo باستخدام ملفات تعريف بأسماء عشوائية، لا تقتصر على "dev" و"release" و"test" و"bench". على سبيل المثال، لتمكين التحسين في مرحلة الارتباط (LTO) فقط عند إنشاء مجموعات المنتج النهائية، يمكنك إنشاء ملف تعريف "إنتاج" في Cargo.toml وإضافة علامة "lto = true" إليه. ومع ذلك، عند تحديد ملفات التعريف الخاصة بك، يجب عليك تحديد ملف تعريف موجود لترث الإعدادات الافتراضية منه. ينشئ المثال أدناه ملف تعريف "إنتاج" يكمل ملف تعريف "الإصدار" عن طريق تضمين العلامة "lto = true". يتم تنشيط ملف التعريف نفسه عن طريق استدعاء البضائع باستخدام خيار "--profile production"، وسيتم وضع عناصر التجميع في دليل "target/production". [profile.production] يرث = "الإصدار" lto = صحيح
  • تم تثبيت استخدام Try_reserve لأنواع Vec وString وHashMap وHashSet وVecDeque، مما يسمح لك بحجز مساحة مسبقًا لعدد معين من العناصر من نوع معين لتقليل تكرار عمليات تخصيص الذاكرة وتجنب تعطل أثناء التشغيل بسبب نقص الذاكرة.
  • يُسمح بتحديد وحدات ماكرو بأقواس متعرجة في تعبيرات مثل "m!{ .. }.method()" و"m!{ .. }؟".
  • تم تحسين تنفيذ الدالتين File::read_to_end وread_to_string.
  • تم تحديث دعم مواصفات Unicode إلى الإصدار 14.0.
  • تم توسيع عدد الوظائف التي تم وضع علامة "#[must_use]" لإصدار تحذير في حالة تجاهل القيمة المرجعة، مما يساعد في تحديد الأخطاء الناتجة عن افتراض أن الوظيفة ستغير القيم بدلاً من إرجاع قيمة جديدة.
  • تمت إضافة الواجهة الخلفية التجريبية لإنشاء التعليمات البرمجية باستخدام libgccjit.
  • تم نقل جزء جديد من واجهة برمجة التطبيقات إلى فئة المستقر ، بما في ذلك تم تثبيت طرق وتطبيقات السمات:
    • [ت؛ N]::as_mut_slice
    • [ت؛ ن]::as_slice
    • المجموعات::TryReserveError
    • HashMap::try_reserve
    • HashSet::try_reserve
    • سلسلة::try_reserve
    • سلسلة::try_reserve_exact
    • فيك::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • التكرار ::map_while
    • iter::MapWhile
    • proc_macro::is_available
    • الأمر::get_program
    • الأمر::get_args
    • الأمر::get_envs
    • الأمر::get_current_dir
    • CommandArgs
    • CommandEnvs
  • يتم استخدام السمة "const"، التي تحدد ما إذا كان يمكن استخدامها في أي سياق بدلاً من الثوابت، في الدالة تلميح::unreachable_unchecked.
  • تم تنفيذ المستوى الثالث من الدعم لـarmv6k-nintendo-3ds وarmv7-unknown-linux-uclibceabihf وm68k-unknown-linux-gnu وaarch64-kmc-solid_asp3 وarmv7a-kmc-solid_asp3-eabi وarmv7a-kmc- منصات Solid_asp3-eabihf. يتضمن المستوى الثالث الدعم الأساسي، ولكن بدون اختبار تلقائي أو نشر إصدارات رسمية أو التحقق من إمكانية إنشاء التعليمات البرمجية.

المصدر: opennet.ru

إضافة تعليق