Rust 1.71 выходит с улучшениями стабилизации и многим другим

логотип ржавчины

Rust — мультипарадигмальный компилируемый язык программирования общего назначения.

Несколько дней назад было объявлено выпуск новой версии популярного языка программирования «Ржавчина 1.71″, версия, в которой стабилизировано большое количество API, а также внесены различные разделы, улучшения и многое другое.

Тем, кто не знаком с этим языком программирования, следует знать, что фокусируется на безопасности памяти и предоставляет средства для достижения высокого параллелизма заданий, избегая использования сборщика мусора и среды выполнения (время выполнения сводится к базовой инициализации и обслуживанию стандартной библиотеки).



Методы управления памятью в Rust они избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем которые возникают из-за низкоуровневой обработки памяти, такой как доступ к области памяти после ее освобождения, разыменование нулевых указателей, переполнение буфера и т. д. Для распространения библиотек, предоставления сборок и управления зависимостями проект разрабатывает диспетчер пакетов Cargo.



Основные новые возможности Rust 1.71

В этой новой версии из Rust 1.71 Подчеркнуто, что экстерн ABI «C-unwind» был стабилизирован., который отличается от ABI без суффикса «-unwind» («extern «C»‘) тем, что поддерживает безопасное поведение, если процесс раскручивания, инициированный сбоем программы или созданием исключения в стиле C++, пересекает границу ABI. Следует отметить, что в будущем выпуске Rust эти ABI будут изменены для соответствия указанному поведению в качестве заключительной части стабилизации этой функции.

Еще одно заметное изменение — стабилизированная поддержка атрибутов ‘#[debug_visualizer(natvis_file = «…»)]’ и ‘#[debug_visualizer(gdb_script_file = «…»)]’, что пРазрешить встраивание метаданных Microsoft Natviz и скриптов GDB в библиотеки Rust для улучшения вывода отладки при проверке структур данных, созданных библиотеками. Такие скрипты уже включены в стандартную библиотеку, и теперь их можно включать в сторонние библиотеки.



В дополнение к этому также подчеркивается, что Cargo оптимизирует свое использование при ржавчине Когда Cargo обнаруживает, что rustc будет выполняться, указывая на прокси-сервер Rustup, он попытается обойти прокси-сервер и напрямую использовать базовый двоичный файл. Есть предположения о взаимодействии с rustup и RUSTUP_TOOLCHAIN. Однако ожидается, что это не повлияет на обычных пользователей.

Кроме того, в Windows можно использовать функции из динамических библиотек которые недоступны во время компиляции (например, чтобы избежать установки ненужных библиотек в среде сборки и упростить кросс-компиляцию).

Также подчеркивается, что поддержка третьего уровня для платформы x86_64 h-apple-darwin. Третий уровень предполагает базовую поддержку, но без автоматизированного тестирования, выпуска официальных сборок и проверки возможности компилирования кода.



Из других изменений, которые выделяются в этой новой версии:

  • Целевые платформы, использующие библиотеку Musl C, перенесены на Musl версии 1.2.3 (ранее использовалась версия 1.1.24), что позволяет использовать тип time64 в 32-битных системах.
  • Стандартная библиотека предоставляет вариант макроса thread_local, который инициализируется атрибутом «const», который можно использовать в контексте вместо констант, что позволяет генерировать более оптимальный код.
  • Новая часть API была переведена в стабильную версию, включая стабилизированные реализации методов и трейтов:
  • Атрибут const, определяющий возможность использования в любом контексте вместо констант, используется в функциях:
  • Диспетчер пакетов Cargo позволяет указать параметры с именем debuginfo в файле Cargo.toml.
  • Flatten-format-args включен по умолчанию.
  • Rust также поддерживает ссылки на предоставленные DLL символы по порядковому номеру вместо именованного символа, используя новый атрибут #[link_ordinal].
  • В метаданные добавлен параметр workspace_default_members. При выполнении команд «cargo new» и «cargo init» автоматически наследуются поля в рабочей области.
  • Реализована поддержка второго уровня для целевой платформы loongarch64-unknown-linux-gnu.


Если вы интересно узнать о нем больше, вы можете проверить детали в по следующей ссылке.

Наконец, для тех, кто Заинтересованы в обновлении с предыдущей версии Rust установленный через rustup, вы можете получить новую версию Rust 1.71.0 с помощью:

rustup update stable




2023-07-19T05:17:34
программирование