Rust 1.66 پروگرامنگ ٻولي رليز

رسٽ 1.66 عام مقصدي پروگرامنگ ٻولي جو رليز، جيڪو Mozilla پروجيڪٽ پاران قائم ڪيو ويو، پر ھاڻي ترقي يافته غير منافع بخش تنظيم Rust Foundation جي سرپرستي ھيٺ، شايع ڪيو ويو آھي. ٻولي ميموري جي حفاظت تي ڌيان ڏئي ٿي ۽ گاربيج ڪليڪٽر ۽ رن ٽائم جي استعمال کان پاسو ڪندي اعليٰ نوڪري جي برابري حاصل ڪرڻ جا وسيلا مهيا ڪري ٿي (رن ٽائم کي معياري لائبريري جي بنيادي شروعات ۽ سار سنڀال لاءِ گھٽ ڪيو ويو آهي).

رسٽ جي ميموري هينڊلنگ جا طريقا ڊولپر کي غلطين کان بچائيندا آهن جڏهن پوائنٽرز کي هٿي وٺرائيندا آهن ۽ انهن مسئلن کان بچائيندا آهن جيڪي گهٽ-سطح جي ميموري هينڊلنگ جي ڪري پيدا ٿيندا آهن، جهڙوڪ ميموري ايريا کي آزاد ٿيڻ کان پوءِ رسائي حاصل ڪرڻ، نول پوائنٽرز کي رد ڪرڻ، بفر اووررن وغيره وغيره. لائبريرين کي ورهائڻ، تعميرات مهيا ڪرڻ ۽ انحصار کي منظم ڪرڻ، پروجيڪٽ ڪارگو پيڪيج مينيجر کي ترقي ڪري ٿو. crates.io مخزن لائبريرين جي ميزباني لاءِ سپورٽ ڪئي وئي آهي.

ميموري حفاظت فراهم ڪئي وئي آهي زنگ واري وقت تي ريفرنس چيڪنگ ذريعي، اعتراض جي ملڪيت جي ٽريڪ رکڻ، اعتراض جي زندگين جي ٽريڪ رکڻ (اسڪوپس)، ۽ ڪوڊ جي عمل جي دوران ميموري رسائي جي صحيحيت جو جائزو وٺڻ. زنگ انٽيجر اوور فلوز جي خلاف پڻ تحفظ فراهم ڪري ٿو، استعمال ڪرڻ کان اڳ متغير قدرن جي لازمي شروعات جي ضرورت آهي، معياري لائبريري ۾ غلطين کي بهتر نموني سان سنڀاليندو آهي، ڊفالٽ طور ناقابل قابل حوالن ۽ متغيرن جي تصور کي لاڳو ڪري ٿو، منطقي غلطين کي گھٽائڻ لاءِ مضبوط جامد ٽائپنگ پيش ڪري ٿو.

مکيه جدت:

  • В перечислениях c целочисленными представлениями (атрибутом «#[repr(Int)]») разрешено явное указание дискриминанта (номера варианта в перечислении), даже если перечисление содержит поля. #[repr(u8)] enum Foo { A(u8), # дискриминант 0 B(i8), # дискриминант 1 C(bool) = 42, # дискриминант 42 }
  • Добавлена функция core::hint::black_box, которая просто возвращает назад принятое значение. Так как компилятор считает, что данная функция выполняет определённое действие, функцию black_box можно использовать для отключения оптимизации компилятором циклов при проведении тестирования производительности кода или при изучении генерируемого машинного кода (чтобы компилятор не посчитал код неиспользуемым и не убрал его). Например, в примере ниже указание black_box(v.as_ptr()) не позволяет компилятору считать, что вектор v не используется. use std::hint::black_box; fn push_cap(v: &mut Vec) { for i in 0..4 { v.push(i); black_box(v.as_ptr()); } }
  • В пакетном менеджере «cargo» предложена команда «remove», позволяющая из командной строки удалять зависимости из манифеста Cargo.toml.
  • API جو هڪ نئون حصو مستحڪم جي درجي ۾ منتقل ڪيو ويو آهي، بشمول طريقن ۽ عملن جي خاصيتن کي مستحڪم ڪيو ويو آهي:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{first, last, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • Реализации Add AsFd для типов блокировок stdio при применении WASI.
    • impl TryFrom<Vec<T>> для Box<[T; N]>
    • core::hint::black_box
    • Duration::try_from_secs_{f32,f64}
    • Option::unzip
    • std::os::fd
  • В шаблонах разрешено применение диапазонов «..X» и «..=X».
  • При сборке фронтэнда компилятора rustc и бэкенда LLVM задействованы режимы оптимизации LTO (Link Time Optimization) и BOLT (Binary Optimization and Layout Tool), позволяющие увеличить производительность результирующего кода и снизить потребление памяти.
  • Реализован третий уровень поддержки для платформ armv5te-none-eabi и thumbv5te-none-eabi. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
  • Добавлена поддержка связывания с универсальными библиотеками macOS.

Дополнительно можно отметить включение в кодовую базу GCC фронтэнда компилятора языка Rust (gccrs). Фронтэнд включён в ветку GCC 13, релиз которой состоится в мае 2023 года. Начиная с GCC 13 штатный инструментарий GCC сможет использоваться для компиляции программ на языке Rust без необходимости установки компилятора rustc, построенного с использованием наработок LLVM. Реализация Rust в GCC 13 будет иметь статус бета-версии, не включаемой по умолчанию.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو