Co nowego w Rust 1.48.0

Unikalne podejście języka programowania Rust skutkuje lepszym kodem z mniejszą liczbą kompromisów niż C, C ++, Go i inne języki, których prawdopodobnie używasz. Jest również regularnie aktualizowany, często co miesiąc.

Skąd pobrać najnowszą wersję Rusta

Jeśli masz już zainstalowaną poprzednią wersję Rusta za pośrednictwem rustup, możesz uzyskać dostęp do najnowszej wersji za pomocą następującego polecenia:

Aktualizacja $ rustup stabilna

Powiązane wideo: Tworzenie bezpieczniejszego oprogramowania za pomocą Rust

Szybko opanuj nowicjusz Rust, zaprojektowany do tworzenia szybkiego oprogramowania na poziomie systemu. Ten dwuminutowy animowany przewodnik pokazuje, jak Rust omija irytujące problemy z pamięcią i zarządzaniem związane z programowaniem.

Nowe funkcje w Rust 1.48.0

Odsłonięty 19 listopada 2020 r., Rust 1.48.0 oferuje łatwiejsze łączenie w narzędziu do dokumentacji biblioteki Rustdoc, ze składnią, która pozwala Rustdoc wiedzieć, kiedy programiści próbują połączyć się z typem; Adresy URL zostaną wygenerowane. Również w wersji 1.48.0:

  • Deweloperzy mogą określić #{doc(alias = “”) ]w elementach dodawanie aliasów wyszukiwania podczas przeszukiwania interfejsu użytkownika Rustdoc.
  • Słowo unsafekluczowe jest teraz składniowo dozwolone w modułach. Chociaż nadal jest odrzucany semantycznie, można to teraz przeanalizować za pomocą makr proceduralnych.
  • W -C link-self-contained=kompilatorze flaga kompilatora jest stabilizowana. Mówi to, rustcczy połączyć własne środowisko wykonawcze C i biblioteki, czy też polegać na zewnętrznym konsolidatorze, aby je znaleźć. To jest obsługiwana tylko na windows-gnu, linux-musli wasiplatformy.
  • W bibliotece API jest teraz stabilne. Programiści mogą go użyć, aby spróbować przekształcić wektor w tablicę o określonej długości. Stabilizowane również w tej wersji było pięć innych API: , , , , i .[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • Również w bibliotece są teraz zaimplementowane wszystkie tablice o dowolnej długości .TryFrom

Nowe funkcje w Rust 1.47.0

Ogłoszona 8 października 2020 r., Rust 1.47.0 nie ma nowych funkcji językowych, ale ulepsza standardową bibliotekę. W tym wydaniu uwzględniono ulepszenia jakości życia i łańcucha narzędzi, a także stabilizacje bibliotek. Opublikowano informacje o wersji dotyczące aktualizacji.

Specyficzne możliwości w Rust 1.47.0 obejmują:

  • Cecha „const generics”, wpływająca na cechy na większych tablicach. Ta funkcja nadal wymaga ustabilizowania. Rust brakowało sposobu, aby być generycznym w stosunku do wartości całkowitych, co spowodowało problemy z tablicami. Ta funkcja ma na celu rozwiązanie tego problemu i zwiększenie użyteczności tablic.
  • Uaktualnienie do infrastruktury kompilatora LLVM 11, czyniąc ją domyślną.
  • Krótsze ślady wstecz, ułatwiające znajdowanie problemów.
  • rustcobsługuje teraz -C control-flow-guardopcję, która włączy funkcję bezpieczeństwa Control Flow Guard w systemie Windows. Inne platformy ignorują tę flagę.
  • Rustdoc obsługuje teraz motyw Ayu.
  • Dziewięć interfejsów API w bibliotece standardowej zostało ustabilizowanych: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from, f32 :: TAU i f64 :: TAU. 

Nowe funkcje w wersji 1.46.0

Rust 1.46, ogłoszony 27 sierpnia 2020 roku, zawiera następujące możliwości:

  • Kilka funkcji językowych rdzeń teraz może być używana w const fntym if, if letmatchi kilka innych.
  • #[track_caller]Atrybut, mające na celu poprawę komunikaty o błędach, kiedy unwrapi związane z nimi funkcje paniki, jest obecnie stabilna.
  • W zamian za bibliotekę, std::mem::forgetjest teraz const fn. Również w bibliotece ustabilizowano dwa nowe interfejsy API: Option::zipi vec::Drain::as_slice.
  • W przypadku kompilatora obiekt citylibdocelowy może być używany na platformach Apple iOS i tvOS.
  • Rekurencyjne indeksowanie do krotek nie wymaga już nawiasów.

Nowe funkcje w Rust 1.45.0

Ogłoszona 16 lipca 2020 r., Rust 1.45 zawiera następujące dodatki i ulepszenia:

  • Oferowana jest poprawka, która naprawia długotrwałe problemy podczas rzutowania między liczbami całkowitymi a zmiennoprzecinkowymi.
  • Stabilizacja jest oferowana dla makr proceduralnych podobnych do funkcji w wyrażeniach, wzorcach i instrukcjach. Rozszerzenie wykorzystania makr pomaga w wykorzystaniu frameworka internetowego Rocket dla Rust.
  • Kilka API biblioteki zostały ustabilizowane, takich jak Arc::as_ptr, BTreeMap::remove_entryi Span::resolved_at. Pełną listę interfejsów API można znaleźć na blogu Rust.

Nowe funkcje w Rust 1.43.1

To wydanie punktowe zostało wprowadzone 7 maja 2020 r. W celu rozwiązania dwóch regresji wprowadzonych w stabilnej wersji 1.43.0. Aktualizuje również wersję OpenSSL używaną przez menedżera pakietów Cargo. Dodatki zawarte:

  • Rust 1.27 wprowadził obsługę wykrywania funkcji procesora x86 w bibliotece standardowej za pośrednictwem is_x86_feature_detected makra. Z powodu wewnętrznej refaktoryzacji, Rust 1.43.0 uniemożliwił wykrycie funkcji, których nie można jeszcze używać w wersji stabilnej, mimo że wykrywanie ich wcześniej było dozwolone. Wersja 1.43.1 naprawia tę regresję.
  • Oferowana jest poprawka dla zepsutego cargo package –list polecenia. Rust 1.43 złamał obsługę wyświetlania plików zawartych w pakietach opublikowanych za pomocą Cargo, gdy jest wykonywany w obszarze roboczym z zależnościami ścieżek lub niepublikowanymi wersjami.
  • OpenSSL, zależność Cargo, została zaktualizowana do wersji 1.1.1g. OpenSSL wydał poradnik bezpieczeństwa, ale zespół Rusta nie był w stanie uwzględnić poprawki na czas dla Rust 1.43.0. Zespół nie ma dowodów, że luka może zagrozić bezpieczeństwu użytkowników Cargo.

Nowe funkcje w Rust 1.43.0

Ogłoszono 23 kwietnia 2020 r., Że Rust 1.43.0 został uznany za dość drugorzędną wersję, bez wprowadzonych głównych funkcji. Zmiany obejmują:

  • Programiści mogą wykorzystywać itemfragmenty interpolować przedmiotów do ciała trait, imploraz externbloków.
  • Ulepszono wnioskowanie o typie wokół prymitywów, odwołań i operacji binarnych.
  • Aby pomóc w testowaniu integracji, Cargo ustawi nowe zmienne środowiskowe dla testów w celu znalezienia plików wykonywalnych.
  • W bibliotece Rust programiści mogą bezpośrednio używać powiązanych stałych na liczbach zmiennoprzecinkowych i całkowitych bez konieczności importowania modułu. Istnieje również nowy primitivemoduł, który ponownie eksportuje typy pierwotne Rusta, co jest przydatne podczas pisania makr, a programiści chcą mieć pewność, że typy nie są zasłonięte.
  • Kilka API w bibliotece były stabilizowane: Once::is_completed, f32::LOG10_2, f32::LOG2_10, f32::LOG10_2, f64::LOG10_2, f64::LOG2_10, i iter::once_with.

Nowe funkcje w Rust 1.41

Nowe funkcje w Rust 1.38

Rust 1.38, wydany we wrześniu 2019 roku, zawiera następujące nowe funkcje i ulepszenia:

  • Menedżer pakietów Cargo będzie automatycznie korzystał z kompilacji potokowej w Rust 1.38. W przypadku kompilacji potokowej kompilator nie potrzebuje w pełni zbudowanych zależności podczas kompilowania skrzynki. Potrzebne są tylko ich metadane, takie jak lista typów zależności. Metadane są tworzone na wczesnym etapie procesu kompilacji. Niektóre testy wykazały wzrost szybkości kompilacji o 10 do 20 procent w celu zoptymalizowania, przejrzystych kompilacji niektórych wykresów skrzynek. 
  • 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.

Nowe funkcje w Rust 1.35

Wersja 1.35, wydana w maju 2019 r., Oferuje: