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

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

ראַסט ס זכּרון פאַרוואַלטונג טעקניקס באַפרייַען די דעוועלאָפּער פון טייַטל מאַניפּיאַליישאַן ערראָרס און באַשיצן קעגן פּראָבלעמס וואָס שטייען פֿון נידעריק-מדרגה זכּרון מאַניפּיאַליישאַן, אַזאַ ווי נאָך-פריי אַקסעס, נאַל טייַטל דיפעראַנסיז, באַפער אָוווערראַנז, און די ווי. צו פאַרשפּרייטן לייברעריז, ענשור פֿאַרזאַמלונג און פירן דיפּענדאַנסיז, די פּרויעקט איז דעוועלאָפּינג די קאַרגאָ פּעקל פאַרוואַלטער. די crates.io ריפּאַזאַטאָרי איז געשטיצט פֿאַר האָסטינג לייברעריז.

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

הויפּט חידושים:

  • Добавлена поддержка обобщённых ассоциированных типов (GAT, Generic Associated Types), дающие возможность создавать псевдонимы типов, ассоциированные с другим типом, и позволяющие связывать конструкторы типов с типажами. trait Foo { type Bar<‘x>; }
  • Реализовано выражение «let … else», позволяющее проверять условие соответствия шаблону непосредственно внутри выражения «let» и выполнять произвольный код, если шаблон не совпадает. let Ok(count) = u64::from_str(count_str) else { panic!(«Can’t parse integer: ‘{count_str}'»); };
  • Разрешено использование выражения break для преждевременного выхода из именованных блоков, используя имя блока (метку) для определения завершаемого блока. let result = ‘block: { do_thing(); if condition_not_met() { break ‘block 1; } do_next_thing(); if condition_not_met() { break ‘block 2; } do_last_thing(); 3 };
  • Для Linux добавлена возможность раздельного сохранения отладочной информации (split-debuginfo), ранее доступная только для платформы macOS. При указании опции «-Csplit-debuginfo=unpacked» данные debuginfo в формате DWARF будут сохранены в несколько отдельных объектных файлов с расширением «.dwo». При указании «-Csplit-debuginfo=packed» будет создан один пакет в формате «.dwp», включающий все данные debuginfo для проекта. Для интеграции debuginfo непосредственно в секцию .debug_* ELF-объектов можно использовать опцию «-Csplit-debuginfo=off».
  • א נייַע טייל פון די API איז אריבערגעפארן צו דער קאַטעגאָריע פון ​​סטאַביל, אַרייַנגערעכנט די מעטהאָדס און ימפּלאַמאַנץ פון טרייץ זענען סטייבאַלייזד:
    • std::backtrace::Backtrace
    • Bound::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Признак «const», определяющий возможность использования в любом контексте вместо констант, применён в функциях <*const T&>::offset_from и <*mut T>::offset_from
  • В рамках финальной стадии перевода реализации протокола LSP (Language Server Protocol) на rust-analyzer, устаревшая реализация Rust Language Server (RLS) заменена на cервер-заглушку, выдающий предупреждение с предложением перейти на использование rust-analyzer.
  • При компиляции включена поддержка inline-развёртывания промежуточного кода MIR, приводящая к ускорению компиляции типовых crate-пакетов на 3-10%.
  • Для ускорения сборок по расписанию в пакетном менеджере Cargo обеспечена сортировка работ, ожидающих выполнения в очереди.

Дополнительно можно отметить интервью о применении языка Rust в компании Volvo для разработки компонентов автомобильных информационных систем. Уже существующий и протестированный код переписывать на Rust не планируют, но для нового кода Rust является одним из предпочтительных вариантов для повышения качества с меньшими затратами. Связанные с использованием языка Rust рабочие группы также созданы в автомобильных объединениях AUTOSAR (AUTomotive Open System ARchitecture) и SAE (Society of Automotive Engineers).

Кроме того, Дэвид Клейдермахер (David Kleidermacher), вице-президент Google по инжинирингу, рассказал о переводе на язык Rust кода, используемого в платформе Android для управления ключами шифрования, а также применении Rust в реализации протокола DNS over HTTPS, в стеке для UWB-чипов (Ultra-Wideband) и во вреймворке виртуализации (Android Virtualization Framework), связанном с чипом Tensor G2. Для Android также развиваются новые стеки для Bluetooth и Wi-Fi, переписанные на языке Rust. Общая стратегия заключается в постепенном усилении защиты вначале через перевод на использование Rust наиболее незащищённых и жизненно важных программных компонентов, а затем охватывая и другие связанные с ними подсистемы. В прошлом году язык Rust был включён в число языков, допустимых для разработки платформы Android.

מקור: opennet.ru

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