العودة

Rust 1.100.0 يصدر مع نوع never وواجهة API للمخصصات وتغييرات Cargo
SiTech AI Team2 دقيقة قراءة

Rust 1.100.0 يصدر مع نوع never وواجهة API للمخصصات وتغييرات Cargo

Rust 1.100.0 متاح عبر rustup ويثبت نوع never وأجزاء من واجهة API للمخصصات وcore::mem::DropGuard وcore::mem::conjure_zst وتحذيرات Cargo للمعتمدات غير المستخدمة وتغييرات cache البناء وحل عمر النشر الأدنى.

أصبح Rust 1.100.0 متاحا عبر rustup update stable. يثبت هذا الإصدار نوع never وأجزاء من واجهة API للمخصصات في core وcore::mem::DropGuard وcore::mem::conjure_zst، إضافة إلى عدة ميزات في Cargo، منها الإبلاغ عن المعتمدات غير المستخدمة وتغييرات تخطيط دليل البناء وفحوصات عمر النشر الأدنى.

نوع never يصبح مستقرا

بعد 10 سنوات وخمس محاولات تثبيت فاشلة، أصبح نوع never، المكتوب !، مستقرا. وهو النوع غير المأهول القياسي للحسابات المتباعدة، ويمكن تحويله إلى أي نوع آخر (coerce). يسمح هذا الإصدار أيضا بتسمية ! في أي موضع، بما في ذلك Result، ويغير Infallible ليكون مرادفا (alias) إلى نوع never. في editions قبل 2024، يتغير fallback نوع never من () إلى !، وقد يؤثر ذلك في شفرة نادرة ويجعل المزيد من الشفرة يبدو غير قابل للوصول.

واجهة API للمخصصات وDropGuard

يثبت Rust 1.100.0 أجزاء core من allocator_api، مما يتيح مخصصات مخصصة عبر سمة Allocator مع Vec وBox. كما يقدّم هذا الإصدار core::mem::DropGuard، الذي يشغل closure عند drop ويدعم dismiss لإرجاع المتغير المحمي من دون تشغيل destructor. ويوفر core::mem::conjure_zst طريقة unsafe مخصصة لإنشاء قيم من الأنواع صفرية الحجم (zero-sized types).

تحسينات Cargo

تبلغ Cargo الآن عن المعتمدات غير المستخدمة، وتتحكم في ذلك عبر جدول [lints.cargo]، وتظهر التحذيرات عند بناء جميع أهداف البناء الممكنة. لا يظهر أي تحذير للمعتمدات dev-dependencies غير المستخدمة. يطبق دليل البناء الآن hash تكوين البناء بشكل متسق عبر تنظيم الدلائل حول خطوات البناء ونقل hash إلى الدليل parent. كما يثبت Cargo حل عمر النشر الأدنى، مما يتيح للمستخدمين تعيين global-min-publish-age في .cargo/config.toml وتجاوز الإصدارات المنشورة أحدث من العمر المكون. يتجاهل cargo install هذا الإعداد للحزمة المثبتة (crate) ومعتمداتها.

واجهات API المثبتة وتغييرات أخرى

يضيف الإصدار العديد من واجهات API المثبتة، بما في ذلك Box::new_in وVec::new_in وChild::main_thread_handle وbool::toggle وBox::take وBox::map وRc::map وArc::map ومساعدات trim لـ str وslice وPath::trim_prefix وVec::from_fn وغيرها المدرجة في ملاحظات الإصدار. توثق التغييرات في Rust وCargo وClippy بشكل منفصل، وشكر فريق Rust المساهمين.

المصادر: blog.rust-lang.org

SiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.