زنگ 1.93

نسخه پایدار بعدی کامپایلر و استاندارد زبان Rust منتشر شد.

به‌روزرسانی کتابخانه داخلی musl به نسخه ۱.۲.۵

پلتفرم‌های هدف مختلف *-linux-musl اکنون با musl 1.2.5 ارائه می‌شوند. این امر در درجه اول بر روی ساخت‌های استاتیک musl برای x86_64، aarch64 و powerpc64le که قبلاً از نسخه 1.2.3 استفاده می‌کردند، تأثیر می‌گذارد. این به‌روزرسانی شامل موارد زیر است: چندین رفع اشکال و بهبودو همچنین یک تغییر «ناگهانی» که بر اکوسیستم Rust تأثیر می‌گذارد.

انگیزه اصلی برای این به‌روزرسانی، بهبودهای قابل توجه در تحلیلگر DNS musl بود که در نسخه ۱.۲.۴ معرفی و در نسخه ۱.۲.۵ اصلاح شد. هنگام استفاده از musl برای لینک‌دهی استاتیک، این امر باید قابلیت اطمینان توابع شبکه را در فایل‌های باینری قابل حمل لینوکس، به ویژه هنگام کار با رکوردهای DNS بزرگ و سرورهای نام بازگشتی، بهبود بخشد.

با این حال، نسخه ۱.۲.۴ همچنین شامل موارد زیر است: تغییر حیاتیحذف چندین نماد سازگاری منسوخ شده که توسط libc crate در GitHub استفاده می‌شدند. رفع این مشکل. در ژوئن ۲۰۲۳ (۲.۵ سال پیش) در libc 0.2.146 منتشر شد.و ما معتقدیم که به اندازه کافی گسترش یافته است که می‌توانیم تغییراتی در پلتفرم‌های هدف Rust ایجاد کنیم.

اجازه دادن به تخصیص‌دهنده سراسری برای استفاده از TLS

Rust 1.93 اجزای داخلی کتابخانه استاندارد را تنظیم می‌کند و به تخصیص‌دهنده‌های سراسری نوشته شده در Rust اجازه می‌دهد تا از std::thread_local! و std::thread::current بدون خطر ورود مجدد با استفاده از تخصیص‌دهنده سیستم استفاده کنند. جزئیات را می‌توانید در مستندات کتابخانه استاندارد Rust بیابید.

ویژگی‌های cfg در خطوط asm!

پیش از این، اگر بخش‌های جداگانه‌ای از یک بخش اسمبلی درون‌خطی نیاز به کامپایل شرطی cfg داشتند، کل بلوک asm! باید کپی می‌شد. در نسخه ۱.۹۳، ویژگی cfg را می‌توان برای دستورالعمل‌های جداگانه درون بلوک اعمال کرد:

asm!( // یا global_asm! یا naked_asm! "نه", #[cfg(target_feature = "sse2")] "نه", // ... #[cfg(target_feature = "sse2")] a = const 123, // فقط روی sse2 استفاده می‌شود);

API های زیر به دسته پایدار منتقل شده اند:

<[شایدUninit ]>::assume_init_drop <[MaybeUninit ]>::assume_init_ref` <[MaybeUninit ]>::assume_init_mut` <[MaybeUninit ]>::write_copy_of_slice` <[MaybeUninit ]>::write_clone_of_slice` String::into_raw_parts` Vec::into_raw_parts` ::بررسی‌نشده_نگاشت ::بررسی‌نشده_shl` ::بررسی‌نشده_shr` ::بررسی‌نشده_shl` ::unchecked_shr` <[T]>::as_array` <[T]>::as_array_mut` <*const [T]>::as_array` <*mut [T]>::as_array_mut` VecDeque::pop_front_if` VecDeque::pop_back_if` Duration::from_nanos_u128` char::MAX_LEN_UTF8` char::MAX_LEN_UTF16` std::fmt::from_fn` std::fmt::FromFn`

منبع: linux.org.ru

اضافه کردن نظر