يسر فريق Rust أن يعلن عن إصدار النسخة الجديدة 1.41.0. Rust هي لغة برمجة تتيح للجميع إنشاء برامج موثوقة وفعالة.
إذا قمت بتثبيت الإصدار السابق من Rust باستخدام أدوات rustup
، فأنت بحاجة إلى تشغيل الأمر التالي للترقية إلى الإصدار 1.41.0:
rustup update stable
إذا لم تكن قد قمت بتثبيته بالفعل rustup
، يمكنك تثبيته من الصفحة المقابلة على موقعنا ، وكذلك الاطلاع على ملاحظات الإصدار التفصيلية على GitHub.
ما هو مدرج في الإصدار المستقر 1.41.0
تتمثل الابتكارات الرئيسية لـ Rust 1.41.0 في تخفيف القيود المفروضة على تنفيذ السمات والتحسينات ، ويكون cargo install
تنسيق الملف الجديد Cargo.lock
أكثر ملاءمة للعمل به git
، وضمانات جديدة لأولئك Box<T>
المرتبطين بـ FFI. انظر ملاحظات الإصدار لمزيد من المعلومات.
تخفيف القيود على تنفيذ السمات
لمنع الأعطال في النظام البيئي ، عندما تضيف التبعية تطبيقات سمة جديدة ، يستخدم Rust قاعدة اليتيم . خلاصة القول هي أن تنفيذ النوع مسموح به فقط إذا كان النوع أو النوع الذي ينفذه محليًا ، أي المحددة في الصندوق الحالي. ومع ذلك ، فإنه معقد للغاية عند استخدام التعميمات.
قبل الصدأ 1.41.0 ، كانت هذه القاعدة صارمة للغاية ، مما يتعارض مع التكوين. على سبيل المثال ، افترض أن الحزمة الخاصة بك تطبق بنية BetterVec<T>
، وتريد أن تكون قادرًا على تحويلها Vec<T>
من المكتبة القياسية. ستكتب الرمز التالي:
impl<T> From<BetterVec<T>> for Vec<T> {
}
... وهو مثال على نمط:
impl<T> ForeignTrait<LocalType> for ForeignType<T> {
}
Rust 1.40.0 impl
, From
Vec
, . , newtype, .
From
Vec
, ( From
) . , Rust 1.41.0 impl
.
RFC.
cargo install
cargo install
. CLI-, Rust.
Rust 1.41.0, cargo install
, . --force
, .
, Cargo Cargo.lock
, . , .
Rust 1.41.0 , . lock
-, . , , PR, .
Box<T>
FFI
Rust 1.41.0, , Box<T>
, T: Sized
, ABI C (T*
). , extern "C"
Rust C, Rust Box<T>
- T
, T*
C. , C :
struct Foo* foo_new(void);
void foo_delete(struct Foo*);
… Rust :
#[repr(C)]
pub struct Foo;
#[no_mangle]
pub extern "C" fn foo_new() -> Box<Foo> {
Box::new(Foo)
}
#[no_mangle]
pub extern "C" fn foo_delete(_: Option<Box<Foo>>) {}
, , Box<T>
T*
ABI, Box<T>
-null, . , — Box
', .
: Box<T>
, C, Rust. C. Box<T>
, C T*
.
, Box<T>
.
Rust 1.41.0, :
Rust 1.41.0 32- Apple, i686-apple-darwin
. Rust 1.42.0 .
.
, Cargo Clippy . MIR, : "Inside Rust".
1.41.0
, Rust 1.41.0. , !
Rust - .
andreevlex, blandger, funkill, P0lunin nlinker.