يسر فريق تطوير Rust الإعلان عن إصدار نسخة جديدة من Rust ، 1.33.0. Rust هي لغة برمجة تمكن الجميع من إنشاء برامج موثوقة وفعالة.
إذا كان لديك إصدار سابق من Rust مثبتًا باستخدام rustup
، ثم لترقية Rust إلى الإصدار 1.33.0 ، ما عليك سوى القيام بما يلي:
$ rustup update stable
إذا لم تكن قد قمت بالفعل بتثبيت rustup
، فيمكنك تثبيته من الصفحة المقابلة لموقعنا على الويب. ملاحظات الإصدار المفصلة عن Rust 1.33.0 متوفرة على GitHub.
ما هو مدرج في الإصدار المستقر 1.33.0
التحسينات الرئيسية لهذا الإصدار: التوسع الكبير في قدرات const fn
وتحقيق الاستقرار في واجهة برمجة تطبيقات Pin الجديدة.
تمديد const fn
const fn
قادر الآن على فعل المزيد ، وهي:
- مطابقة النقش غير المشروط (غير القابل للدحض) (على سبيل المثال ،
const fn foo((x, y): (u8, u8)) { ... }
) let
الروابط (على سبيل المثال ، let x = 1;
)- mutable
let
bindings (على سبيل المثال let mut x = 1;
) - تعبيرات التعيينات (على سبيل المثال
x = y
) ومشغلي التعيينات (على سبيل المثال x += y
) ، بما في ذلك التعيينات إلى الإسقاطات (على سبيل المثال ، حقل بنية أو نتيجة لمشغل فهرسة - x[3] = 42
) - عبارات التعبير (على سبيل المثال
3;
)
يمكنك الآن استدعاء "const غير آمن fn" من "const fn" ، على سبيل المثال:
const unsafe fn foo() -> i32 { 5 } const fn bar() -> i32 { unsafe { foo() } }
بفضل هذه التحسينات ، أصبح من الممكن الإعلان عن عدد ثابت من وظائف المكتبة القياسية. وهي مدرجة أدناه في قسم المكتبة.
دبوس API
تقدم هذه المشكلة آلية جديدة للغة مقدمة نوع الأمراض المنقولة جنسيا :: دبوس :: دبوس ونوع علامة . يتم وصف الفكرة الرئيسية بالتفصيل في وثائق "std :: pin" من الوحدة :
قد يكون من المفيد في بعض الأحيان منع الكائن من الحركة ، أي ضمان ثبات عنوانه في الذاكرة. السيناريو الرئيسي لاستخدام هذه الميزة هو بنيات مرجعية ذاتية ، لأن نقل هذه الكائنات سيؤدي إلى مؤشرات غير صالحة ، مما قد يؤدي إلى سلوك غير محدد (UB).
يضمن Pin<P>
أن الكائن المشار إليه بواسطة أي مؤشر من النوع P
له موقع ثابت في الذاكرة ، أي لا يمكن نقله ولا يمكن تحرير ذاكرته. وتسمى هذه القيم "مثبت".
من المتوقع أن يتم استخدام هذه الآلية بشكل أساسي من قبل مؤلفي المكتبات ، لذلك لن نتعمق في التفاصيل الآن (والتي يمكن العثور عليها في الوثائق الموجودة على الرابط أعلاه). ومع ذلك ، يعد تثبيت واجهة برمجة التطبيقات هذه حدثًا مهمًا لجميع مستخدمي Rust ، لأنه يمثل خطوة أساسية نحو async
/ await
المتوقع للغاية. يمكن مراقبة حالة العمل المتبقي في هذا الاتجاه في areweasyncyet.rs .
استيراد كـ "_"
يمكنك الآن استيراد كيانات كـ "_" . يسمح لك هذا باستيراد تطبيق النوع دون إدخال اسمه في مساحة الاسم الحالية ، على سبيل المثال:
use std::io::Read as _;
انظر ملاحظات الإصدار لمزيد من التفاصيل.
استقرار المكتبة القياسية
فيما يلي قائمة بكل شيء أصبح ثابتًا:
بالإضافة إلى ذلك ، يتم تثبيت واجهات برمجة التطبيقات التالية:
انظر ملاحظات الإصدار لمزيد من التفاصيل.
تحسينات البضائع
يقوم Cargo الآن بإعادة تجميع الصندوق إذا تم تعديل أحد ملفاته أثناء الإنشاء الأولي.
انظر ملاحظات الإصدار لمزيد من التفاصيل.
Crates.io
كما أعلن سابقًا ، بدءًا من هذا الإصدار ، سيتطلب crates.io عنوان بريد إلكتروني للتأكيد لنشر الصناديق. بدءًا من 2019-03-01 00:00 بالتوقيت العالمي ، سيفشل تنفيذ cargo publish
مع الحسابات بدون بريد تم التحقق منه.
هذا مطلوب لتلبية متطلبات قانون الألفية الجديدة لحقوق طبع ونشر المواد الرقمية . إذا لم تلاحظ التحذيرات حول هذا الموضوع التي كتبتها البضائع في الإصدارات الأخيرة ، فانتقل إلى صناديق البريد للإشارة إلى بريدك وتأكيده . لن يتم نشر عنوان المراسلة هذا مطلقًا وسيُستخدم حصريًا في الوظائف المباشرة لـ crates.io.
المطورين 1.33.0
خلق الكثير من الناس سويًا 1.33. لم نتمكن من إكمال العمل بدون كل واحد منكم. شكرا لك