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

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

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

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

  • يتمتع مدير حزمة Cargo بالقدرة على دمج الأخطاء والتحذيرات المكررة التي تحدث أثناء الإنشاء. عند تنفيذ أوامر مثل "cargo test" و"cargo check --all-targets" التي تؤدي إلى إنشاءات متعددة لحزمة بمعلمات مختلفة، يُعرض للمستخدم الآن ملخص لحدوث مشكلة متكررة، بدلاً من عرضه عدة تحذيرات متطابقة عند إنشاء نفس الشيء بشكل متكرر. $ البضائع +1.55.0 فحص - جميع الأهداف التحقق من تحذير foo v0.1.0: لم يتم استخدام الوظيفة أبدًا: 'foo' -> src/lib.rs:9:4 | 9 | الجبهة الوطنية فو () {} | ^^^ | = ملاحظة: يتم تشغيل '#[warn(dead_code)]' بشكل افتراضي: أنشأ 'foo' (lib) تحذيرًا واحدًا: أنشأ 'foo' (اختبار lib) تحذيرًا واحدًا (نسخة واحدة مكررة) تم الانتهاء من هدف التطوير [unoptimized + debuginfo] (ق) في 1 ثانية
  • تم نقل كود تحليل النقطة العائمة الموجود في المكتبة القياسية لاستخدام خوارزمية Eisel-Lemire الأسرع والأكثر دقة، والتي قامت بحل بعض المشكلات التي تمت ملاحظتها مسبقًا فيما يتعلق بتقريب الأرقام وتحليلها بأعداد كبيرة جدًا من الأرقام.
  • تم تثبيت القدرة على تحديد نطاقات غير مغلقة في القوالب (يتم تفسير "X.." على أنها نطاق يبدأ بالقيمة X وينتهي بالقيمة القصوى لنوع العدد الصحيح): match x as u32 { 0 => println! ("صفر!")، 1.. => println!("رقم موجب!")، }
  • متغيرات الأخطاء الموسعة التي يغطيها std::io::ErrorKind (تصنف الأخطاء إلى فئات مثل NotFound وWoudBlock). في السابق، كانت الأخطاء التي لم تتناسب مع الفئات الموجودة تندرج ضمن فئة ErrorKind::Other، والتي كانت تُستخدم أيضًا للأخطاء في التعليمات البرمجية لجهة خارجية. توجد الآن فئة داخلية منفصلة ErrorKind::Uncategorized للأخطاء التي لا تتناسب مع الفئات الموجودة، والفئة ErrorKind::Other تقتصر على الأخطاء التي لا تحدث في المكتبة القياسية (وظائف المكتبة القياسية التي ترجع io::Error لم تعد تستخدم فئة ErrorKind:: أخرى).
  • تم نقل جزء جديد من واجهة برمجة التطبيقات إلى فئة المستقر ، بما في ذلك تم تثبيت طرق وتطبيقات السمات:
    • ملزمة::استنساخ
    • استنزاف::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • ربماUninit::write
    • المصفوفة::خريطة
    • العمليات::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomlement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomlement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • يتم استخدام السمة "const"، التي تحدد إمكانية استخدامها في أي سياق بدلاً من الثوابت، في الأسلوب str::from_utf8_unchecked.
  • تم تنفيذ المستوى الثالث من الدعم للنظام الأساسي powerpc64le-unknown-freebsd. يتضمن المستوى الثالث الدعم الأساسي، ولكن بدون اختبار تلقائي أو نشر إصدارات رسمية أو التحقق من إمكانية إنشاء التعليمات البرمجية.

المصدر: opennet.ru

إضافة تعليق