نشرت الإصدار 1.47 من لغة برمجة النظام Rust، أسسها مشروع موزيلا. تركز اللغة على سلامة الذاكرة، وتوفر إدارة تلقائية للذاكرة، وتوفر وسيلة لتحقيق توازي المهام العالية دون استخدام جامع القمامة и وقت التشغيل (يتلخص وقت التشغيل في التهيئة الأساسية وصيانة المكتبة القياسية).
تعمل إدارة الذاكرة التلقائية في Rust على التخلص من الأخطاء عند معالجة المؤشرات والحماية من المشكلات الناشئة عن معالجة الذاكرة ذات المستوى المنخفض، مثل الوصول إلى منطقة الذاكرة بعد تحريرها، أو إلغاء مرجعيات المؤشر الفارغة، أو تجاوزات المخزن المؤقت، وما إلى ذلك. يجري تطوير مدير الحزم لتوزيع المكتبات وضمان التجميع وإدارة التبعيات بواسطة المشروع. حمولة. يتم دعم المستودع لاستضافة المكتبات الصناديق.
نفذت الدعم للأنواع صفائف اي حجم. في السابق، نظرًا لعدم القدرة على تحديد الوظائف العامة لجميع القيم الصحيحة، قدمت المكتبة القياسية دعمًا مدمجًا للسمات فقط للمصفوفات التي يصل حجمها إلى 32 عنصرًا (تم تحديد السمات لكل حجم بشكل ثابت). بفضل إنشاء وظيفة الجينات العامة الثابتة ("الأسماء العامة const")، أصبح من الممكن تحديد الوظائف العامة لأي حجم مصفوفة، لكنها لم يتم تضمينها بعد في ميزات اللغة المستقرة، على الرغم من أنها يتم تنفيذها في المترجم ويتم استخدامها الآن متضمن في المكتبة القياسية لصفات الصفيف من أي حجم.
على سبيل المثال، ستطبع البنية التالية في Rust 1.47 محتويات المصفوفة، على الرغم من أنها كانت ستؤدي إلى حدوث خطأ في السابق:
fn main () {
دع xs = [0؛ 34]؛
println!("{:?}"، xs);
}
يتم توفير إخراج آثار أقصر (أثر خلفي)، والإخراج في حالات الطوارئ. يتم استبعاد العناصر التي لا تهم في معظم المواقف، ولكنها تشوش المخرجات وتشتت الانتباه عن الأسباب الرئيسية للمشكلة، من التتبع. لإرجاع التتبع الكامل، يمكنك استخدام متغير البيئة "RUST_BACKTRACE=full". على سبيل المثال، بالنسبة للكود
fn main () {
ذعر!()؛
}
في السابق، كان يتم إخراج التتبع على 23 مرحلة، ولكن الآن سيتم تقليصه إلى
3 خطوات تسمح لك بفهم الجوهر على الفور:
أصيب الخيط "الرئيسي" بالذعر من "الذعر الصريح"، src/main.rs:2:5
التتبع الخلفي للمكدس:
0: الأمراض المنقولة جنسيا::panicking::begin_panic
في /rustc/d…d75a/library/std/src/panicking.rs:497
1: الملعب::رئيسي
في ./src/main.rs:2
2: النواة::ops::function::FnOnce::call_once
في /rustc/d…d75a/library/core/src/ops/function.rs:227
تم تحديث المترجم Rustc للبناء باستخدام LLVM 11 (الصدأ الاستخدامات LLVM كواجهة خلفية لـ رمز الجيل). في الوقت نفسه، يتم الاحتفاظ بالقدرة على البناء باستخدام LLVMs الأقدم، حتى الإصدار 8، ولكن افتراضيًا (في Rust-lang/llvm-project) يستخدم الآن LLVM 11. ومن المتوقع إصدار LLVM 11 في الأيام المقبلة.
على نظام التشغيل Windows، يوفر المترجم Rustc الدعم لتمكين عمليات التحقق من سلامة تدفق التحكم (Control Flow Guard)، والتي يتم تنشيطها باستخدام علامة "-C control-flow-guard". على الأنظمة الأساسية الأخرى، يتم تجاهل هذه العلامة في الوقت الحالي.
تم نقل جزء جديد من واجهات برمجة التطبيقات إلى الفئة المستقرة، بما في ذلك المستقرة
الهوية::new_raw،
النطاق::is_empty،
النطاق شامل::is_empty,
النتيجة::as_deref,
النتيجة::as_deref_mut,
فيك::تسرب،
المؤشر::offset_from،
f32::TAU و
f64 :: تاو.
يتم استخدام السمة "const" التي تحدد إمكانية استخدامها في أي سياق بدلاً من الثوابت، في الطرق: