रस्ट प्रोग्रामिङ भाषा 1.42 रिलीज

प्रकाशित प्रणाली प्रोग्रामिङ भाषा रिलीज रस्ट १, मोजिला परियोजना द्वारा स्थापित। भाषा मेमोरी सुरक्षामा केन्द्रित छ, स्वचालित मेमोरी व्यवस्थापन प्रदान गर्दछ, र फोहोर सङ्कलन र प्रयोग नगरी उच्च कार्य समानान्तर प्राप्त गर्न उपकरणहरू प्रदान गर्दछ। runtime.

रस्टको स्वचालित मेमोरी व्यवस्थापनले विकासकर्तालाई पोइन्टर हेरफेरबाट मुक्त गर्दछ र निम्न-स्तर मेमोरी हेरफेरबाट उत्पन्न हुने समस्याहरूबाट बचाउँछ, जस्तै-मुक्त मेमोरी पहुँच, नल पोइन्टर डिरेरेन्सेस, बफर ओभररन्स, र यस्तै। पुस्तकालयहरू वितरण गर्न, संयोजन सुनिश्चित गर्न र परियोजनाद्वारा निर्भरताहरू व्यवस्थापन गर्न प्याकेज प्रबन्धकको विकास भइरहेको छ। कार्गो, तपाईंलाई एक क्लिकमा कार्यक्रमको लागि आवश्यक पुस्तकालयहरू प्राप्त गर्न अनुमति दिँदै। एक भण्डार पुस्तकालयहरू होस्ट गर्न समर्थित छ crates.io.

मुख्य नवाचारहरू:

  • थपियो поддержка шаблонов для сопоставления частей срезов (динамических массивов, slice). Если раньше допускались точные сопоставления, то теперь добавлена возможность использования конструкций с меткой «..» для охвата остающихся элементов массива. Например:

    fn foo(words: &[&str]) {
    match words {

    // проверяет начальные элементы массива с игнорированием
    следующих за ними элементов
    [«Hello», «World», «!», ..] => println!(«Hello World!»),

    // проверяет первые два элемента «Foo» и «Bar», а остальное не важно
    [«Foo», «Bar», ..] => println!(«Baz»),

    // игнорируем всё, но последний элемент должен быть «!».
    [.., «!»] => println!(«!!!»),

    // в срез start включаем всё, кроме последнего элемента, который должен быть «z»
    [start @ .., «z»] => println!(«starts with: {:?}», start),

    // в срез end помещаем всё, кроме первого элемента, который должен быть «a».
    [«a», end @ ..] => println!(«ends with: {:?}», end),

    rest => println!(«{:?}», rest),
    }
    }

  • Добавлен новый макрос «matches!», который принимает на входе выражение и шаблон, а возвращает «true», если шаблон соответствует выражению. В шаблоне возможно использование операций «|» и «if».

    match self.partial_cmp(other) {
    Some(Less) => true,
    _ => गलत,
    }

    matches!(self.partial_cmp(other), Some(Less))

    let foo = ‘f’;
    assert!(matches!(foo, ‘A’..=’Z’ | ‘a’..=’z’));

    let bar = Some(4);
    assert!(matches!(bar, Some(x) if x > 2));

  • В panic-сообщениях, выводимых при некорректном использовании
    типов Option и Result, теперь отражаются номера строк со ссылкой на код, осуществивший проблемный вызов, а не ссылки на код реализации вызова в libcore. Например, изменение затрагивает вызов unwrap и expect над Option::None или сбои при использовании unwrap_err, expect, expect_err и подобных методов для типа Result.

  • В пакетном менеджере Cargo обеспечена автоматическая подстановка «proc_macro crate» в блок «extern» для пакетов с процедурными макросами. Данное изменение позволяет применять директиву «use» к процедурным макросам без необходимости указания в коде «extern crate proc_macro;». Например, если в программе используется строка «use proc_macro::TokenStream;», то код теперь останется рабочим, если из него удалить «extern crate proc_macro;».
  • Расширены возможности стандартной библиотеки. В iter::Empty<T> थपियो поддержка Send и Sync для любых значений T.
    Вызовы Pin::{map_unchecked, map_unchecked_mut} डेलिभर गरियो от необходимости возвращать значение типа для реализации «Sized».
    В io::Cursor कार्यान्वयन गरियो PartialEq и Eq. Признак «const», определяющий возможность использования в любом контексте вместо констант, применён для метода Layout::new.

  • В разряд стабильных переведена новая порция API, в том числе стабилизированы CondVar::wait_while, CondVar::wait_timeout_while,
    DebugMap::key, DebugMap::value,
    ManuallyDrop::take,
    ptr::slice_from_raw_parts_mut и ptr::slice_from_raw_parts.

  • Объявлен устаревшим метод Error::description.
  • Обеспечен в второй уровень поддержи для платформ armv7a-none-eabi и riscv64gc-unknown-linux-gnu. Обеспечена поддержка стандартной библиотеки для платформы riscv64gc-unknown-linux-gnu.
    32-разрядные платформы Apple понижены до третьего уровня поддержки, который подразумевает базовую поддержку, но без автоматизированного тестирования и публикации официальных сборок. Понижение уровня поддержки обусловлено прекращением сопровождения компанией Apple 32-разрядных платформ.

स्रोत: opennet.ru

एक टिप्पणी थप्न