רוסט 1.67 פּראָגראַממינג שפּראַך מעלדונג

די מעלדונג פון דער גענעראַל-צוועק פּראָגראַממינג שפּראַך Rust 1.67, געגרינדעט דורך די מאָזיללאַ פּרויעקט, אָבער איצט דעוועלאָפּעד אונטער די אָוספּיסיז פון די פרייַ נאַן-נוץ אָרגאַניזאַציע Rust Foundation, איז ארויס. די שפּראַך איז פאָוקיסט אויף זיקאָרן זיכערקייַט און גיט די מיטל צו דערגרייכן הויך פּאַראַלעליזאַם אין אַרבעט דורכפירונג, און ויסמיידן די נוצן פון אַ מיסט קאַלעקטער און רונטימע (רונטימע איז רידוסט צו יקערדיק יניטיאַליזיישאַן און וישאַלט פון די נאָרמאַל ביבליאָטעק).

ראַסט ס זכּרון פאַרוואַלטונג טעקניקס באַפרייַען די דעוועלאָפּער פון טייַטל מאַניפּיאַליישאַן ערראָרס און באַשיצן קעגן פּראָבלעמס וואָס שטייען פֿון נידעריק-מדרגה זכּרון מאַניפּיאַליישאַן, אַזאַ ווי נאָך-פריי אַקסעס, נאַל טייַטל דיפעראַנסיז, באַפער אָוווערראַנז, און די ווי. צו פאַרשפּרייטן לייברעריז, ענשור פֿאַרזאַמלונג און פירן דיפּענדאַנסיז, די פּרויעקט איז דעוועלאָפּינג די קאַרגאָ פּעקל פאַרוואַלטער. די 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
  • די "קאָנסט" אַטריביוט, וואָס דיטערמאַנז די מעגלעכקייט פון ניצן עס אין קיין קאָנטעקסט אַנשטאָט פון קאַנסטאַנץ, איז געניצט אין די פאַנגקשאַנז:
    • 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

לייגן אַ באַמערקונג