Novedades de Rust 1.48

El enfoque único del lenguaje de programación Rust da como resultado un mejor código con menos compromisos que C, C ++, Go y los otros lenguajes que probablemente use. También se actualiza con regularidad, a menudo todos los meses.

Dónde descargar la última versión de Rust

Si ya tiene una versión anterior de Rust instalada a través de rustup, puede acceder a la última versión mediante el siguiente comando:

$ rustup actualización estable

Vídeo relacionado: Desarrollo de software más seguro con Rust

Póngase al día rápidamente con el recién llegado Rust, diseñado para crear software rápido a nivel de sistema. Este explicador animado de dos minutos muestra cómo Rust evita los molestos problemas de programación de la memoria y la gestión.

Las nuevas funciones de Rust 1.48.0

Revelado el 19 de noviembre de 2020, Rust 1.48.0 presenta un enlace más fácil en la herramienta de documentación de la biblioteca Rustdoc, con una sintaxis para que Rustdoc sepa cuando los desarrolladores intentan enlazar a un tipo; Se generarán URL. También en la versión 1.48.0:

  • Los desarrolladores pueden especificar #{doc(alias = “”) ]elementos para agregar alias de búsqueda al buscar a través de la interfaz de usuario de Rustdoc.
  • La unsafepalabra clave ahora está permitida sintácticamente en los módulos. Aunque todavía se rechaza semánticamente, ahora se puede analizar mediante macros de procedimiento.
  • En el compilador, la -C link-self-contained=bandera del compilador está estabilizada. Esto indica rustcsi debe vincular su propio tiempo de ejecución de C y bibliotecas o confiar en un vinculador externo para encontrarlos. Esto sólo es compatible windows-gnu, linux-musly wasiplataformas.
  • En la biblioteca, la API ahora es estable. Los desarrolladores pueden usarlo para intentar convertir un vector en una matriz de una longitud determinada. También se estabilizaron en esta versión fueron otros cinco API: , , , , y .[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • También en la biblioteca, ahora se implementan todas las matrices de cualquier longitud .TryFrom

Las nuevas funciones de Rust 1.47.0

Anunciado el 8 de octubre de 2020, Rust 1.47.0 no tiene nuevas funciones de idioma, pero mejora la biblioteca estándar. La calidad de vida y las mejoras de la cadena de herramientas, así como las estabilizaciones de la biblioteca, se incluyen en el lanzamiento. Se han publicado notas de la versión para la actualización.

Las capacidades específicas en Rust 1.47.0 incluyen:

  • Una característica de "genéricos constantes", que impacta los rasgos en arreglos más grandes. La función aún debe estabilizarse. A Rust le ha faltado una forma de ser genérico sobre valores enteros, lo que ha causado problemas con las matrices. Esta capacidad tiene como objetivo abordar este problema y hacer que las matrices sean más útiles.
  • Una actualización a la infraestructura del compilador LLVM 11, por lo que es la predeterminada.
  • Rastreos más cortos, lo que facilita la búsqueda de problemas.
  • rustcahora admite -C control-flow-guard, una opción que activará la capacidad de seguridad Control Flow Guard en Windows. Otras plataformas ignoran esta bandera.
  • Rustdoc ahora admite el tema Ayu.
  • Se estabilizaron nueve API en la biblioteca estándar: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: lea, pointer :: offset_from, f32 :: TAU y f64 :: TAU. 

Las nuevas funciones en 1.46.0

Rust 1.46, anunciado el 27 de agosto de 2020, incluye las siguientes capacidades:

  • Varias características del lenguaje núcleo se pueden utilizar ahora en const fn, incluyendo if, if letmatch, y varios otros.
  • Un #[track_caller]atributo, diseñado para mejorar los mensajes de error cuando unwrapy las funciones relacionadas entran en pánico, ahora es estable.
  • En un cambio a la biblioteca, std::mem::forgetahora es un const fn. También en la biblioteca, se estabilizaron dos nuevas API: Option::zipy vec::Drain::as_slice.
  • Para el compilador, el citylibdestino se puede utilizar en las plataformas Apple iOS y tvOS.
  • La indexación recursiva en tuplas ya no requiere paréntesis.

Las nuevas funciones de Rust 1.45.0

Anunciado el 16 de julio de 2020, Rust 1.45 incluye las siguientes adiciones y mejoras:

  • Se ofrece una solución para reparar algunas fallas de larga data al lanzar entre enteros y flotantes.
  • La estabilización se ofrece para macros de procedimiento similares a funciones en expresiones, patrones y declaraciones. La expansión del uso de macros ayuda con el uso del marco web Rocket para Rust.
  • Varios API de biblioteca han sido estabilizado, tales como Arc::as_ptr, BTreeMap::remove_entry, y Span::resolved_at. La lista completa de API se puede encontrar en el Blog de Rust.

Las nuevas funciones de Rust 1.43.1

Esta versión puntual se introdujo el 7 de mayo de 2020 para abordar dos regresiones introducidas en la versión estable 1.43.0. También actualiza la versión de OpenSSL utilizada por el administrador de paquetes de Cargo. Las características incluyen:

  • Rust 1.27 introduced support for detecting x86 CPU features in the standard library, via the is_x86_feature_detected macro. Because of an internal refactoring, Rust 1.43.0 prevented detection of features that cannot be used on stable yet, even though detecting them previously was allowed. Version 1.43.1 fixes this regression.
  • A fix is offered for broken cargo package –list command. Rust 1.43 broke support for listing files included in packages published with Cargo, when executed inside a workspace with path dependencies or unpublished versions.
  • OpenSSL, a Cargo dependency, has been updated to 1.1.1g. OpenSSL had released a security advisory but the Rust team was not able to include the fix in time for Rust 1.43.0. The team has no evidence the vulnerability could compromise Cargo users’ security.

The new features in Rust 1.43.0

Announced April 23, 2020, Rust 1.43.0 was considered a fairly minor release, with no major features introduced. Changes include:

  • Developers can use item fragments to interpolate items into the body of trait, impl, and extern blocks.
  • The type inference around primitives, references, and binary operations was improved.
  • To help integration testing, Cargo will set some new environment variables for tests to find executables.
  • In the Rust library, developers can use associated constants on floats and integers directly without having to import the module. Also, there is a new primitive module that re-exports Rust primitive types, which is useful when writing a macro and developers want to ensure types are not shadowed.
  • 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.

Las nuevas funciones de Rust 1.35

La versión 1.35, lanzada en mayo de 2019, ofrece lo siguiente: