Какво ново в Rust 1.48

Уникалният подход на езика за програмиране Rust води до по-добър код с по-малко компромиси от C, C ++, Go и другите езици, които вероятно използвате. Освен това се актуализира редовно, често всеки месец.

Къде да изтеглите най-новата версия на Rust

Ако вече имате инсталирана предишна версия на Rust rustup, можете да получите достъп до най-новата версия чрез следната команда:

$ rustup актуализация стабилна

Свързано видео: Разработване на по-безопасен софтуер с Rust

Бързо ускорявайте новия Rust, създаден да създава бърз софтуер на системно ниво. Този двуминутен анимиран обяснител показва как Rust заобикаля досадни проблеми с програмирането на паметта и управлението.

Новите функции в Rust 1.48.0

Представен на 19 ноември 2020 г., Rust 1.48.0 разполага с по-лесно свързване в инструмента за документация на библиотеката Rustdoc, със синтаксис, за да информира Rustdoc, когато разработчиците се опитват да се свържат с тип; Ще се генерират URL адреси. Също във версия 1.48.0:

  • Разработчиците могат да посочат #{doc(alias = “”) ]елементи, за да добавят псевдоними за търсене, когато търсят през потребителския интерфейс на Rustdoc.
  • В unsafeключова дума сега е синтактично позволено на модули. Въпреки че все още е отхвърлено семантично, това вече може да бъде анализирано от процедурни макроси.
  • В -C link-self-contained=компилатора флага на компилатора е стабилизиран. Това казва rustcдали да се свърже собствено изпълнение на C и библиотеки или да се разчита на външен линкер, за да ги намери. Това се поддържа само на windows-gnu, linux-muslи wasiплатформи.
  • В библиотеката API вече е стабилен. Разработчиците могат да го използват, за да се опитат да превърнат вектор в масив с определена дължина. Също стабилизирани в тази версия са пет други APIs: , , , , и .[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • Също така в библиотеката вече се изпълняват всички масиви с всякаква дължина .TryFrom

Новите функции в Rust 1.47.0

Обявен на 8 октомври 2020 г., Rust 1.47.0 няма нови езикови функции, но подобрява стандартната библиотека. Качеството на живот и подобренията на инструментариума, както и стабилизирането на библиотеките са представени в изданието. За надстройката са публикувани бележки по изданието.

Специфичните възможности на Rust 1.47.0 включват:

  • Функция „const generics“, повлияваща чертите на по-големи масиви. Функцията все още трябва да бъде стабилизирана. На Rust липсва начин да бъде общ за целочислени стойности, което е причинило проблеми с масивите. Тази възможност е предназначена да реши този проблем и да направи масивите по-полезни.
  • Надстройка до LLVM 11 компилаторна инфраструктура, което го прави по подразбиране.
  • По-кратки обратни следи, което улеснява намирането на проблеми.
  • rustcвече поддържа -C control-flow-guard, опция, която ще включи възможността за защита Control Flow Guard в Windows. Други платформи игнорират този флаг.
  • Rustdoc вече поддържа темата Ayu.
  • Девет API в стандартната библиотека бяха стабилизирани: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from, f32 :: TAU и f64 :: TAU. 

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

Rust 1.46, обявен на 27 август 2020 г., включва следните възможности:

  • Няколко ядро особености на езика вече могат да бъдат използвани в const fn, в това число if, if letmatch, както и няколко други.
  • А #[track_caller]атрибут, предназначени за подобряване на съобщения за грешка, когато unwrapи свързаните с тях функции на паника, сега е стабилна.
  • В промяна на библиотеката, std::mem::forgetсега е const fn. Също така в библиотеката бяха стабилизирани два нови API: Option::zipи vec::Drain::as_slice.
  • За компилатора citylibцелта може да се използва на платформи на Apple iOS и tvOS.
  • Рекурсивното индексиране в кортежи вече не изисква скоби.

Новите функции в Rust 1.45.0

Обявен на 16 юли 2020 г., Rust 1.45 включва следните допълнения и подобрения:

  • Предлага се корекция, за да се поправи дълготрайна несъстоятелност при прехвърляне между цели числа и плувки.
  • Предлага се стабилизация за подобни на функции процедурни макроси в изрази, модели и изрази. Разширяването на използването на макроси помага с използването на Rocket web framework за Rust.
  • Няколко библиотечни APIs са стабилизирани, като например 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, товарна зависимост, е актуализиран до 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, което е полезно при писане на макрос и разработчиците искат да гарантират, че типовете не са в сянка.
  • Several APIs in the library were stabilized: Once::is_completed, f32::LOG10_2, f32::LOG2_10, f32::LOG10_2, f64::LOG10_2, f64::LOG2_10, and iter::once_with.

The new features in Rust 1.41

The new features in Rust 1.38

Rust 1.38, released in September 2019, contains the following new features and improvements:

  • The Cargo package manager will take advantage of pipelined compilation automatically with Rust 1.38. With pipelined compilation, the compiler does not need dependencies fully built when compiling a crate. All that is needed is their metadata, such as the list of types of dependencies. Metadata is produced early in the compilation process. Some tests have shown compilation speed increases of 10 to 20 percent for optimized, clean builds of some crate graphs. 
  • Linting of some incorrect uses of mem::{unitialized, zeroed}. With this release, the rustc compiler will provide a lint for a narrow class of incorrect initializations using mem::uninitialized or mem::zeroed.
  • Extension of the #[deprecated] attribute to macros. This attribute has allowed crate authors to notify users that an item of their crate is to be deprecated and removed in a future release.
  • Developers can use std::any::type_name to get the name of a type.
  • Stabilization of a number of functions including ::cast and ::cast.

The new features in Rust 1.37

Rust 1.37, released in August 2019, has the following new features and improvements:

  • An ability to refer to enum variants through type. Developers also can refer to enum variants with Self::Variant.
  • The cargo vendor command, previously a separate crate, is now built in to the language. The command fetches project dependencies, unpacks them into the vendordirectory, and displays the configuration snippet needed to use the vendored code during builds.
  • The rustc compiler supports profile-guided optimization, an optimizing technique for ahead-of-time compilers, via -C profile-generate and -C profile-use.
  • Developers can create unnamed const items.

The new features in Rust 1.36

Version 1.36 of the Rust systems programming language was released in July 2019. Rust 1.36 includes the following new features and enhancements:

  • The Future trait, used for declaring asynchronous work, is now stable. Asynchronous operations in Rust have been coming together in bits and pieces for several versions now, with async and await being the last important remaining pieces.
  • The alloc crate, used for managing memory, is now stable. This crate collects all of the pieces of Rust’s standard library that depend on a global memory allocation mechanism, such as Vec. This way, crates that don’t use the standard library can still make use of the allocator by importing alloc separately—useful for environments where you want code sizes to be as lean as possible.
  • A new type, MaybeUninit, allows you to define objects that may consist of uninitialized memory, such as a lazily allocated array. Rust’s previous mechanism for doing this was a function, mem::uninitialized, that posed many hazards in casual use. MaybeUninit provides a safer way to do this that uses the constraints of Rust’s type system.
  • Non-lexical lifetimes, a feature for recent editions of Rust, has been backported to earlier editions. Non-lexical lifetimes make Rust’s borrow-checking mechanism less difficult to work with (in essence, letting you write a broader range of programs that are still valid Rust), and better able to catch problems that the borrow checker missed.

Other improvements:

  • A new implementation for the HashMap type that runs faster and uses less memory.
  • Cargo can now run entirely offline if needed.

Новите функции в Rust 1.35

Версия 1.35, пусната през май 2019 г., предлага следното: