Rust 1.67 प्रोग्रामिंग भाषा प्रकाशन

Mozilla प्रकल्पाद्वारे स्थापित, परंतु आता स्वतंत्र ना-नफा संस्था Rust Foundation च्या संरक्षणाखाली विकसित केलेली Rust 1.67 सामान्य-उद्देशीय प्रोग्रामिंग भाषा प्रकाशित करण्यात आली आहे. भाषा मेमरी सुरक्षिततेवर लक्ष केंद्रित करते आणि कचरा गोळा करणारे आणि रनटाइमचा वापर टाळून उच्च जॉब समांतरता प्राप्त करण्याचे साधन प्रदान करते (रनटाइम मूलभूत प्रारंभ आणि मानक लायब्ररीची देखभाल करण्यासाठी कमी केला जातो).

रस्टच्या मेमरी हाताळण्याच्या पद्धती पॉइंटर हाताळताना विकासकाला त्रुटींपासून वाचवतात आणि निम्न-स्तरीय मेमरी हाताळणीमुळे उद्भवणाऱ्या समस्यांपासून संरक्षण करतात, जसे की मेमरी एरिया मोकळा झाल्यानंतर त्यात प्रवेश करणे, नल पॉइंटर्सचा संदर्भ घेणे, बफर ओव्हररन्स इ. लायब्ररी वितरीत करण्यासाठी, बिल्ड प्रदान करण्यासाठी आणि अवलंबित्व व्यवस्थापित करण्यासाठी, प्रकल्प कार्गो पॅकेज व्यवस्थापक विकसित करतो. crates.io रेपॉजिटरी होस्टिंग लायब्ररीसाठी समर्थित आहे.

संदर्भ तपासणी, ऑब्जेक्टच्या मालकीचा मागोवा ठेवणे, ऑब्जेक्ट लाइफटाइम (स्कोप) चा मागोवा ठेवणे आणि कोड एक्झिक्यूशन दरम्यान मेमरी ऍक्सेसच्या अचूकतेचे मूल्यांकन करणे याद्वारे मेमरी सुरक्षितता रस्टमध्ये कंपाइल वेळी प्रदान केली जाते. रस्ट पूर्णांक ओव्हरफ्लोपासून संरक्षण देखील प्रदान करते, वापरण्यापूर्वी व्हेरिएबल व्हॅल्यूजचे अनिवार्य आरंभ आवश्यक आहे, मानक लायब्ररीमध्ये त्रुटी चांगल्या प्रकारे हाताळते, डिफॉल्टनुसार अपरिवर्तनीय संदर्भ आणि व्हेरिएबल्सची संकल्पना लागू करते, तार्किक त्रुटी कमी करण्यासाठी मजबूत स्थिर टायपिंग ऑफर करते.

मुख्य नवकल्पना:

  • Для функций async с Future::Output реализована возможность указания аннотаций «#[must_use]», включающих вывод предупреждения в случае игнорирования возвращаемого значения, что помогает выявить ошибки, вызванные предположением, что функция изменит значения, а не вернёт новое значение. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } warning: unused output of future returned by `bar` that must be used —> src/lib.rs:5:5 | 5 | bar().await; | ^^^^^^^^^^^ | = note: `#[warn(unused_must_use)]` on by default
  • Обновлена реализация FIFO-очередей std::sync::mpsc (multi-producer single-consumer), которая переведена на использование модуля crossbeam-channel с сохранением прежнего API. Новая реализация отличается решением ряда проблем, более высокой производительностью и упрощением сопровождения кода.
  • API चा एक नवीन भाग स्थिर श्रेणीमध्ये हलविला गेला आहे, ज्यामध्ये पद्धती आणि गुणधर्मांची अंमलबजावणी स्थिर केली गेली आहे:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {integer}::ilog2
    • {integer}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • "const" विशेषता, जी स्थिरांकांऐवजी कोणत्याही संदर्भात वापरण्याची शक्यता निर्धारित करते, फंक्शन्समध्ये वापरली जाते:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Реализован третий уровень поддержки для использования Rust в ядре Linux (linuxkernel), а также для платформ Sony PlayStation 1 (mipsel-sony-psx), PowerPC с AIX (powerpc64-ibm-aix), QNX Neutrino RTOS (aarch64-unknown-nto-qnx710, x86_64-pc-nto-qnx710). Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.

Дополнительно можно отметить публикацию компанией ARM патчей, позволяющих использовать язык Rust для разработки драйверов и модулей ядра Linux, собираемых для систем на базе архитектуры AArch64.

स्त्रोत: opennet.ru

एक टिप्पणी जोडा