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

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

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

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

  • Убрана привязка к порядку выполнения команд «cargo check» и «cargo clippy». Раньше вызов «cargo clippy» после «cargo check» не приводил к запуску утилиты clippy (linter) из-за отсутствия разделения кэшей для данных режимов проверки. Теперь эта проблема решена и порядок вызова «cargo clippy» и «cargo check» перестал иметь значение.
  • API चा एक नवीन भाग स्थिर श्रेणीमध्ये हस्तांतरित केला गेला आहे, ज्यामध्ये खालील पद्धती स्थिर केल्या गेल्या आहेत:
    • Arguments::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • "const" विशेषता, जी स्थिरांकांऐवजी कोणत्याही संदर्भात वापरण्याची शक्यता निर्धारित करते, पद्धतींमध्ये वापरली जाते:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Добавлена lint-проверка unsafe_op_in_unsafe_fn для определения обрамления unsafe-блоками unsafe-кода, используемого в unsafe-функциях.
  • Разрешено приведение mutable-указателей на массивы в форму указателей на тип, что и у элемента массива. let mut x: [usize; 2] = [0, 0]; let p = &mut x as *mut usize; let p = &mut x as *const usize;
  • В clippy (linter) добавлено 9 новых проверок.
  • В пакетном менеджере cargo для пакетов реализована поддержка поля «manifest_path» в JSON. В репозиторий crates.io добавлена поддержка указания информации о лицензиях в формате SPDX 3.11.
  • Разрешено указание нескольких фильтров при выполнении тестов, например запуск «cargo test — foo bar» запустит все тесты, соответствующие маскам «foo» и «bar».
  • Применяемый по умолчанию инструментарий LLVM обновлён до версии LLVM 12.
  • Реализован третий уровень поддержки для платформ s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl и powerpc-unknown-openbsd. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.

स्त्रोत: opennet.ru

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