Rust (lenguaje de programación)

Rust es un lenguaje de programación de múltiples paradigmas diseñado para el rendimiento y la seguridad, especialmente la concurrencia segura. Rust es sintácticamente similar a C ++, pero puede garantizar la seguridad de la memoria mediante el uso de un comprobador de préstamos para validar las referencias. Rust logra la seguridad de la memoria sin recolección de basura, y el recuento de referencias es opcional. Rust fue diseñado originalmente por Graydon Hoare en Mozilla Research, con contribuciones de Dave Herman, Brendan Eich y otros. Los diseñadores refinaron el lenguaje mientras escribían el diseño de Servo o el motor del navegador y el compilador de Rust. Ha ganado un uso cada vez mayor en la industria, y Microsoft ha estado experimentando con el lenguaje para componentes de software seguros y críticos para la seguridad. Rust ha sido votado como el "lenguaje de programación más querido" en la Encuesta para desarrolladores de Stack Overflow cada año desde 2016.

Historia

El lenguaje surgió de un proyecto personal iniciado en 2006 por el empleado de Mozilla, Graydon Hoare, quien afirmó que el proyecto posiblemente recibió el nombre de la familia de hongos de la roya. Mozilla comenzó a patrocinar el proyecto en 2009 y lo anunció en 2010. El mismo año, el trabajo pasó del compilador inicial (escrito en OCaml) al compilador de autohospedaje basado en LLVM escrito en Rust. Denominado rustc, se compiló con éxito en 2011. La primera versión pre-alfa numerada del compilador Rust se produjo en enero de 2012. Rust 1.0, la primera versión estable, se publicó el 15 de mayo de 2015. Después de 1.0, se entregan versiones de puntos estables. cada seis semanas, mientras que las funciones se desarrollan en Rust todas las noches con lanzamientos diarios, luego se prueban con lanzamientos beta que duran seis semanas. Cada 2 o 3 años, se produce una nueva "Edición" de Rust. Esto es para proporcionar un punto de referencia fácil para los cambios debido a la naturaleza frecuente del programa de lanzamiento de trenes de Rust, así como para proporcionar una ventana para realizar cambios importantes. Las ediciones son en gran parte compatibles. Junto con la escritura estática convencional, antes de la versión 0.4, Rust también admitía estados de tipo. El sistema typestate modeló las afirmaciones antes y después de las declaraciones del programa, mediante el uso de una declaración de verificación especial. Las discrepancias se pueden descubrir en tiempo de compilación, en lugar de en tiempo de ejecución, como podría ser el caso de las aserciones en código C o C ++. El concepto typestate no era exclusivo de Rust, ya que se introdujo por primera vez en el lenguaje NIL. Los estados de tipo se eliminaron porque en la práctica se usaban poco, aunque se puede lograr la misma funcionalidad aprovechando la semántica de movimiento de Rust. El estilo del sistema de objetos cambió considerablemente en las versiones 0.2, 0.3 y 0.4 de Rust. La versión 0.2 introdujo clases por primera vez y la versión 0.3 agregó varias características, incluidos destructores y polimorfismo mediante el uso de interfaces. En Rust 0.4, se agregaron rasgos como un medio para proporcionar herencia; las interfaces se unificaron con rasgos y se eliminaron como una característica separada. Las clases también fueron eliminadas y reemplazadas por una combinación de implementaciones y tipos estructurados. Comenzando en Rust 0.9 y terminando en Rust 0.11, Rust tenía dos tipos de punteros incorporados: ~ y @, simplificando el modelo de memoria central. Reimplementó esos tipos de puntero en la biblioteca estándar como Box y (ahora eliminado) Gc. En enero de 2014, antes de la primera versión estable, Rust 1.0, el editor en jefe de Dr. Dobb's, Andrew Binstock, comentó sobre las posibilidades de Rust de convertirse en un competidor de C ++ y de los otros lenguajes emergentes D, Go y Nim (luego Nimrod). Según Binstock, mientras que Rust era "ampliamente visto como un lenguaje notablemente elegante", la adopción se ralentizó porque cambiaba repetidamente entre versiones. Rust tiene una interfaz de función extranjera (FFI) que se puede llamar desde, por ejemplo, Lenguaje C, y puede llamar a C. Si bien llamar a C ++ ha sido históricamente problemático (desde cualquier idioma), Rust tiene una biblioteca, CXX, para permitir llamadas hacia o desde C ++, y "CXX tiene una sobrecarga cero o insignificante". Mozilla despidió a 250 de sus 1,000 empleados en todo el mundo como parte de una reestructuración corporativa causada por el impacto a largo plazo de la pandemia COVID-19. Entre th