El enfoque único del lenguaje de programación Rust da como resultado un mejor código, con toques diferentes de C, C++, Go y los otros lenguajes que probablemente uses.
Rust es un lenguaje en constante crecimiento, puesto que en la actualidad se está actualizando con regularidad. Casi mensualmente.
Si quieres comenzar a usar Rust, descarga el instalador desde la página oficial de Rust, luego ejecuta el programa y sigue las instrucciones en pantalla. Es posible que debas instalar las herramientas de compilación de Visual Studio C++ cuando se te solicite; y si no estás en Windows, deberás consultar «Otros métodos de instalació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 a través del siguiente comando:
$ rustup update stable
El 8 de Octubre de 2020, se anunció la versión de 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:
rustc admite -C control-flow-guard, una opción que activará la capacidad de seguridad Control Flow Guard en Windows. Otras plataformas ignoran esta bandera.La version de Rust 1.46, anunciado el 27 de agosto de 2020, incluye las siguientes capacidades:
const fn, incluyendo if, if let, match, y varios otros.#[track_caller] diseñado para mejorar los mensajes de error cuando unwrap y las funciones relacionadas entran en pánico, ahora es estable.std::mem::forget es un const fn. También en la biblioteca, se estabilizaron dos nuevas API: Option::zip y vec::Drain::as_slice.citylib se puede utilizar en las plataformas Apple iOS y tvOS.Anunciado el 16 de julio de 2020, Rust 1.45 incluye las siguientes adiciones y mejoras:
Arc::as_ptr, BTreeMap::remove_entry, y Span::resolved_at. La lista completa de API se puede encontrar en el Blog de Rust.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. de Rust. También actualiza la versión de OpenSSL utilizada por el administrador de paquetes de Cargo. Las características incluyen:
Anunciado el 23 de abril de 2020, la versión de Rust 1.43.0 se consideró una versión bastante menor, sin características importantes introducidas. Los cambios incluyen:
item de artículos de interpolación en el cuerpo de trait, impl y bloques extern.La versión 1.41.0 de Rust, anunciada el 30 de enero de 2020, contiene las siguientes funciones nuevas y mejoras:
impl y la esencia es que un rasgo implsolo se permitía si el rasgo o el tipo que se implementaba es local de la caja actual en lugar de una caja extranjera.cargo install, para instalar cajas binarias y herramientas CLI basadas en Rust, ahora actualizará las instalaciones existentes de la caja si se ha publicado una nueva versión.Box<T> en FFI (Interfaz de función externa). Box<T>, denominado caja, proporciona la forma más simple de asignación de montón de Rust. Si los desarrolladores tienen una función extern Rust “C”, llamada desde C, la función Rust ahora se puede usar Box<T> para algunos específicos T, mientras que se usa T*en C para la función correspondiente. Sin embargo, los desarrolladores por ahora deberían evitar el uso de tipos Box<T> para funciones definidas en C pero invocadas en Rust. En estos casos, los desarrolladores deben reflejar directamente los tipos C lo más fielmente posible.La versión 1.40 de Rust, lanzada en diciembre de 2019, contenía las siguientes mejoras y cambios:
extern. Y la nueva macro todo!() se puede utilizar en lugar de la más detallada unimplemented!().#[non_exhaustive] permite decorar un tipo para indicar que podría tener más campos u otros cambios en el futuro. Esto evita que otro código anule la definición o lo use como parte de una coincidencia de patrón exhaustiva, que podría romperse inesperadamente más adelante cuando se cambie el tipo.musl.La versión de Rust 1.38, lanzado en septiembre de 2019, contiene las siguientes características nuevas y mejoras:
mem::{unitialized, zeroed}. Con esta versión, el compilador rustc proporcionará un lint para una clase limitada de inicializaciones incorrectas usando mem::uninitialized or mem::zeroed.#[deprecated] a macros. Este atributo ha permitido a los autores de cajas notificar a los usuarios que un artículo de su caja será obsoleto y eliminado en una versión futura.std::any::type_name para obtener el nombre de un tipo.<*const T>::cast y <*mutT>::cast.La versión de Rust 1.37, lanzado en agosto de 2019, tiene las siguientes características nuevas y mejoras:
type. Los desarrolladores también pueden hacer referencia a variantes enum con Self::Variant.cargo vendor, que antes era una caja separada, ahora está integrado en el idioma. El comando busca las dependencias del proyecto, las descomprime en el directorio vendor / y muestra el fragmento de configuración necesario para usar el código vendido durante las compilaciones.rustc admite la optimización guiada por perfiles, una técnica de optimización para compiladores con anticipación, a través de -C profile-generatey -C profile-use.La versión de Rust 1.36 del lenguaje de programación de sistemas Rust se lanzó en julio de 2019. Rust 1.36 incluye las siguientes características nuevas y mejoras:
async y await siendo los últimos importantes piezas restantes.MaybeUninit<T> permite definir objetos que pueden consistir en memoria no inicializada, como una matriz asignada de forma diferida. El mecanismo anterior de Rust para hacer esto era una función mem::uninitialized, que planteaba muchos peligros en el uso casual. MaybeUninit<T> proporciona una forma más segura de hacer esto que utiliza las restricciones del sistema de tipos de Rust.HashMap<K, V> que se ejecuta más rápido y usa menos memoria.La versión de Rust 1.35, lanzada en mayo de 2019, ofreció los siguientes cambios:
FnOnce, FnMut y Fn los rasgos de cierre para Box <dyn FnOnce>, Box<dyn FnMut> y Box<dyn Fn.dbg! introducida en Rust 1.32 ahora se puede llamar sin argumentos.Fn* ahora se implementan para Box<dyn Fn*>.drop_bounds, que se activa al agregar un límite T: Drop a una función genérica.ptr::hash, por lo que los desarrolladores pueden evitar el hash del valor apuntado de una referencia y en su lugar el hash de la dirección.RefCell se puede reemplazar mediante un cierre. Los desarrolladores pueden mapear y reemplazar de manera más ergonómica el valor actual de la celda y recuperar el valor anterior.Cargo, como la adición de una clave rustc-cdylib-link-arg para los scripts de compilación para especificar los argumentos del vinculador para las cajas de cdylib.Lanzado en abril de 2019, la versión de Rust 1.34 incluye las siguientes características nuevas y modificadas:
? utilizado para descomprimir errores y valores válidos de tipos Result ahora se puede utilizar en pruebas de documentación. Esto hace posible escribir ejemplos de prueba más completos junto con el código que se documenta.TryFrom y TryInto ahora pueden permitir conversiones de tipos que podrían permitir fallas.Rust 1.33 debutó a fines de febrero de 2019 con las siguientes características nuevas:
const fn que se utiliza para declarar funciones que se pueden llamar en expresiones constantes en tiempo de compilación, se ha ampliado para cubrir muchos más casos de uso, como enlaces let (incluidos los mutables), expresiones de asignación y declaraciones de expresión. En resumen, la declaración const fn hace más disponible el lenguaje en un contexto en tiempo de compilación.use n as _ permite importar el valor impl de un rasgo sin contaminar el espacio de nombres al que se importa.La versión 1.32 de Rust, lanzada en enero de 2019, incluye los siguientes cambios:
dbg. Insertar dbg!() en una aplicación de Rust imprime cualquier expresión println! formateable stderr, con una cantidad mínima de texto repetitivo. Insertar declaraciones de impresión como ayuda para la depuración es una técnica de la vieja escuela, pero una alternativa confiable cuando solo necesita conocer el estado de una variable en un momento dado.jemalloc ya no es el predeterminado. Las aplicaciones de Rust ahora usan el asignador de memoria del propio sistema como predeterminado, jemalloc disponible a través de la caja jemallocator. El uso del asignador del sistema reduce el tamaño de los archivos binarios de Rust en aproximadamente 300 KB y hace que el comportamiento predeterminado de las aplicaciones de Rust en todas las plataformas sea más consistente. (Las aplicaciones Rust creadas en Microsoft Windows han utilizado el asignador del sistema de forma predeterminada desde hace algún tiempo).La versión de Rust 1.31, lanzado en diciembre de 2018, marca el debut de «Rust 2018», una nueva edición del lenguaje con cambios en la sintaxis y conceptos que son potencialmente incompatibles con versiones anteriores.
Por defecto, el código compilado con Rust 1.31 usa las reglas de sintaxis de Rust anteriores, es decir, las reglas de “Rust 2015”. El código debe etiquetarse explícitamente con edition = ‘2018’para usar las nuevas reglas de Rust 2018.
Las nuevas características en Rust 1.31 que están disponibles solo en Rust 2018 incluyen:
Las nuevas características de Rust 1.31 que están disponibles para todas las ediciones de Rust incluyen:
const fn. Utilice esta función para definir una función que se pueda utilizar en un contexto constante y permitir que se evalúe en tiempo de compilación y no en tiempo de ejecución. Una const fnfunción tiene que ser determinista; es decir, tiene que producir una constante de algún tipo.Algunas características de Rust 2018, como la vida útil no léxica, eventualmente serán retroportadas a Rust 2015 y estarán disponibles para los usuarios de Rust sin tener que optar explícitamente.
La versión 1.30 de Rust, lanzada el 25 de octubre de 2018, agrega algunas características nuevas:
La versión 1.29 de Rust, publicada el 13 de septiembre de 2018, proporciona una pequeña pero útil cantidad de nuevas funciones:
cargo clippy proporciona muchas más advertencias sobre el código suministrado al compilador.Lanzado a principios de agosto de 2018, las características más notables de Rust 1.28 incluyen:
Rust 1.27 presenta capacidades básicas de SIMD (instrucción única, datos múltiples) . El std::archmódulo sirve como puerta de entrada a instrucciones específicas de la arquitectura generalmente relacionadas con SIMD. Se std::simdplanea un módulo de nivel superior para el futuro.
Otras características nuevas en Rust 1.27 incluyen:
dyn Trait se estabiliza, proporcionando una sintaxis para objetos de rasgo usando un contexto dyn. Una sintaxis de «rasgo básico» para objetos de rasgo está en desuso, porque a menudo es ambigua y confusa.#[must use] ahora se puede usar en funciones. Anteriormente, solo se aplicaba a tipos, como Result<T, E>. También se han mejorado partes de la biblioteca estándar para su uso #[must use].DoubleEndedIterator: : rfindy NonNull: :cast.—target-dir para cambiar el directorio de destino para una invocación determinada. Además, las llaves de automóviles se han añadido a toml, para hacer frente a los objetivos .Publicado a mediados de mayo de 2018, los aspectos más destacados de Rust 1.26 incluyen:
impl Trait que permite tipos abstractos en retornos o parámetros de función, ahora es estable. Se proporcionan tipos existenciales.match con el compilador haciendo referencia o desreferenciación automáticamente en match.La versión 1.25 de Rust presenta una actualización de su infraestructura de compilador LLVM (máquina virtual de bajo nivel) que mejora la compatibilidad con el formato de código portátil WebAssembly , que a su vez está diseñado para mejorar el rendimiento de las aplicaciones web. Rust 1.25 también incluye mejoras en el administrador de paquetes Cargo y estabilizaciones de la biblioteca.
El lenguaje de Rust se ha actualizado a LLVM 6 desde LLVM 4. Esto le permite a Rust mantenerse al tanto del back-end de WebAssembly ascendente y adquirir nuevas funciones cuando llegan.
La actualización de LLVM también corrige algunos errores de compilación relacionados con SIMD. Para el desarrollo de Internet of thigs (IoT), LLVM 6 acerca a Rust al soporte de la familia de microcontroladores AVR, aprovechada en la placa Arduino Uno.
Rust, afirma Mozilla, puede mejorar la seguridad y confiabilidad de los dispositivos de IoT y es mucho mejor en esto que los lenguajes C / C ++ comúnmente usados para escribir firmware de microcontroladores. El soporte de AVR llegará pronto.
Para la interfaz de línea de comandos de Cargo, se cargo newgenerará de forma predeterminada un binario en lugar de una biblioteca. Los desarrolladores de Rust dijeron que intentan mantener estable la CLI, pero que este cambio es importante y es poco probable que se rompa. Dijeron que cargo newacepta dos banderas:
—lib, para la construcción de bibliotecas—bin, para construir binarios o ejecutablesEn versiones anteriores de Cargo, los desarrolladores que no pasaban una de estas banderas usaban de forma predeterminada —lib. Esto se hizo porque cada binario a menudo depende de otras bibliotecas, lo que hace que el caso de la biblioteca sea más común.
Pero este comportamiento es realmente incorrecto, porque muchos binarios dependen de cada biblioteca. Además, algunos miembros de la comunidad encontraron el valor predeterminado sorprendente.
Otras características de Rust 1.25 incluyen:
libcore ha ganado al módulo time, con el tipo Duration que solo había estado disponible en libstd.Los juegos gratis de Amazon Prime Gaming representan un atractivo significativo para los suscriptores de…
Si eres un amante de los videojuegos, estás de suerte. Hasta el 20 de noviembre…
La computación cuántica acaba de dar un salto gigante. John M. Martinis, recién galardonado con…
La biografía más vendida del cofundador de Apple, Steve Jobs; escrita por uno de los…
Hubo un tiempo en el que la “seguridad en el hogar” significaba confiar en un…
Elon Musk vuelve a romper todos los esquemas. Los accionistas de Tesla acaban de aprobar…