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

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

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

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

  • تمت إضافة القدرة على استخدام وحدات ماكرو شبيهة بالوظيفة داخل السمات (وحدات الماكرو الإجرائية ووحدات الماكرو التي تم إنشاؤها باستخدام الماكرو "macro_rules!"). يتم تمييز وحدات الماكرو هذه عن الوظائف بالرمز "!" بعد الاسم (الماكرو!(...)) واستبدال نص مصدر الماكرو بدلاً من إنشاء استدعاء دالة. يمكن أن يكون استدعاء وحدات الماكرو ضمن السمات مفيدًا لتضمين محتوى من ملفات أخرى في توثيق التعليقات. على سبيل المثال، لإدراج محتويات ملف README ونتيجة تنفيذ البرنامج النصي، يمكنك تحديد: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR" ")، "/generated.rs" )] تم إنشاء التعديل؛
  • تم تثبيت وظائف المترجم المضمنة (Intrinsics) لمنصة Wasm32، مما يسمح باستخدام تعليمات SIMD في WebAssembly. تتوفر معظم الوظائف، مثل v128_bitselect، في الوضع "الآمن"، ولكن بعض الوظائف التي تعمل مع المؤشرات (على سبيل المثال، v128_load) تظل "غير آمنة".
  • لقد عاد الاستخدام الافتراضي للتجميع التزايدي، مما يسمح لك بإعادة بناء الأجزاء التي تم تغييرها من التعليمات البرمجية فقط، مما قد يقلل بشكل كبير من الوقت الذي يستغرقه إنشاء مشروع عند إعادة الترجمة بعد إجراء تغييرات طفيفة. تم تعطيل التجميع التزايدي في الإصدار 1.52.1 بسبب الأخطاء المخفية التي ظهرت بعد إضافة فحص إضافي لتحميل البيانات من ذاكرة التخزين المؤقت على القرص.
  • تم نقل جزء جديد من واجهات برمجة التطبيقات إلى الفئة المستقرة، بما في ذلك ما يلي المستقر:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • القوس::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • تمت إضافة خيارات إلى شجرة البضائع: "-Prune " لإزالة حزمة من الرسم البياني للتبعية، "-عمق" لعرض عناصر مستوى تداخل معين فقط في شجرة التبعية، "-edges no-proc-macro" لإخفاء تبعيات الماكرو الإجرائية.

المصدر: opennet.ru

إضافة تعليق