إصدار لغة البرمجة Rust 2021 (1.56)

تم نشر إصدار لغة برمجة النظام Rust 1.56، التي أسسها مشروع Mozilla، ولكن تم تطويرها الآن تحت رعاية منظمة Rust Foundation المستقلة غير الربحية. بالإضافة إلى رقم الإصدار العادي، تم تسمية الإصدار أيضًا باسم Rust 2021 ويمثل استقرارًا للتغييرات المقترحة على مدار السنوات الثلاث الماضية. سيكون Rust 2021 أيضًا بمثابة الأساس لزيادة الوظائف على مدى السنوات الثلاث المقبلة، على غرار الطريقة التي أصبح بها إصدار Rust 2018 الأساس لتطوير اللغة في السنوات الثلاث الماضية.

للحفاظ على التوافق، يمكن للمطورين استخدام التصنيفات "2015" و"2018" و"2021" في برامجهم، مما يسمح بربط البرامج بشرائح حالة اللغة المطابقة للإصدارات المحددة من Rust. تم تقديم الإصدارات لفصل التغييرات غير المتوافقة وتم تكوينها في البيانات التعريفية لحزم الشحن من خلال حقل "الإصدار" في قسم "[الحزمة]". على سبيل المثال، يتضمن إصدار "2018" الوظائف المستقرة اعتبارًا من نهاية عام 2018 ويغطي أيضًا جميع التغييرات الإضافية التي لا تنتهك التوافق. يتضمن إصدار 2021 أيضًا ميزات كسر قابلية التشغيل البيني المقترحة في الإصدار 1.56 الحالي وتمت الموافقة عليها للتنفيذ في المستقبل. بالإضافة إلى اللغة نفسها، يأخذ المحررون أيضًا في الاعتبار حالة الأدوات والوثائق.

حالات عدم التوافق الرئيسية المسجلة في Rust 2021:

  • التقاط منفصل في عمليات الإغلاق - يمكن لعمليات الإغلاق الآن التقاط أسماء الحقول الفردية بدلاً من المعرف بأكمله. على سبيل المثال، "|| ax + 1" سوف يلتقط فقط "ax" بدلاً من "a".
  • سمة IntoIterator للمصفوفات: array.into_iter() تسمح لك بالتكرار على عناصر المصفوفة حسب القيم، بدلاً من المراجع.
  • تم تغيير معالجة التعبيرات "|" في قواعد الماكرو (Boolean OR) في الأنماط - محدد ":pat" في التطابقات يحترم الآن "A |". ب".
  • يتضمن مدير حزمة الشحن بشكل افتراضي الإصدار الثاني من محلل الميزات، والذي ظهر دعمه في Rust 1.51.
  • تمت إضافة سمات TryFrom وTryInto وFromIterator إلى وحدة المكتبة القياسية التمهيدية.
  • الذعر!(..) والتأكيد!(expr, ..) تستخدم وحدات الماكرو الآن دائمًا format_args!(..) لتنسيق السلاسل، على غرار println!().
  • التعبيرات ident#، ident »..." و ident'...' محجوزة في بناء جملة اللغة.
  • تم نقل تحذيرات bare_trait_objects وellipsis_inclusive_range_patterns إلى الأخطاء.

الجديد في Rust 1.56:

  • في Cargo.toml، في قسم “[package]”، تمت إضافة حقل إصدار الصدأ، والذي يمكنك من خلاله تحديد الحد الأدنى من إصدار Rust المدعوم لحزمة الصناديق. إذا لم يتطابق الإصدار الحالي مع المعلمة المحددة، فسيتوقف Cargo عن العمل مع ظهور رسالة خطأ.
  • عند مطابقة النمط باستخدام تعبيرات "binding @ Pattern"، يتم توفير الدعم لتحديد الارتباطات الإضافية (على سبيل المثال، "let Matrix @ Matrix {row_len, .. } = get_matrix();").
  • تم نقل جزء جديد من واجهة برمجة التطبيقات إلى فئة المستقر ، بما في ذلك تم تثبيت طرق وتطبيقات السمات:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • النواة::ذعر::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • فيك ::shrink_to
    • سلسلة ::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap ::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • يتم استخدام السمة "const"، التي تحدد إمكانية استخدامها في أي سياق بدلاً من الثوابت، في الوظائف
    • الأمراض المنقولة جنسيا::ميم::تحويل
    • [ت]::أولا
    • [ت]::split_first
    • [ت]::أخيرًا
    • [T]::split_last
  • تم تحويل المترجم لاستخدام الإصدار 13 من LLVM.
  • تم تنفيذ المستوى الثاني من الدعم لمنصة aarch64-apple-ios-sim والمستوى الثالث لمنصات powerpc-unknown-freebsd وriscv32imc-esp-espidf. يتضمن المستوى الثالث الدعم الأساسي، ولكن بدون اختبار تلقائي أو نشر إصدارات رسمية أو التحقق من إمكانية إنشاء التعليمات البرمجية.

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

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

المصدر: opennet.ru

إضافة تعليق