Уникальный подход Язык программирования Rust приводит к лучшему коду с меньшим количеством компромиссов, чем C, C ++, Go и другие языки, которые вы, вероятно, используете. Он также обновляется регулярно, часто каждый месяц.

Где скачать последнюю версию Rust

Если у вас уже установлена ​​предыдущая версия Rust через rustup, вы можете получить доступ к последней версии с помощью следующей команды:

$ rustup update stable

Новые возможности Rust 1.51.0

Релиз Rust 1.51.0, опубликованный 25 марта 2021 года, является одним из крупнейших дополнений к языку и диспетчеру пакетов Cargo за довольно долгое время, со стабилизацией MVP (минимально жизнеспособный продукт), реализацией констант дженериков и новым распознавателем функций. для Cargo среди основных моментов. Другие основные моменты:

  • С помощью универсальных шаблонов const MVP для разработчиков библиотек добавляется инструмент для разработки безопасных во время компиляции API. Очень ожидаемая функция, константа-дженерики – это общие аргументы, которые варьируются в пределах постоянных значений, а не типов или времени жизни. Это позволяет, например, параметризовать типы целыми числами. План состоит в том, чтобы вводить константные дженерики постепенно, поэтому единственными типами, которые в настоящее время могут использоваться как тип константного универсального аргумента, являются типы целых чисел, включая size, usize, char, и bool.
  • Наряду с дженериками const был стабилизирован новый API, который его использует, std::array::IntoIter, который позволяет разработчикам создавать итератор по значению для любого массива.
  • Для Cargo новый преобразователь функций представляет алгоритм для вычисления особенности пакета чтобы избежать нежелательной унификации с текущим преобразователем.
  • Уменьшено время компиляции в MacOS с улучшениями для ускорения сборки, которые включают информацию отладки и уменьшают объем используемого дискового пространства.
  • Такие элементы, как функции, характеристики и структуры, могут быть параметризованы постоянными значениями в дополнение к типам и времени жизни.
  • Стабилизированные API, включая стабилизацию 18 новых методов для таких типов, как slice и Peekable.

Новые возможности Rust 1.50.0

Опубликованный 11 февраля 2021 года, Rust 1.50.0 улучшает индексацию массивов, расширяет безопасный доступ к полям объединения и добавляет в стандартную библиотеку. Конкретные улучшения включают:

  • Для индексации константных массивов этот выпуск продолжает движение к стабильной const дженерики, добавляя реализации ops::Index и IndexMut для массивов [T; N] на любую длину Const N. Оператор индексации [ ] уже работал с массивами через компилятор, но на уровне типов массивы фактически не реализовывали черты библиотеки до сих пор. Также стабильное использование const повторение значений в массиве официально подтверждено.
  • Безопасные назначения ManuallyDrop<T> Поля объединения разрешены.
  • Ниша для File на платформах Unix теперь разрешено. Благодаря этой функции некоторые типы в Rust имеют ограничения на то, что считается допустимым значением, которое может не охватывать диапазон возможных значений памяти. Любое оставшееся допустимое значение называется ниша, с этим пространством, используемым для оптимизации макета шрифта. На платформах Unix Rust File состоит из файлового целочисленного дескриптора системы; у этого есть возможная ниша, потому что это не может быть -1! Системные вызовы, возвращающие использование дескриптора файла -1 чтобы указать, что произошла ошибка, поэтому невозможно -1 быть реальным файловым дескриптором. Начиная с Rust 1.50, это добавляется к определению типа, поэтому его также можно использовать при оптимизации макета. Следует, что Option<File> теперь будет иметь тот же размер, что и File.
  • Для груза [rustc-workspace-wrapper] была добавлена ​​опция, чтобы установить оболочку для выполнения вместо rustc, только для участников рабочей области. Так же --workspace флаг был добавлен в cargo update команда.
  • В библиотеку добавлено девять новых стабильных функций: bool::then, btree_map::Entry::or_insert_with_key, f32::clamp, f64::clamp, hash_map::Entry::or_insert_with_key, Ord::clamp, RefCell::take, slice::fill, и UnsafeCell::get_mut.
  • Также в библиотеке было сделано несколько существующих функций const: IpAddr::is_ipv4, IpAddr::is_ipv6, Layout::size, Layout::align, Layout::from_size_align, pow для всех целочисленных типов, checked_pow для всех целочисленных типов, saturating_pow для всех целочисленных типов, wrapping_pow для всех целочисленных типов, next_power_of_two для всех беззнаковых целочисленных типов и checked_power_of_two для всех беззнаковых целочисленных типов.

Новые возможности Rust 1.49.0

Анонсированный 31 декабря 2020 года, Rust 1.49.0 обозначает 64-битный Arm Linux в качестве целевого уровня 1, обеспечивая тем самым высочайшую гарантию поддержки, с полным набором тестов, запускаемым на этой платформе при каждом изменении, внесенном в компилятор. Ожидается, что эта поддержка улучшит рабочие нагрузки, начиная от встроенных систем и заканчивая серверами и настольными компьютерами. Также доступны готовые двоичные файлы. Это первый раз, когда цель, отличная от x86, достигла поддержки уровня 1. Команда разработчиков Rust надеется в будущем добавить на этот уровень больше платформ.

Также с Rust 1.49.0 64-битная Arm для MacOS и Windows достигает уровня поддержки 2. Разработчики могут ожидать, что эти две цели будут иметь готовые двоичные файлы, которые можно установить из rustup. Цели уровня 2 гарантированно построены, и предоставляются предварительно созданные двоичные файлы. Однако команда Rust не выполняет набор тестов на этих платформах. Созданные двоичные файлы могут не работать и содержать ошибки.

Другие дополнения, улучшения и изменения в Rust 1.49.0:

  • В библиотеку добавлены три стабильные функции: slice::select_nth_unstable, slice::select_nth_unstable_by, и slice::select_nth_unstable_by_key.
  • Сделаны две библиотечные функции const: Poll::is_ready и Poll::is_pending.
  • Что касается языка, теперь профсоюзы могут реализовать Drop и разработчики теперь могут иметь поле в союзе с ManuallyDrop<T>. Кроме того, необязательные перечисления можно преобразовать в целые числа.
  • Разработчики могут связывать по ссылке и связывать по шаблонам, позволяя разработчикам выборочно заимствовать отдельные компоненты типа.
  • Для компилятора минимальная поддерживаемая версия LLVM перемещена в LLVM 9.

Новые возможности Rust 1.48.0

Представленный 19 ноября 2020 года, Rust 1.48.0 отличается более простым связыванием в инструменте документации библиотеки Rustdoc, с синтаксисом, позволяющим Rustdoc знать, когда разработчики пытаются связать тип; URL-адреса будут сгенерированы. Также в версии 1.48.0:

  • Разработчики могут указать #{doc(alias = “<alias>”) ] на элементах, чтобы добавить псевдонимы поиска при поиске через пользовательский интерфейс Rustdoc.
  • В unsafe ключевое слово теперь синтаксически разрешено в модулях. Хотя он все еще отклоняется семантически, теперь его можно проанализировать с помощью процедурных макросов.
  • В компиляторе -C link-self-contained=<yes|no> флаг компилятора стабилизирован. Это говорит rustc связывать ли собственную среду выполнения C и библиотеки или полагаться на внешний компоновщик, чтобы найти их. Поддерживается только на windows-gnu, linux-musl, и wasi платформы.
  • В библиотеке [T; N]: TryFrom<Vec<T>> API теперь стабилен. Разработчики могут использовать его, чтобы попытаться превратить вектор в массив заданной длины. В этом выпуске также были стабилизированы пять других API: slice::as_ptr_range, slice::as_mut_ptr_range, VecDeque::make_contiguous, future::pending, и future::ready.
  • Также в библиотеке все массивы любой длины теперь реализуют TryFrom<Vec<T>>.

Новые возможности Rust 1.47.0

Анонсированный 8 октября 2020 года, Rust 1.47.0 не имеет новых языковых функций, но расширяет стандартную библиотеку. В этом выпуске представлены улучшения качества жизни и набора инструментов, а также стабилизация библиотеки. Примечания к выпуску были опубликованы для обновления.

Конкретные возможности Rust 1.47.0 включают:

  • Функция «константных обобщений», влияющая на свойства на большие массивы. Функцию еще нужно стабилизировать. В Rust не было универсального подхода к целочисленным значениям, что вызывало проблемы с массивами. Эта возможность предназначена для решения этой проблемы и повышения полезности массивов.
  • Обновление до LLVM 11, что делает его по умолчанию.
  • Более короткие трассировки, что упрощает поиск проблем.
  • rustc теперь поддерживает -C control-flow-guard, опция, которая включает Контроль потока управления возможность безопасности в Windows. Другие платформы игнорируют этот флаг.
  • Rustdoc теперь поддерживает Тема Аю.
  • Стабилизированы девять API в стандартной библиотеке: Ident :: new_raw, Диапазон :: is_empty, RangeInclusive :: is_empty, Результат :: as_deref, Результат :: as_deref_mut, Vec :: утечка, указатель :: offset_from, f32 :: TAU, и f64 :: TAU.

Новые функции в 1.46.0

Rust 1.46, анонсированный 27 августа 2020 года, включает следующие возможности:

  • Несколько основных языковых функций теперь можно использовать в const fn, включая if, if let, match, и несколько других.
  • А #[track_caller] атрибут, предназначенный для улучшения сообщений об ошибках, когда unwrap и связанные функции паники, теперь стабильно.
  • При изменении библиотеки std::mem::forget теперь const fn. Также в библиотеке были стабилизированы два новых API: Option::zip и vec::Drain::as_slice.
  • Для компилятора citylib target можно использовать на платформах Apple iOS и tvOS.
  • Рекурсивное индексирование в кортежи больше не требует скобок.

Новые возможности Rust 1.45.0

Анонсированный 16 июля 2020 года Rust 1.45 включает следующие дополнения и улучшения:

  • Предлагается исправление для исправления некоторых давних ошибок при преобразовании между целыми числами и числами с плавающей запятой.
  • Стабилизация предлагается для функционально-подобных процедурных макросов в выражениях, шаблонах и операторах. Расширение использования макросов способствует использованию веб-фреймворка Rocket для Rust.
  • Стабилизированы несколько библиотечных API, например Arc::as_ptr, BTreeMap::remove_entry, и Span::resolved_at. Полный список API можно найти в Блог Rust.

Новые возможности Rust 1.43.1

Этот точечный выпуск был представлен 7 мая 2020 года для устранения двух регрессий, представленных в стабильном выпуске 1.43.0. Он также обновляет версию OpenSSL, используемую диспетчером пакетов Cargo. Возможности включают:

  • Rust 1.27 представил поддержку определения функций процессора x86 в стандартной библиотеке через is_x86_feature_detected макрос. Из-за внутреннего рефакторинга Rust 1.43.0 предотвращал обнаружение функций, которые еще нельзя использовать в стабильной версии, хотя обнаружение их ранее было разрешено. Версия 1.43.1 исправляет эту регрессию.
  • Предлагается исправление для сломанной cargo package –list команда. В Rust 1.43 нарушена поддержка перечисления файлов, включенных в пакеты, опубликованные с помощью Cargo, при выполнении внутри рабочей области с зависимостями пути или неопубликованными версиями.
  • OpenSSL, зависимость Cargo, обновлена ​​до версии 1.1.1g. OpenSSL выпустил совет по безопасности но команда Rust не смогла вовремя включить исправление в Rust 1.43.0. У команды нет доказательств того, что уязвимость может поставить под угрозу безопасность пользователей Cargo.

Новые возможности Rust 1.43.0

Анонсированный 23 апреля 2020 года Rust 1.43.0 считался довольно второстепенным выпуском без каких-либо основных функций. Изменения включают:

  • Разработчики могут использовать item фрагменты для вставки элементов в тело trait, impl, и extern блоки.
  • Улучшен вывод типов для примитивов, ссылок и бинарных операций.
  • Чтобы помочь в тестировании интеграции, Cargo установит несколько новых переменные среды для тестов, чтобы найти исполняемые файлы.
  • В библиотеке Rust разработчики могут использовать связанные константы для чисел с плавающей запятой и целых чисел напрямую, без необходимости импорта модуля. Также есть новый primitive модуль, реэкспортирующий примитивные типы Rust, что полезно при написании макроса, и разработчики хотят гарантировать, что типы не затенены.
  • Стабилизированы несколько API в библиотеке: Once::is_completed, f32::LOG10_2, f32::LOG2_10, f32::LOG10_2, f64::LOG10_2, f64::LOG2_10, и iter::once_with.

Новые возможности Rust 1.41


#Что #нового #языке #программирования #Rust

Source link